XGBoost使用チュートリアル(純xgboostメソッド)1


「何気なく巨大牛の人工知能のチュートリアルを見つけて、思わず共有してしまいました.チュートリアルは基礎がゼロで分かりやすいだけでなく、とても面白くてユーモアがあって、小説を読むように!すごいと思ったので、みんなに共有しました.ここをクリックしてチュートリアルにジャンプすることができます.」
一、必要なキットのインポート
#         
import xgboost as xgb

#        
from sklearn.metrics import accuracy_score

二、データ読み取りXGLOstはlibsvm形式のテキストデータをロードすることができ、libsvmのファイル形式(疎特徴)は以下の通りである:1 101:1.2 102:0.030 1:2.1 1000:300 10002:400...各行はサンプルを表し、最初の行の先頭の「1」はサンプルのラベルです.「101」および「102」はフィーチャーインデックスであり、「1.2」および「0.03」はフィーチャーの値である.
 
2種類の分類では、正のサンプルを「1」、負のサンプルを「0」と表す.[0,1]表示確率をラベルとして用い,正サンプルとして表す確率もサポートする.
次の例のデータは、いくつかのキノコのいくつかの属性を通じて、この品種が有毒かどうかを判断する必要があります.UCIデータの説明:http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/各サンプルは、形状、においなどのキノコの22の属性(22次元の元の特徴を加工して126次元の特徴に変え、
 
 
libsvm形式で併存)し、このキノコが食べられるかどうかを示した.そのうち6513サンプルは訓練を行い、1611サンプルはテストを行った.
 
注意:libsvm形式のファイルの説明は次のとおりです.https://www.cnblogs.com/codingmengmeng/p/6254325.html
XGBoostがロードしたデータは、オブジェクトDMatrixに格納されます.XGBoostは、データマトリクスクラスDMatrixをカスタマイズし、格納と演算速度を最適化します.
DMatrixドキュメント:http://xgboost.readthedocs.io/en/latest/python/python_api.html
データのダウンロード先:http://download.csdn.net/download/u011630575/10266113
# read in data,   xgboost       demo  ,      copy       data  
my_workpath = './data/'
dtrain = xgb.DMatrix(my_workpath + 'agaricus.txt.train')
dtest = xgb.DMatrix(my_workpath + 'agaricus.txt.test')

データの表示
dtrain.num_col()
dtrain.num_row()
dtest.num_row()

三、訓練パラメータの設定
 
max_depth:       。    6,     :[1,∞]
eta:       ,            。         ,             。 
eta                    。    0.3,     :[0,1]
silent: 0           , 1          ,        。    0
objective:               ,“binary:logistic”             ,     。

        。
# specify parameters via map
param = {'max_depth':2, 'eta':1, 'silent':0, 'objective':'binary:logistic' }
print(param)

四、トレーニングモデル
#   boosting      
num_round = 2

import time
starttime = time.clock()

bst = xgb.train(param, dtrain, num_round) #  dtrain      

endtime = time.clock()
print (endtime - starttime)

XGBoost予測の出力は確率です.ここでキノコ分類は二種類の分類問題であり,出力値はサンプルが第一種類である確率である.
確率値を0または1に変換する必要があります.
train_preds = bst.predict(dtrain)
train_predictions = [round(value) for value in train_preds]
y_train = dtrain.get_label() #          
train_accuracy = accuracy_score(y_train, train_predictions)
print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))

五、テスト
モデルトレーニングが完了したら、トレーニングしたモデルでテストデータを予測できます.
# make prediction
preds = bst.predict(dtest)

モデルのテストセットでの正解率の確認
XGBoost予測の出力は確率であり,出力値はサンプルが第1クラスの確率である.確率値を0または1に変換する必要があります.
predictions = [round(value) for value in preds]
y_test = dtest.get_label()
test_accuracy = accuracy_score(y_test, predictions)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

六、モデルの可視化
XGBoostキットのplot_を呼び出すtree、モデルを可視化するにはgraphvizパッケージplot_をインストールする必要があります.tree()の3つのパラメータ:1.モデル2.ツリーのインデックスは、0から3.方向を表示します.デフォルトは垂直で、「LR」は水平方向です.
 
from matplotlib import pyplot
import graphviz
xgb.plot_tree(bst, num_trees=0, rankdir= 'LR' )
pyplot.show()

#xgb.plot_tree(bst,num_trees=1, rankdir= 'LR' )
#pyplot.show()
#xgb.to_graphviz(bst,num_trees=0)
#xgb.to_graphviz(bst,num_trees=1)

七、コード整理
# coding:utf-8
import xgboost as xgb

#        
from sklearn.metrics import accuracy_score

# read in data,   xgboost       demo  ,      copy       data  
my_workpath = './data/'
dtrain = xgb.DMatrix(my_workpath + 'agaricus.txt.train')
dtest = xgb.DMatrix(my_workpath + 'agaricus.txt.test')

dtrain.num_col()

dtrain.num_row()

dtest.num_row()

# specify parameters via map
param = {'max_depth':2, 'eta':1, 'silent':0, 'objective':'binary:logistic' }
print(param)

#   boosting      
num_round = 2

import time

starttime = time.clock()

bst = xgb.train(param, dtrain, num_round)  # dtrain      

endtime = time.clock()
print (endtime - starttime)


train_preds = bst.predict(dtrain)    #
print ("train_preds",train_preds)

train_predictions = [round(value) for value in train_preds]
print ("train_predictions",train_predictions)

y_train = dtrain.get_label()
print ("y_train",y_train)

train_accuracy = accuracy_score(y_train, train_predictions)
print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))


# make prediction
preds = bst.predict(dtest)
predictions = [round(value) for value in preds]

y_test = dtest.get_label()

test_accuracy = accuracy_score(y_test, predictions)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

# from matplotlib import pyplot
# import graphviz

import graphviz

# xgb.plot_tree(bst, num_trees=0, rankdir='LR')
# pyplot.show()

# xgb.plot_tree(bst,num_trees=1, rankdir= 'LR' )
# pyplot.show()
# xgb.to_graphviz(bst,num_trees=0)
# xgb.to_graphviz(bst,num_trees=1)


 
「何気なく巨大牛の人工知能のチュートリアルを見つけて、思わず共有してしまいました.チュートリアルは基礎がゼロで分かりやすいだけでなく、とても面白くてユーモアがあって、小説を読むように!すごいと思ったので、みんなに共有しました.ここをクリックしてチュートリアルにジャンプすることができます.」