【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)))
相关推荐
2501_945423543 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
m0_621438524 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
俊哥V6 分钟前
每日 AI 研究简报 · 2026-03-25
人工智能·ai
疯聊AI7 分钟前
在Coze上部署openclaw并连接飞书,加飞书群
人工智能
ejjdhdjdjdjdjjsl10 分钟前
halcon算子(模板匹配)
人工智能·深度学习
陆业聪11 分钟前
从 OpenClaw 到 Android:Harness Engineering 是怎么让 Agent 变得可用的
android·人工智能·ai编程
2301_8042154112 分钟前
Python多线程与多进程:如何选择?(GIL全局解释器锁详解)
jvm·数据库·python
用户51914958484513 分钟前
SEO LAT Auto Post 插件远程代码执行漏洞利用工具 (CVE-2024-12252)
人工智能·aigc
AI茶水间管理员14 分钟前
部署70B大模型到底要多大显存?一文算清所有账
人工智能·后端
卿着飞翔14 分钟前
win11安装opencode
人工智能