【Python机器学习】预处理对监督学习的作用

还是用cancer数据集,观察使用MinMaxScaler对学习SVC的作用。

首先,在原始数据上拟合SVC:

python 复制代码
cancer=load_breast_cancer()
X_train,X_test,y_train,y_test=train_test_split(
    cancer.data,cancer.target,random_state=0
)
svm=SVC(C=100)
svm.fit(X_train,y_train)
print('test set accuracy:{:.2f}'.format(svm.score(X_test,y_test)))

下面先用MinMaxScaler对数据进行缩放,然后再拟合SVC:

python 复制代码
scaler=MinMaxScaler()
scaler.fit(X_train)
X_train_scaler=scaler.transform(X_train)
X_test_scaler=scaler.transform(X_test)

svm.fit(X_train_scaler,y_train)

print('Scaler test set accuracy:{:.2f}'.format(svm.score(X_test_scaler,y_test)))

可以发现,数据缩放的作用非常显著。虽然数据缩放不涉及任何复杂的数据,但良好的做法仍然是使用scikit-learn提供的缩放机制,而不是自己重新实现它们,因为即使在这些简单的计算中也容易犯错。

还可以通过改变使用的类将一种预处理算法替换成另一种,因为所有的预处理类都具有相同的接口,都包含fit和transform方法:

python 复制代码
scaler=StandardScaler()
scaler.fit(X_train)
X_train_scaler=scaler.transform(X_train)
X_test_scaler=scaler.transform(X_test)

svm.fit(X_train_scaler,y_train)

print('SVM test accuracy:{:.2f}'.format(svm.score(X_test_scaler,y_test)))
相关推荐
阿Y加油吧几秒前
吃透 RAG 检索:纯向量短板、BM25 混合检索、RRF 融合与重排序
人工智能·leetcode
qq1180096171 分钟前
电力预测大赛经验教训与心得总结
人工智能·深度学习·机器学习
m0_463672201 分钟前
如何理解闭包对内存的影响并手动解除引用防止泄漏
jvm·数据库·python
yuanpan3 分钟前
Python + sqlite3 本地 SQLite 数据库操作实战:完整 CRUD 入门教程
开发语言·python·opencv
NG WING YIN4 分钟前
一鍵計算稅項支出
python
m0_736439304 分钟前
如何处理无法修改主键列的问题_先删除AUTO_INCREMENT再移除主键的顺序
jvm·数据库·python
qinyia4 分钟前
AI助手基于应用集成平台9台服务器CPU与内存资源分析及重启方案制定
运维·服务器·人工智能
TENSORTEC腾视科技5 分钟前
腾视科技重磅发布AD03行车记录仪DashCam!全维守护,智驭出行新生态
大数据·网络·人工智能·科技·ai·无人叉车解决方案·无人叉车及智能调度系统解决方案
孙高飞5 分钟前
万字长文:如何用 harness 的理念设计一个 AI 驱动的 UI 自动化工程
人工智能·ui·自动化