【问题标题】:Is it possible to get same test accuracy for different classification models?是否有可能为不同的分类模型获得相同的测试精度?
【发布时间】:2021-06-08 06:56:47
【问题描述】:

我使用以下逻辑运行了许多带有默认选项的基本分类模型:

# setup the basic models with all arguments as default
et_clf = ExtraTreesClassifier()
svc_clf = SVC()
knn_clf = KNeighborsClassifier()
log_clf = LogisticRegression()
dt_clf = DecisionTreeClassifier()
rnd_clf = RandomForestClassifier()

# import accuracy_score
from sklearn.metrics import accuracy_score

# use a for-loop to compute the test set accuracy for each classifier
for clf in (et_clf, svc_clf, knn_clf, log_clf, dt_clf, rnd_clf ):
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    print(clf.__class__.__name__, accuracy_score(y_test, y_pred))

ExtraTreesClassifier、SVC、KNeighborsClassifier 和 LogisticRegression 的测试准确率完全相同:

ExtraTreesClassifier 0.8517915309446255
SVC 0.8517915309446255
KNeighborsClassifier 0.8517915309446255
LogisticRegression 0.8517915309446255
DecisionTreeClassifier 0.46416938110749184
RandomForestClassifier 0.8078175895765473

这可能吗?

【问题讨论】:

  • 肯定是这样,尤其是在您的测试集相对较小的情况下。你有多少个测试样本?
  • 您可以尝试检查哪些样本被错误分类。可能所有错误分类的样本都属于同一类。此外,您可以尝试用一些噪声干扰一些样本,看看精度是否保持不变。正如@desertnaut 所建议的,这也可能是样本数量的问题。
  • 有 614 个样本。添加一些噪音以查看准确性是否保持不变的好建议。谢谢
  • 你可以尝试使用交叉验证
  • 当你的问题有相同的证据表明确实有可能时,我觉得问“这是否可能”很奇怪。

标签: python machine-learning scikit-learn classification


【解决方案1】:

是的,有可能,这取决于您的数据集大小。要检查模型的准确性是否正确,请在数据集中添加不平衡数据并再次运行所有模型。

【讨论】:

  • 在数据集中添加不平衡的数据并再次运行 all (!) 模型只是为了确保准确性是正确的,这是非常糟糕的建议。
  • 有时您需要一些其他指标,具体取决于您的问题;像 precisionrecall 一样,你不能每次都依赖准确率,尤其是当数据不平衡时。
猜你喜欢
  • 2020-05-23
  • 2019-05-17
  • 2020-09-11
  • 2021-10-30
  • 2021-05-28
  • 2015-03-29
  • 1970-01-01
  • 2011-01-29
  • 2018-08-05
相关资源
最近更新 更多