关于分类评估方法

我是一名初次学习机器学习的初学者。目前在研究中处理4类分类的任务。我希望计算准确率、精确率和召回率。由于数据量较少(约30个),分数会受到训练集和测试集划分方式的影响。执行交叉验证时,方差较大(例如,准确率为[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")

回答:

首先,欢迎来到SO!

30个样本确实是非常少的数据量。与其使用k折交叉验证,不妨考虑使用留一法交叉验证,每次在n-1个样本上训练模型,测试一次一个样本。除了计算指标外,您还可以看到模型在哪些样本上出错以及原因。

如果您的模型是确定性的,运行的折数超过样本数不会有任何影响。

无论如何,尽量想办法增加数据集的大小,无论是手动还是合成方式。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注