python - 在机器学习中标准化数据集会降低准确性吗?
问题描述
起初,我对 iris 数据集使用了正态逻辑回归,它得到了 0.977 的准确度,而下一次对数据集进行预处理时,我得到了 0.955 的准确度。为什么会这样?
from sklearn.linear_model import LogisticRegression
import sklearn.metrics as metrics
logreg= LogisticRegression()
xtrain, xtest, ytrain, ytest= train_test_split(x,y, test_size= 0.3, random_state= 1)
logreg.fit(xtrain, ytrain)
ypred1= logreg.predict(xtest)
print(metrics.accuracy_score(ytest, ypred1))
带有预处理的模型
logreg= LogisticRegression()
xtrain, xtest, ytrain, ytest= train_test_split(x,y, test_size= 0.3, random_state= 1)
sc1 = StandardScaler()
sc1.fit(x_train)
X_train_std1 = sc1.transform(xtrain)
X_test_std1 = sc1.transform(xtest)
logreg.fit(X_train_std1, ytrain)
ypred1= logreg.predict(X_test_std1)
print(metrics.accuracy_score(ytest, ypred1))
解决方案
在机器学习中标准化数据集会降低准确性吗? - 简短的回答,不。
数据归一化主要与收敛性有关,而不是准确性。但是,有些模型假设数据的特定分布,在这些情况下,标准化可能变得非常重要。
在情况 1 中,特征未归一化,因此优化算法的路径稍长,对于情况 2,它在所有方向上都相等,因此收敛速度稍快,但此示例强烈适用于 min-max,单位向量归一化。
逻辑回归的一些假设:
- 观察应相互独立
- 自变量之间很少或没有多重共线性
- 自变量与对数几率线性相关
但是,逻辑回归不假设标准化数据。因此,这不是拟合逻辑回归模型的必要步骤。
假设是错误的,归一化会提高模型的准确性。
均值居中和缩放到单位方差通常很有用,但这完全取决于数据的属性。
如果您的数据采用不规则的方式,则平均减法可能会通过损害逻辑回归的任何强假设(例如由于数字原因引入一些非线性)而使某些特征偏向导致准确性降低的方向。
推荐阅读
- android - Firebase 评论查看错误 - 反序列化时需要一个列表,但有一个类 java.util.HashMap
- asp.net - 从 Postman API 调用重定向到 Web UI
- html - 为什么页脚在顺风 css 中浮动
- python - 如何根据页码将单个 pdf 拆分为多个 PdfFileReader 对象?
- python - Python Web Scraping 在屏幕上显示附加数据字段
- flask - Flask 应用程序 IIS:路由到其他页面时不断收到 404
- flutter - 在调试模式下运行应用程序和在颤振中构建发布 apk 时出错
- python - 使用列表的矩阵转置 - Python
- python - Python Kivy:我可以在屏幕之间切换时以降低状态打开BackDrop吗
- java - 注入包装类时未完成的存根异常