分類問題における評価方法について
機械学習を研究で初めてまだ初心者です。研究で4クラス分類の問題を扱っててaccuracyやprecisionやrecallを算出したいです。
データ数が少ない(30件ほど)で分割のされ方によってスコアにかなり影響を受けてしまいます。交差検証したときのばらつきが大きくて(例えばaccuracyが[0.83333333 0.72727273 0.44444444]など)評価方法に困っています。こういう場合なのですが100回とか500回とか交差検証を行ってその平均を出すという評価方法でよいですか?非常に初歩的な質問なのですがよろしくお願いします。
ava = []
avp = []
avr = []
estimators = [("MinMaxScaler", MinMaxScaler()),
("SVC", SVC(kernel='linear', class_weight='balanced',
C=1, decision_function_shape='ovr'))]
pl = Pipeline(estimators)
for i in range(ITER):
accuracy = cross_val_score(pl, X, y, cv=StratifiedKFold(n_splits=3, shuffle=True))
precision = cross_val_score(pl, X, y, scoring='precision_macro', cv=StratifiedKFold(n_splits=3, shuffle=True))
recall = cross_val_score(pl, X, y, scoring='recall_macro', cv=StratifiedKFold(n_splits=3, shuffle=True))
ava.append(np.mean(accuracy))
avp.append(np.mean(precision))
avr.append(np.mean(recall))
print("cross-val-score accuracy {}times average: ".format(ITER), np.mean(ava), "\n")
print("cross-val-score precision {}times average: ".format(ITER), np.mean(avp), "\n")
print("cross-val-score recall {}times average: ".format(ITER), np.mean(avr), "\n")