我正在使用 Gridsearch 来预测二元结果的 DecisionTreeClassifier。当我使用默认参数运行拟合和预测时,我得到以下结果:
Accuracy: 0.9602242115860793
F1: 0.9581087077004674
然后我尝试 GridsearchCV:
from sklearn.model_selection import GridSearchCV
param_grid = {"criterion": ["gini", "entropy"],
"min_samples_split": [2, 10],
"max_depth": [2, 5, 10]
}
grid = GridSearchCV(dtc, param_grid, cv=3, scoring='neg_mean_squared_error')
grid.fit(X_train, y_train.values.ravel())
y_pred_class = grid.predict(X_test)
当我检查 y_pred 中的结果时,它们只包含一个类 (0),因此当我尝试查看 F1 时会收到警告:
site-packages\sklearn\metrics\classification.py:1135:UndefinedMetricWarning:F 分数定义不明确,在没有预测样本的标签中设置为 0.0。“精度”、“预测”、平均值、warn_for)
谁能建议这里可能出现的问题以及为什么最佳参数对整个集合给出相同的预测?
回答:由于我的数据集中有这么多特征,限制使用指定值拆分的最大深度和最小样本无法给出足够的结果。添加无并增加范围解决了这个问题。