【问题标题】:Is it good to to have high more that 99% accuracy on Decision Tree Classifier?在决策树分类器上获得超过 99% 的准确率是否很好?
【发布时间】:2021-10-16 22:43:21
【问题描述】:

我正在研究一个包含 100 万个数据集的二元分类问题。数据集有 84 个特征和两个目标变量 'Normal 和 Bad' 编码后为 0 和 1。

没有任何特征选择,我得到了 99.99900001,实际上,我不能相信这个分数。 我已经完成了 n_splits=10 拆分的 StratifiedKFold,我得到了 92.92%,但我需要超过 97%。当我改变 n_splits=30 时,我得到了 98% 的准确率。

n_splits=30 是否适用于 100 万个数据集,我也可以使用 n_splits=30 吗?谢谢。

这里是获得 99.999 准确率的示例代码

    from sklearn.tree import DecisionTreeClassifier

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, 
    y,test_size=0.30, random_state=4)

    model = DecisionTreeClassifier()

    model.fit(X_train, y_train)

    result = model.score(X_test, y_test)
    print('Accuracy: ',(result)*100)

【问题讨论】:

    标签: python decision-tree


    【解决方案1】:

    不要为了获得更好的价值而修改性能指标。由于您在交叉验证中通过不同数量的分割获得了大不相同的值,因此请执行重复交叉验证以获得更可靠的指标。

    在任何情况下,目标都应该是获得对实际性能的可靠衡量,如果该值不可信,则不是高值。 30 折交叉验证是否合适取决于您的数据集中有多少变化。我会说这对您的数据集大小来说没问题,但如果不检查数据集,我不能肯定地回答这个问题。

    【讨论】:

    • 我正在研究 CICAndMal2017 Android 恶意软件数据集。其中有两种类型的目标一种是良性的,另一种是唯一的攻击。我已经给出了 50 万良性和 50 万攻击的样本。在互联网上,我大部分时间都看到他们使用 5 或 10,这就是为什么不确定 30 分割是好还是坏。
    • 你还需要其他信息吗@cherrywoods
    • 据我所知,10 倍交叉验证重复 10 次是标准的。使用它可能是个好主意。
    • 今天我从随机森林 99.64 中得到了准确度,混淆矩阵,precision=1,recall=1,f1_score=1,总共有 1 是否可以接受?我不知道为什么我会得到这种令人困惑的准确性。
    • 一般来说,拥有如此高的价值并没有错。这只是意味着你的模型表现得非常好。但是,如果您的值远高于文献中报道的值,则可能有问题。顺便说一句,我为 CICAndMal2017 找到的网站说数据集中只有 10,000 个样本。您如何从中获得 1 个 mio 样本?
    猜你喜欢
    • 2023-01-01
    • 2018-08-18
    • 2020-10-23
    • 2018-04-11
    • 2021-03-06
    • 2017-05-31
    • 2019-07-19
    • 2014-06-09
    • 2012-08-04
    相关资源
    最近更新 更多