我正在训练GBC。它是多类分类器,有12类输出。我的问题是,当我预测列车数据时,我没有达到100%的准确性。实际上,错误预测发生在主导的类集上。 (我的输入是imbanalanced,我做合成数据创建。)
以下是详细信息: 输入数据大小: 输入形状:(20744,13) (对输出和输入进行标签编码和minmax缩放)
在缩放数据之前的分布:
[(0, 443), **(1, 6878),** (2, 177), (3, 1255), (4, 311), (5, 172), (6, 1029), (7, 268), (8, 131), (9, 54), (10, 1159), (11, 340), (12, 1370),
**(13, 7157)**]
使用随机过采样器进行过采样
[(0, 7157), (1, 7157), (2, 7157), (3, 7157), (4, 7157), (5, 7157), (6, 7157), (7, 7157), (8, 7157), (9, 7157), (10, 7157), (11, 7157), (12, 7157), (13, 7157)]
预处理后的最终形状:
输入形状X:(100198,12)
目标形状Y:(100198,1)
型号: est = GradientBoostingClassifier(详细= 3,n_estimators = n_est,learning_rate = 0.001,max_depth = 24,min_samples_leaf = 3,max_features = 3)
输出:
ACC: 0.9632
Feature importance:
[0.09169515 0.01167983 0. 0. 0.11126567 0.14089752
0.12381927 0.10735138 0.1344401 0.13874134 0.08111774 0.058992 ]
Accuracy score on Test data: 19303
[[1406 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 19 1024 4 32 4 5 24 5 0 0 24 8 48 211]
[ 0 0 1434 0 0 0 0 0 0 0 0 0 0 0]
[ 1 8 0 1423 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 1441 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 1430 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 1439 0 0 0 3 0 0 1]
[ 0 0 0 0 0 0 0 1453 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 1432 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 1445 0 0 0 0]
[ 0 2 0 0 0 0 0 0 0 0 1398 0 0 1]
[ 0 0 0 0 0 0 0 0 0 0 0 1411 0 0]
[ 0 5 0 1 0 0 0 0 0 0 0 0 1413 6]
[ 1 154 9 22 12 6 22 6 3 8 17 20 45 1154]]
测试数据精度:0.9632235528942116
**我看到的问题是当我预测列车数据时:我预计会有100%的预测。但不知何故,我的主导阶级并非100%预测。有什么原因吗?
ACC: 0.9982**
Accuracy score on Train data: 80016
[[5751 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ **0 5699 2 2 1 0 1 3 3 2 0 2 2 32**]
[ 0 0 5723 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 5725 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 5716 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 5727 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 5714 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 5704 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 5725 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 5712 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 5756 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 5746 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 1 5731 0]
[ **0 4 5 5 5 2 9 8 2 16 6 19 10 5587**]]
列车数据精度:0.9982284987150378 回顾列车数据:0.9982284987150378
知道出了什么问题?
答案 0 :(得分:2)
首先,您不应在多类标签列上应用minmax()
标准化或任何标准化。仅在特征矩阵上应用标准化。在分类问题中,标签必须被视为离散的分类实体(即使将标签类编码为序数也是可选的,至少在sklearn
中)。
其次,为什么你期望训练集的100%分类准确度?您是否暗示训练集的准确性应始终为100%,或者您的模型有什么特别之处让您期望100%的准确性?一个广泛的良好模型是训练和测试精度之间的差异非常小(如果有的话)。当然,理想,列车和测试分类应接近100%,但这种情况极为罕见。 仅列车组的100%准确度不是衡量好模型的标准。