web-dev-qa-db-ja.com

パラメータnum_classのxgboost sklearnラッパー値0は1より大きい必要があります

マルチクラスの問題に対して、XGBClassifierによって提供されるsklearnラッパーを使用しようとしています。私のクラスは[0、1、2]で、使用する目的はmulti:softmax。私が得た分類子を適合させようとしているとき

xgboost.core.XGBoostError:パラメータnum_classの値0は1より大きい必要があります

Num_classパラメータを設定しようとすると、エラーが発生します

予期しないキーワード引数 'num_class'を受け取りました

Sklearnはこのパラメーターを自動的に設定するため、その引数を渡すことは想定されていません。しかし、なぜ最初のエラーが発生するのですか?

13
LetsPlayYahtzee

手動で追加パラメータnum_classをxgb_paramに

    # Model is an XGBClassifier
    xgb_param = model.get_xgb_params()
    xgb_param['num_class'] = 3
    cvresult = xgb.cv(xgb_param, ...)

XGBClassifierは、fitメソッドを使用する場合にこの値を自動的に設定しますが、cvメソッドでは使用しません

6
bold

私の場合、通常のfit呼び出し中に同じエラーがスローされました。問題の根本は、目的が手動でmulti:softmaxに設定されたことですが、クラスは2つしかありませんでした。 binary:logisticに変更すると、問題は解決しました。

6