【发布时间】:2020-04-05 23:18:41
【问题描述】:
我有一个包含 1025 个输入和 14 列的数据。首先,我通过将它们放在单独的表中来设置标签。
x = dataset.drop('label', axis=1)
y = dataset['label']
标签值只有 1 或 0。然后我使用以下方法拆分数据:
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.30)
然后我制作我的分类器:
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
然后每当我制作决策树时,它都会变得太大:
from sklearn import tree
tree.plot_tree(classifier.fit(X_train, y_train))
结果输出 8 个级别,结果太大了。我认为这没问题,但在观察了混淆矩阵和分类报告后:
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
结果是:
[[155 3]
[ 3 147]]
precision recall f1-score support
0 0.98 0.98 0.98 158
1 0.98 0.98 0.98 150
accuracy 0.98 308
macro avg 0.98 0.98 0.98 308
weighted avg 0.98 0.98 0.98 308
高精度让我怀疑我的解决方案。我的代码有什么问题,如何降低决策树和准确度得分?
【问题讨论】:
-
你能定义太大是什么意思吗?为什么你希望你的决策树不准确?
-
这棵树有 95 个节点和 8 个层级。我认为它的分支过多无法概括其决定
-
那么您是否正在寻找防止决策树中过度拟合的方法?我们需要确保问题的范围适当,以便我们可以提供足够的答案:)
-
您可以验证您的模型。您可能还想看看这个:en.wikipedia.org/wiki/Hyperparameter_optimization
-
如果这解决了您的问题,请不要忘记标记为正确@rnlxs
标签: python machine-learning scikit-learn decision-tree