Python3.7 XGoostで2値分類機械学習をしていた際、下記のエラーが出ました。
python
1Traceback (most recent call last): 2 File "XGBoost_01_20190903.py", line 449, in <module> 3 main(X_arr, y_arr) 4 File "XGBoost_01_20190903.py", line 48, in main 5 callbacks=[xgb.callback.record_evaluation(evals_result)] 6TypeError: fit() got an unexpected keyword argument 'callbacks'
PythonのAPIでは、'callbacks'を引数にもつのになぜでしょうか?
fit(X, y, sample_weight=None, eval_set=None, eval_metric=None, early_stopping_rounds=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, callbacks=None)
callbacks (list of callback functions) –
List of callback functions that are applied at end of each iteration. It is possible to use predefined callbacks by using Callback API.
Example: [xgb.callback.reset_learning_rate(custom_rates)]
python
1import sys, random, io, math 2import numpy as np 3import pandas as pd 4from scipy import stats 5from scipy.stats import uniform, randint 6from sklearn import datasets 7import xgboost as xgb 8import lightgbm as lgb 9from sklearn.model_selection import train_test_split 10from sklearn.metrics import accuracy_score 11from sklearn.model_selection import GridSearchCV 12from sklearn.model_selection import StratifiedKFold 13# from xgboost import callback 14from sklearn.model_selection import RandomizedSearchCV, cross_val_score 15from sklearn.datasets import load_digits 16from sklearn.metrics import confusion_matrix, classification_report 17from sklearn.metrics import accuracy_score 18 19from matplotlib import pyplot as plt 20 21def main(): 22 dataset = datasets.load_breast_cancer() 23 X, y = dataset.data, dataset.target 24 25 X_train, X_test, y_train, y_test = train_test_split(X, y, 26 test_size=0.3, 27 shuffle=True, 28 random_state=42, 29 stratify=y) 30 31 # scikit-learn API を備えた分類器 32 clf = xgb.XGBClassifier(objective='binary:logistic', 33 # 'num_boost_round' の代わり 34 # adding 1 estimator per round 35 n_estimators=1000) 36 # 学習する 37 evals_result = {} 38 clf.fit(X_train, y_train, 39 # 学習時に用いる検証用データ 40 eval_set=[(X_train, y_train),(X_test, y_test)], 41 # 学習に使う評価指標 42 eval_metric='logloss', 43 early_stopping_rounds=10, 44 # 学習過程の記録はコールバック API で登録する 45 callbacks=[xgb.callback.record_evaluation(evals_result)] 46 ) 47 48 y_pred = clf.predict(X_test) 49 acc = accuracy_score(y_test, y_pred) 50 print('Accuracy:', acc) 51 52 # 学習過程の名前は 'validation_{n}' になる 53 train_metric = evals_result['validation_0']['logloss'] 54 plt.plot(train_metric, label='train logloss') 55 eval_metric = evals_result['validation_1']['logloss'] 56 plt.plot(eval_metric, label='eval logloss') 57 plt.grid() 58 plt.legend() 59 plt.xlabel('rounds') 60 plt.ylabel('logloss') 61 plt.show() 62 63if __name__ == '__main__': 64 main()
あなたの回答
tips
プレビュー