【发布时间】:2019-05-03 20:43:36
【问题描述】:
我还是第一次学习机器学习的初学者。我正在处理我的研究中的 4 类分类问题。我想计算准确率、精度和召回率。由于数据的数量很少(大约 30 个),因此分数受如何划分为 train-set 和 test-set 的影响。执行交叉验证时,方差很大。(例如准确度为 [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")
【问题讨论】:
标签: python machine-learning scikit-learn classification