下のコードを実際に動かそうとすると
ValueError: bad input shape (1000, 4)とエラーが発生してしまいます。
cross_val_scoreの所が原因なはずですがどのようにすればエラーが消えますでしょうか。分類元のデータの個数とその分類結果の個数を合わせる必要があるのは分かりますが数変えたりしても解消されません。
扱うデータの中身は
V0 V1 V2 ・・・V10 Class
2 34 53・・・ 5 1
・
・
・
32 ・・・ 32 4
・
・
のように全部で3000近いビッグデータで、Classが1~4に分かれていてそのクラスを予測する目的です。
Python
1#目視ではなく機械的に選択。ANOVAのF値を用いる 2##make matrix 3X = df.drop('Class', axis=1) 4y = df.Class 5 6scores=[] 7for n in tqdm(range(1,len(X.columns))): 8 print('\n説明変数の数n=',n) 9 ##select features 10 select = SelectKBest(k=n) 11 select.fit(X, y) 12 mask = select.get_support() 13 X_selected = X.iloc[:,mask] 14 ##10-foldCV, LogisticRegression, PR_AUC 15 #cv=StratifiedKFold(n_splits=3) 16 #cross_val_scoreは、classifierとトレーニング用データ、テスト用データを指定してその精度を割り出せる便利なツール 17 #cvは交差検証の略でデータのsplitの方法を指定できる 18 #n_splitはデータをいくつに分けるかを指定するもの。defaultは3。 19 logreg = LogisticRegression() 20 kfold=KFold(n_splits=3) 21 pr_auc = cross_val_score(logreg, X_selected, y, scoring="average_precision", cv=kfold) 22 #pr_auc = cross_val_score(LogisticRegression(), X_selected, y, scoring="average_precision", cv=kfold) 23 scores.append(np.mean(pr_auc)) 24 print('平均のPR_AUC:',scores[n-1])
出力されたエラーメッセージを全てコードブロックで追記していただけませんか?
あなたの回答
tips
プレビュー