XGBoost使用チュートリアル(純xgboostメソッド)1
5403 ワード
「何気なく巨大牛の人工知能のチュートリアルを見つけて、思わず共有してしまいました.チュートリアルは基礎がゼロで分かりやすいだけでなく、とても面白くてユーモアがあって、小説を読むように!すごいと思ったので、みんなに共有しました.ここをクリックしてチュートリアルにジャンプすることができます.」
一、必要なキットのインポート
二、データ読み取り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
データの表示
三、訓練パラメータの設定
四、トレーニングモデル
XGBoost予測の出力は確率です.ここでキノコ分類は二種類の分類問題であり,出力値はサンプルが第一種類である確率である.
確率値を0または1に変換する必要があります.
五、テスト
モデルトレーニングが完了したら、トレーニングしたモデルでテストデータを予測できます.
モデルのテストセットでの正解率の確認
XGBoost予測の出力は確率であり,出力値はサンプルが第1クラスの確率である.確率値を0または1に変換する必要があります.
六、モデルの可視化
XGBoostキットのplot_を呼び出すtree、モデルを可視化するにはgraphvizパッケージplot_をインストールする必要があります.tree()の3つのパラメータ:1.モデル2.ツリーのインデックスは、0から3.方向を表示します.デフォルトは垂直で、「LR」は水平方向です.
七、コード整理
「何気なく巨大牛の人工知能のチュートリアルを見つけて、思わず共有してしまいました.チュートリアルは基礎がゼロで分かりやすいだけでなく、とても面白くてユーモアがあって、小説を読むように!すごいと思ったので、みんなに共有しました.ここをクリックしてチュートリアルにジャンプすることができます.」
一、必要なキットのインポート
#
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)
「何気なく巨大牛の人工知能のチュートリアルを見つけて、思わず共有してしまいました.チュートリアルは基礎がゼロで分かりやすいだけでなく、とても面白くてユーモアがあって、小説を読むように!すごいと思ったので、みんなに共有しました.ここをクリックしてチュートリアルにジャンプすることができます.」