サンプル(行)を削除する効果をプロットする必要があります。それを「学習曲線」と呼んでいる人もいます。クロスバリデーションのためにデータフレームをscikitに送信するにはどうすればよいですか?
私はPandasを使っていくつかの行を削除することを考えました。 How to remove, randomly, rows from a dataframe but from each label?
しかし、私はクロスバリデーションを行いたい場合は、私が(でも配列にデータフレームを有効にするdf.values
を使用した後に)次のエラーを取得する:
だから、私は何をしています間違っている? sss = StratifiedShuffleSplit(n_splits=1, test_size=0.35)
であなたは、反復可能ではないオブジェクトを生成している、右バットオフ
import pandas as pd
import numpy as np
from sklearn.model_selection import StratifiedShuffleSplit
from sklearn import neighbors
from sklearn import cross_validation
df = pd.DataFrame(np.random.rand(12, 5))
label = np.array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
df['label'] = label
df1 = pd.concat(g.sample(2) for idx, g in df.groupby('label'))
X = df1[[0, 1, 2, 3, 4]].values
y = df1.label.values
print(X)
print(y)
clf = neighbors.KNeighborsClassifier()
sss = StratifiedShuffleSplit(1, test_size=0.1)
scoresSSS = cross_validation.cross_val_score(clf, X, y, cv=sss)
print(scoresSSS)