機械学習 - アルゴリズムの例 - Xgboost

インストール

 良いことができませんでしたに直接インストールすることができます

ピップ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}

 

 

 

おすすめ

転載: www.cnblogs.com/shijieli/p/11958815.html