学习使用 Python 机器学习工具 sklearn

目录

一、前言

[二、什么是 sklearn](#二、什么是 sklearn)

[三、安装 sklearn](#三、安装 sklearn)

四、sklearn整体架构

五、加载数据集

六、划分训练集和测试集

七、数据标准化

八、训练第一个模型

九、模型预测

十、模型评估

十一、混淆矩阵

十二、线性回归模型

十三、决策树模型

十四、随机森林模型

十五、支持向量机(SVM)

十六、KNN近邻算法

十七、聚类分析(K-Means)

十八、PCA降维

十九、交叉验证

二十、网格搜索调参

二十一、Pipeline流水线

二十二、模型保存与加载

二十三、完整机器学习案例

二十四、常用模块总结

二十五、面试高频问题

[sklearn 中 fit 和 transform 区别?](#sklearn 中 fit 和 transform 区别?)

[fit_transform 是什么?](#fit_transform 是什么?)

[Pipeline 有什么作用?](#Pipeline 有什么作用?)

[GridSearchCV 的作用?](#GridSearchCV 的作用?)

[sklearn 最常用的模块有哪些?](#sklearn 最常用的模块有哪些?)

二十六、总结


在 Python 机器学习生态中,有一个几乎绕不开的工具库:

复制代码
Scikit-Learn(简称 sklearn)

无论是:

复制代码
线性回归

逻辑回归

决策树

随机森林

聚类分析

降维分析

模型评估

还是:

复制代码
数据预处理

特征工程

交叉验证

超参数调优

都能通过 sklearn 快速完成。

可以说:

如果 NumPy 是机器学习的数据基础,那么 sklearn 就是机器学习的瑞士军刀。

对于机器学习初学者来说,掌握 sklearn 意味着能够快速搭建完整的机器学习项目。

本文将系统讲解:

复制代码
sklearn简介

安装方法

数据预处理

模型训练

模型评估

交叉验证

网格搜索

Pipeline流水线

常见模型使用

帮助你快速入门 sklearn。


二、什么是 sklearn

Scikit-Learn 是基于:

复制代码
NumPy

SciPy

Matplotlib

构建的机器学习工具库。

官方网站:

复制代码
https://scikit-learn.org

特点:

复制代码
API统一

文档完善

模型丰富

简单易用

工业界广泛应用

三、安装 sklearn

安装最新版:

复制代码
pip install scikit-learn

查看版本:

python 复制代码
import sklearn

print(sklearn.__version__)

输出:

复制代码
1.7.x

四、sklearn整体架构

机器学习流程:

在 sklearn 中:

复制代码
datasets

preprocessing

model_selection

metrics

ensemble

tree

linear_model

分别负责不同模块。


五、加载数据集

sklearn 自带很多经典数据集。

加载鸢尾花数据集:

python 复制代码
from sklearn.datasets import load_iris

iris = load_iris()

print(iris.data.shape)
print(iris.target.shape)

输出:

复制代码
(150, 4)
(150,)

查看特征:

复制代码
print(iris.feature_names)

结果:

复制代码
['sepal length',
 'sepal width',
 'petal length',
 'petal width']

六、划分训练集和测试集

机器学习必须划分:

复制代码
训练集

测试集

代码:

python 复制代码
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    iris.data,
    iris.target,
    test_size=0.2,
    random_state=42
)

参数说明:

复制代码
test_size

测试集比例

random_state

随机种子

七、数据标准化

很多算法要求:

复制代码
数据尺度一致

例如:

复制代码
年龄:20~60

工资:5000~50000

需要标准化。

代码:

python 复制代码
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)

标准化公式:

复制代码
z = (x - μ) / σ

作用:

复制代码
均值变成0

标准差变成1

八、训练第一个模型

使用逻辑回归:

python 复制代码
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

model.fit(X_train, y_train)

训练完成后:

python 复制代码
print("训练完成")

九、模型预测

预测测试集:

python 复制代码
pred = model.predict(X_test)

print(pred)

预测概率:

python 复制代码
prob = model.predict_proba(X_test)

print(prob)

输出:

复制代码
[[0.01 0.95 0.04]]

表示:

复制代码
属于各类别的概率

十、模型评估

计算准确率:

python 复制代码
from sklearn.metrics import accuracy_score

acc = accuracy_score(
    y_test,
    pred
)

print(acc)

输出:

复制代码
0.9667

表示:

复制代码
96.67%

分类报告:

python 复制代码
from sklearn.metrics import classification_report

print(
    classification_report(
        y_test,
        pred
    )
)

输出:

复制代码
precision

recall

f1-score

等指标。


十一、混淆矩阵

查看预测详情:

python 复制代码
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(
    y_test,
    pred
)

print(cm)

输出:

复制代码
[[10 0 0]
 [ 0 9 1]
 [ 0 0 10]]

帮助分析:

复制代码
误判情况

分类效果

十二、线性回归模型

房价预测:

python 复制代码
from sklearn.linear_model import LinearRegression

model = LinearRegression()

model.fit(X_train, y_train)

pred = model.predict(X_test)

查看系数:

python 复制代码
print(model.coef_)

查看截距:

python 复制代码
print(model.intercept_)

十三、决策树模型

代码:

python 复制代码
from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(
    max_depth=5
)

model.fit(X_train, y_train)

预测:

python 复制代码
pred = model.predict(X_test)

适用于:

复制代码
分类问题

回归问题

十四、随机森林模型

工业界非常常见。

代码:

python 复制代码
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
    n_estimators=100,
    random_state=42
)

model.fit(X_train, y_train)

参数:

复制代码
n_estimators

树的数量

查看特征重要性:

复制代码
print(
    model.feature_importances_
)

十五、支持向量机(SVM)

代码:

python 复制代码
from sklearn.svm import SVC

model = SVC(
    kernel="rbf"
)

model.fit(X_train, y_train)

常见核函数:

复制代码
linear

poly

rbf

sigmoid

十六、KNN近邻算法

代码:

python 复制代码
from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(
    n_neighbors=5
)

model.fit(X_train, y_train)

参数:

复制代码
n_neighbors

邻居数量

十七、聚类分析(K-Means)

无监督学习。

代码:

python 复制代码
from sklearn.cluster import KMeans

kmeans = KMeans(
    n_clusters=3,
    random_state=42
)

kmeans.fit(X_train)

查看聚类结果:

复制代码
print(kmeans.labels_)

十八、PCA降维

降维工具:

python 复制代码
from sklearn.decomposition import PCA

pca = PCA(
    n_components=2
)

X_new = pca.fit_transform(X_train)

结果:

复制代码
4维

↓

2维

方便:

复制代码
可视化

降噪

压缩数据

十九、交叉验证

提高评估可靠性。

代码:

python 复制代码
from sklearn.model_selection import cross_val_score

scores = cross_val_score(
    model,
    iris.data,
    iris.target,
    cv=5
)

print(scores)

输出:

复制代码
[0.96 0.93 1.00 0.96 0.96]

平均值:

复制代码
print(scores.mean())

二十、网格搜索调参

自动寻找最佳参数。

代码:

python 复制代码
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

params = {
    "n_estimators":[50,100,200],
    "max_depth":[3,5,10]
}

grid = GridSearchCV(
    RandomForestClassifier(),
    params,
    cv=5
)

grid.fit(X_train, y_train)

最佳参数:

python 复制代码
print(grid.best_params_)

输出:

python 复制代码
{
    'max_depth':5,
    'n_estimators':100
}

二十一、Pipeline流水线

避免数据泄漏。

代码:

python 复制代码
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("svc", SVC())
])

pipeline.fit(X_train, y_train)

优势:

复制代码
代码更简洁

方便部署

避免错误

二十二、模型保存与加载

保存模型:

python 复制代码
import joblib

joblib.dump(
    model,
    "model.pkl"
)

加载模型:

复制代码
model = joblib.load(
    "model.pkl"
)

线上部署常用。


二十三、完整机器学习案例

python 复制代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

iris = load_iris()

X_train, X_test, y_train, y_test = train_test_split(
    iris.data,
    iris.target,
    test_size=0.2,
    random_state=42
)

model = RandomForestClassifier()

model.fit(X_train, y_train)

pred = model.predict(X_test)

acc = accuracy_score(
    y_test,
    pred
)

print("准确率:", acc)

运行结果:

复制代码
准确率:0.96

二十四、常用模块总结

模块 作用
datasets 数据集
preprocessing 数据预处理
model_selection 数据划分与调参
metrics 模型评估
linear_model 线性模型
tree 决策树
ensemble 集成学习
svm 支持向量机
cluster 聚类
decomposition PCA降维

二十五、面试高频问题

sklearn 中 fit 和 transform 区别?

复制代码
fit

学习参数

transform

转换数据

fit_transform 是什么?

复制代码
fit

+

transform

一步完成。


Pipeline 有什么作用?

复制代码
串联预处理和模型

防止数据泄漏

GridSearchCV 的作用?

复制代码
自动搜索最佳参数

sklearn 最常用的模块有哪些?

复制代码
datasets

metrics

model_selection

ensemble

tree

linear_model

二十六、总结

Scikit-Learn 是 Python 机器学习领域最重要的工具库之一。

完整开发流程:

复制代码
加载数据
    ↓
划分训练集
    ↓
数据预处理
    ↓
训练模型
    ↓
模型预测
    ↓
模型评估
    ↓
交叉验证
    ↓
参数优化
    ↓
模型保存

掌握 sklearn 后,你将能够快速完成:

复制代码
分类任务

回归任务

聚类任务

降维任务

模型评估

模型调优

对于机器学习工程师而言:

sklearn 不仅仅是一个工具库,更是学习机器学习思想的最佳实践平台。学会 sklearn,意味着你已经具备了独立完成绝大多数传统机器学习项目的能力。

相关推荐
摸鱼同学1 小时前
04-Skills 上篇:从安装到日常使用 —— 让 AI 学会你的工作流
ai·agent·vibe coding·skills
辣椒思密达1 小时前
Python HTTP请求中的重试与超时控制:提升稳定性的实用方法
开发语言·python·http
AI智图坊1 小时前
AIGC赋能跨境电商:如何利用「图生图」与模型提取,破解POD节日款“卡图案”技术瓶颈?
大数据·人工智能·gpt·ai作画·aigc
触底反弹1 小时前
大模型时代:5 个 Prompt 替代 BERT 训练,搞定 NLP 五大任务
人工智能·node.js·api
vortex51 小时前
AI Skill 设计:网络安全审计中的自主性与规范化博弈
人工智能·安全·web安全
云烟成雨TD2 小时前
Spring AI 1.x 系列【37】RAG 知识库平台案例:知识库管理
java·人工智能·spring
GodGump2 小时前
从生成式 AI 到行动式 AI:下一代人工智能为什么需要“行动能力”
人工智能
珠***格2 小时前
实操落地|防逆流装置的安装规范、调试标准与故障处置
网络·数据库·人工智能·分布式·能源·边缘计算
GNG2 小时前
《终身成长》读书笔记
笔记·学习