インストール
良いことができませんでしたに直接インストールすることができます
ピップxgboostインストール
あなたは、ローカルインストール後にそれをダウンロードすることができない場合
インストールパッケージをダウンロードして、ここでは、 パッケージが持っているものをしたいです
データセット
ピマ・インディアン-diabetes.csvファイル
インドの調査データでは糖尿病を持つ一部の人々は、最終的な結果は、病気かどうかを予測することです
#回妊娠の1番号 #2の血漿グルコース濃度経口ブドウ糖負荷試験2時間 #3拡張期血圧(mmHgで) #4の上腕三頭筋、皮膚の厚さ(mm)を折る #5 2時間の血清インスリン(MU U / ml)の #6ボディマスインデックス(体重Mにおけるkg /日(高さ)^ 2) #7糖尿病血統機能 #8年齢(歳) #9クラス変数(0または1)
8つのフィーチャー変数の合計だけでなく、分類ラベル
Xgboost使用
基本的なフレームワークを使用します
numpyの輸入loadtxt から xgboost 輸入XGBClassifier から sklearn.model_selectionの輸入train_test_split から sklearn.metricsのインポートaccuracy_score #ダウンロードデータセット データセット= loadtxt(' ピマインディアン- diabetes.csv '、DELIMITER = ' ' ) #セグメンテーション機能タグ X-データセット= [:、0:。8 ] Y =データセット[:8 ] #セグメンテーショントレーニングセットテストセット SEED。7 = test_size = 0.33 X_train、X_test、y_train、android.permission.FACTOR。 = Train_test_split(X、Y、test_size = test_size、random_state = SEED) #モデルがトレーニング作成 モデル= XGBClassifierを() model.fit(X_train、y_train) #予測モデル y_pred = model.predict(X_test) 予測 = [ラウンド(I)のために私にy_pred] #精度计算 精度= accuracy_score(y_test、予測) プリント(" 精度:%.2f %% "%(精度* 100))
精度:77.95パーセント
プロセス・ショーの真ん中
Xgboost原理は、ツリーを追加することで、モデルのリフティングを達成するために、ツリーに基づいています
アップグレードプロセスの途中で表示したい場合は、次のように動作させることができます
numpyの輸入loadtxt から xgboost 輸入XGBClassifier から sklearn.model_selectionの輸入train_test_split から sklearn.metricsのインポートaccuracy_score #ダウンロードデータセット データセット= loadtxt(' ピマインディアン- diabetes.csv '、DELIMITER = ' ' ) #セグメンテーション機能タグ X-データセット= [:、0:。8 ] Y =データセット[:8 ] #セグメンテーショントレーニングセットテストセット SEED。7 = test_size = 0.33 X_train、X_test、y_train、android.permission.FACTOR。 = Train_test_split(X、Y、test_size = test_size、random_state = SEED) #モデルがトレーニング作成 モデル= XGBClassifierを() eval_set = [(X_test、y_test)] model.fit(X_train、y_train、 #入ってくるトレーニングデータ early_stopping_rounds = 10、 #値は減少がモデルに停止される回数が失われていない eval_metric = 「loglossを」、 #失われた評価基準は、 eval_set = eval_set、 #は、テスト・セットを構成し、参加するために試験を実施しないように 、詳細を=真 #印刷の途中で詳細なデータを表示するかどうか ) #予測モデル y_pred = model.predict(X_test) 予測 = [ラウンド(I)のために私にy_pred] #精度计算 精度= accuracy_score(y_test、予測) プリント(" 精度:%.2f %% "%(精度* 100))
印刷時には変更プロセス失われた値を反映します
[0] validation_0-logloss:0.660186は validation_0まで訓練う -logloss hasn ' 10ラウンドで改善T。 [1] validation_0-logloss:0.634854 [ 2] validation_0-logloss:0.61224 [ 3] validation_0-logloss:0.593118 [ 4] validation_0-logloss:0.578303 [ 5] validation_0-logloss:0.564942 [ 6] validation_0-logloss:0.555113 [ 7 ] validation_0-logloss:0.54499 [ 8] validation_0-logloss:0.539151 [ 9] validation_0-logloss:0.531819 [ 10] validation_0-logloss:0.526065 [ 11] validation_0-logloss:0.519769 [ 12] validation_0-logloss:0.514979 [ 13] validation_0-logloss:0.50927 [ 14] validation_0-logloss:0.506086 [ 15] validation_0-logloss:0.503565 [ 16] validation_0-logloss:0.503591 [ 17] validation_0-logloss:0.500805 [ 18 ] validation_0-logloss:0.497605 [ 19] validation_0-logloss:0.495328 [ 20] validation_0-logloss:0.494777 [ 21] validation_0-logloss:0.494274 [ 22] validation_0-logloss:0.493333 [ 23] validation_0-logloss:0.492211 [ 24] validation_0 -logloss:0.491936 [25] validation_0-logloss:0.490578 [ 26] validation_0-logloss:0.490895 [ 27] validation_0-logloss:0.490646 [ 28] validation_0-logloss:0.491911 [ 29] validation_0-logloss:0.491407 [ 30] validation_0-logloss:0.488828 [ 31] validation_0-logloss:0.487867 [ 32] validation_0-logloss:0.487297 [ 33] validation_0-logloss:0.487562 [ 34] validation_0-logloss:0.487789 [ 35] validation_0-logloss:0.487962 [ 36] validation_0-logloss:0.488218 [ 37] validation_0- logloss:0.489582 [38] validation_0-logloss:0.489334 [ 39] validation_0-logloss:0.490968 [ 40] validation_0-logloss:0.48978 [ 41] validation_0-logloss:0.490704 [ 42] validation_0-logloss:0.492369 停止。ベスト反復: [ 32] validation_0-logloss:0.487297 精度: 77.56パーセント
特長の重要性を示します
numpyの輸入loadtxt から xgboost 輸入XGBClassifier から xgboost 輸入plot_importance から matplotlibの輸入pyplot #ダウンロードデータセット データセット= loadtxt(' ピマインディアン- diabetes.csv '、DELIMITER = ' ' ) #セグメンテーション機能タグ X-データセット= [:、0:。8 ] Y =データセット[:8 ] #モデルがトレーニング作成 モデル= XGBClassifierを() model.fit(X、Y) #ショーの重要性を特徴 plot_importance(モデル) pyplot.show()
パラメータ調整
Xgboost多くのパラメータを調整することができますがあります
一般的なパラメータ
学習率
学習率は、 典型的には0.1に配置されました
ツリーパラメータ
max_depthの 最大の深さ
min_child_weight 葉の最小重量
サブサンプル ランダムに選択された比
colsample_bytree 速記機能比
ガンマ パラメータに関連する損失率
正則化パラメータ
ラムダ
アルファ
パラメータの他の例
より詳細な議論は、公式ドキュメントを参照してくださいすることができます
xgb1 = XGBClassifier( learning_rate= 0.1, n_estimators=1000, max_depth=5, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective='binary:logistic', # 指定出是用什么损失函数, 一阶导还是二阶导 nthread=4, # scale_pos_weight=1, seed=27 # 随机种子 )
参数选择示例
from numpy import loadtxt from xgboost import XGBClassifier from sklearn.model_selection import GridSearchCV from sklearn.model_selection import StratifiedKFold # 下载数据集 datasets = loadtxt('pima-indians-diabetes.csv', delimiter=',') # 切分 特征 标签 X = datasets[:,0:8] Y = datasets[:,8] # 模型创建 训练 model = XGBClassifier() # 学习率备选数据 learning_rate = [0.0001, 0.001, 0.01, 0.1, 0.2, 0.3] param_grid = dict(learning_rate=learning_rate) # 格式要求转换为字典格式 # 交叉验证 kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=7) # 训练模型最佳学习率选择 grid_serarch = GridSearchCV(model, param_grid, scoring='neg_log_loss', n_jobs=-1, # 当前所有 cpu 都跑这个事 cv=kfold) grid_serarch = grid_serarch.fit(X, Y) # 打印结果 print("Best: %f using %s" % (grid_serarch.best_score_, grid_serarch.best_params_)) means = grid_serarch.cv_results_['mean_test_score'] params = grid_serarch.cv_results_['params'] for mean, param in zip(means, params): print("%f with: %r" % (mean, param))
打印结果
Best: -0.483304 using {'learning_rate': 0.1} -0.689811 with: {'learning_rate': 0.0001} -0.661827 with: {'learning_rate': 0.001} -0.531155 with: {'learning_rate': 0.01} -0.483304 with: {'learning_rate': 0.1} -0.515642 with: {'learning_rate': 0.2} -0.554158 with: {'learning_rate': 0.3}