2016-11-16 35 views
0

scikit-learnでの回帰問題に再帰的特徴除去のようなラッパーメソッドを適用したいと思います。 Recursive feature elimination with cross-validationは、機能の数を自動的に調整する方法の概要を示します。scikit-learnにおける回帰のクロスバリデーションによる再帰的な特徴の除去

私はこの試みた:

modelX = LogisticRegression() 
rfecv = RFECV(estimator=modelX, step=1, scoring='mean_absolute_error') 
rfecv.fit(df_normdf, y_train) 
print("Optimal number of features : %d" % rfecv.n_features_) 

# Plot number of features VS. cross-validation scores 
plt.figure() 
plt.xlabel("Number of features selected") 
plt.ylabel("Cross validation score (nb of correct classifications)") 
plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_) 
plt.show()` 

を私は

`The least populated class in y has only 1 members, which is too few. 
The minimum number of labels for any class cannot be less than n_folds=3. % (min_labels, self.n_folds)), Warning) 

のようなエラーメッセージが表示され、私は分類問題を持っているように警告が聞こえるが、私の仕事は、回帰問題です。結果を得るために何ができますか、何が間違っていますか?ここで

+0

はあなたが私達にあなたの 'y_train'を示しWAN:?

RFECVのドキュメントはと言いますか – MMF

+0

私のy_trainには、1列と〜10.000行があり、値は1〜200です。 – matthew

+0

値は整数ですか?もしそうなら、私はそれをマルチクラス分類問題とみなすと思います。値を浮動小数点にキャストしようとします。 – MMF

答えて

0

は何が起こったかです:デフォルトでは

、折り目の数がユーザによって示されていない場合、RFEクロスバリデーション3-foldクロスバリデーションを使用しています。ここまでは順調ですね。あなたはdocumentationを見ればしかし

が、それはまた、折り目が各クラスのサンプルの割合を保存することによって作成されることを保証StartifiedKFoldを使用しています。したがって、出力()の一部の要素がのユニークなものである(エラーによって)ように見えるので、3つの異なるフォールドで同時に指定することはできません。それはエラーを投げる!

エラーはhereに由来します。

次に、階層化されていないK倍:KFoldを使用する必要があります。 "If the estimator is a classifier or if y is neither binary nor multiclass, sklearn.model_selection.KFold is used."

関連する問題