私は、それぞれ異なるサンプル数の21人の被験者のデータセットを持っています。 私は曲線を描きました(図を見てください)。私は各被験者から[10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40]のサンプルを取り除く。私は90%のtrain_sizeと10%のtest_sizeでStratifiedShuffleSplitを使用しています。これが意味する:learning_curve fuction for scikitlearnを使用せずに学習曲線をプロットするtrain_scoresを取得するにはどうすればよいですか?
- を私は9私は20個のサンプルを削除すると、18が私は削除するとき
- をテストするためのトレーニング及び2に使用される
- をテストするための訓練と1のために使用される10個のサンプルを除去する際30個のサンプル、27は、私は40個のサンプルを削除すると、36がこの曲線は、精度(test_score)ではなくtrain_scoreを示す
をテストするための訓練及び4に使用される
scikit-learnのlearning_curve関数を使用せずにtrain_scoreをプロットするにはどうすればよいですか? http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html
コード:
result_list = []
#LOADING .mat FILE
x=sio.loadmat('/home/curve.mat')['x']
s_y=sio.loadmat('/home/rocio/curve.mat')['y']
y=np.ravel(s_y)
#SENDING THE FILE TO PANDAS
df = pd.DataFrame(x)
df['label']=y
#SPECIFYING THE # OF SAMPLES TO BE REMOVED
for j in [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,32,34,36,38,40]:
df1 = pd.concat(g.sample(j) for idx, g in df.groupby('label'))
#TURNING THE DATAFRAME TO ARRAY
X = df1[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]].values
y = df1.label.values
#Cross-validation
clf = make_pipeline(preprocessing.RobustScaler(), neighbors.KNeighborsClassifier())
####################10x2 SSS####################
print("Cross-validation:10x10")
xSSSmean10 = []
for i in range(10):
sss = StratifiedShuffleSplit(2, test_size=0.1, random_state=i)
scoresSSS = model_selection.cross_val_score(clf, X, y, cv=sss.split(X, y))
xSSSmean10.append(scoresSSS.mean())
result_list.append(xSSSmean10)
print("")