在随机森林分类器算法中获得 100% 的准确率可以吗?

数据挖掘 机器学习 熊猫 随机森林 准确性 蟒蛇
2022-02-22 19:39:12

在我构建模型以使用 OEF、工作时间、性能/头部等功能预测机器性能时...

我使用拆分训练数据

x_trainset, x_testset, y_trainset, y_testset = train_test_split(x, y, test_size=0.3)

然后建立模型

#Import Random Forest Model
from sklearn.ensemble import RandomForestClassifier

# Create the model with 100 trees
forest=RandomForestClassifier(n_estimators=100)

#Train the model using the training sets
train1=forest.fit(x_trainset, y_trainset)
y_pred=train1.predict(x_testset)

y_pred

o/p:

array(['level2', 'level5', 'level2', 'level3', 'level3', 'level2',
       'level3', 'level2', 'level4', 'level2', 'level2', 'level3',
       'level4', 'level3', 'level3', 'level2', 'level2', 'level3',
       'level3', 'level3', 'level3', 'level3', 'level2', 'level5',
       'level3', 'level3', 'level2', 'level5', 'level4', 'level3',
       'level3', 'level3', 'level2', 'level2', 'level3', 'level3',
       'level3', 'level2', 'level4', 'level2', 'level2', 'level3',
       'level4', 'level3', 'level1', 'level3'], dtype=object)


y_testset

o/p:

120    level2
104    level5
117    level2
91     level3
4      level3
10     level2
133    level3
18     level2
119    level4
61     level2
71     level2
30     level3
27     level4
103    level3
14     level3
59     level2
50     level2
55     level3
53     level3
22     level3
78     level3
114    level3
70     level2
60     level5
6      level3
1      level3
83     level2
82     level5
26     level4
67     level3
62     level3
145    level3
74     level2
11     level2
107    level3
29     level3
138    level3
49     level2
150    level4
8      level2
20     level2
95     level3
51     level4
56     level3
72     level1
102    level3
Name: levels, dtype: object

然后找到了准确性,我就像,

from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation
print("Accuracy:",metrics.accuracy_score(y_testset, y_pred))

o/p:

Accuracy: 1.0

在 x_trainset,x_testset 我只有 features(7) 而在 y_trainset,y_testset 我只有需要预测的列“级别”

数据集大小约为 153

我不知道这是否正确。请任何人尽快回答这个问题

2个回答

您达到 100% 准确率的原因可能有很多。其中一个可能是:数据中的重复项在训练数据和测试数据中都是重复的。我建议您尝试以下步骤:1.检查是否有任何重复项在原始数据中 2.尝试不同的 Train-Test 拆分,例如 80-20 3.尝试 k-Fold 交叉验证 4.Checkout for Precision 和 Recall 除了准确性。希望这可以帮助!

您正在做正确的拆分,在训练集中进行训练,然后在测试集中进行测试。

似乎很奇怪是的。在没有看到您的数据的情况下,您是否从正在训练的目标中删除了目标?这可能是您拥有 100% 准确率的原因。

您可以尝试的另一件事是绘制特征重要性并检查哪些特征对模型有贡献。

检查此链接以查看功能重要性