我正在使用具有 4 个特征变量的原始数据集使用逻辑回归算法进行二项式分类。
我确保班级人数是平衡的。即,每个类的出现次数相等。
这四个特征是总胆固醇、收缩压、舒张压和香烟计数。类变量名称为 Stroke。
数据集描述如下图:
TOTCHOL SYSBP DIABP CIGPDAY STROKE
count 200.000 200.000 200.000 200.000 200.000
mean 231.040 144.560 81.400 4.480 1.500
std 42.465 23.754 11.931 9.359 0.501
min 112.000 100.000 51.500 0.000 1.000
25% 204.750 126.750 73.750 0.000 1.000
50% 225.500 141.000 80.000 0.000 1.500
75% 256.250 161.000 90.000 4.000 2.000
max 378.000 225.000 113.000 60.000 2.000
偏斜是
TOTCHOL 0.369
SYSBP 0.610
DIABP 0.273
CIGPDAY 2.618
STROKE 0.000
这里使用 Python + sklearn。问题是当我尝试使用标准化数据集时,分类性能会受到非常负面的影响
X=preprocessing.StandardScaler().fit(X).transform(X)
或者
X=preprocessing.MinMaxScaler().fit_transform(X)
归一化数据集的分类报告(之前):
precision recall f1-score support
1 0.85 0.79 0.81 28
2 0.82 0.88 0.85 32
avg / total 0.83 0.83 0.83 60
而分类报告(之后)规范化数据集:
precision recall f1-score support
1 0.47 1.00 0.64 28
2 1.00 0.03 0.06 32
avg/total 0.75 0.48 0.33 60
请注意,类变量包括结果 1(是)和 2(否),而不是通常的 0 和 1。
在这一点上,我看到预处理损害了分类准确性而不是帮助它。对此有什么合乎逻辑的解释吗?我“必须”做标准化步骤吗?
另一个要注意的是,我(在)对数据集进行归一化之前得到的概率分数要高得多,如下所示:
[ 0.65929838 0.34070162]
[ 0.40999878 0.59000122]
[ 0.43592976 0.56407024]
[ 0.40306785 0.59693215]
[ 0.92748002 0.07251998]
[ 0.74173761 0.25826239]
与那些(之后)规范化数据集相比
[ 0.51636816 0.48363184]
[ 0.5183946 0.4816054 ]
[ 0.51410135 0.48589865]
[ 0.50739794 0.49260206]
[ 0.52645649 0.47354351]
[ 0.5308564 0.4691436 ]
有什么解释为什么我会得到这样的结果?