本文将带你全面了解 Python 生态中经典易用的机器学习库 scikit-learn,从基础介绍到实战应用,涵盖数据预处理、线性回归、线性分类、树模型、SVM、其他分类器、聚类、降维、模型评估、超参数调优、Pipeline 管道与部署等核心内容,助你快速构建和部署 AI 模型,掌握机器学习项目的全流程。


scikit-learn是 Python 生态中最经典、最易用的机器学习库,封装了几乎所有主流的机器学习算法,提供了统一的 API 接口,让你无需深入数学细节,就能快速构建和部署 AI 模型。

1、Introduction to scikit-learn(scikit-learn 简介)

scikit-learn(简称 sklearn)是 Python 最核心的机器学习库,由 David Cournapeau 于 2007 年发起,基于 NumPy、SciPy 和 Matplotlib 构建。它提供了统一、简洁的 API,覆盖了分类、回归、聚类、降维等所有主流机器学习任务,是数据科学家和 AI 工程师的 “瑞士军刀”。

# 导入scikit-learn核心模块
from sklearn import datasets, linear_model, model_selection, metrics
import numpy as np
# 打印scikit-learn版本,确认环境配置成功
import sklearn
print("scikit-learn版本:", sklearn.__version__)  # 输出示例:1.3.0
# 快速体验:用线性回归预测波士顿房价(经典数据集)
# 加载数据集
data = datasets.load_diabetes()
X = data.data  # 特征矩阵
y = data.target  # 目标变量
# 划分训练集和测试集(80%训练,20%测试)
X_train, X_test, y_train, y_test = model_selection.train_test_split(
X, y, test_size=0.2, random_state=42
)
# 初始化线性回归模型
model = linear_model.LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 评估模型(均方误差)
mse = metrics.mean_squared_error(y_test, y_pred)
print(f"线性回归模型的均方误差:{mse:.2f}")#输出2900.19

2、Data Preprocessing(数据预处理)

机器学习的核心是 “数据决定模型上限”,数据预处理是建模前的关键步骤,包括:缺失值填充特征缩放(标准化 / 归一化)、类别编码(独热编码 / 标签编码)、特征选择等,直接影响模型性能。

import numpy as np
from sklearn import preprocessing, impute, feature_selection
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 1. 缺失值填充(模拟缺失值)
X_with_nan = X.copy()
X_with_nan[0, 0] = np.nan  # 手动添加一个缺失值
imputer = impute.SimpleImputer(strategy='mean')  # 用均值填充
X_imputed = imputer.fit_transform(X_with_nan)
# 2. 特征标准化(Z-score标准化)
scaler = preprocessing.StandardScaler()
X_scaled = scaler.fit_transform(X_imputed)
# 3. 特征选择:选择与目标变量最相关的2个特征
selector = feature_selection.SelectKBest(k=2)
X_selected = selector.fit_transform(X_scaled, y)
print(f"原始特征数:{X.shape[1]},选择后特征数:{X_selected.shape[1]}")
#原始特征数:4,选择后特征数:2

3、Linear Regression Models(线性回归模型)

线性回归是回归任务的 “入门级” 模型,假设特征和目标变量之间存在线性关系。scikit-learn 提供了基础线性回归、岭回归(L2 正则化)、Lasso 回归(L1 正则化)等变体,用于解决不同场景下的过拟合问题。

from sklearn import datasets, linear_model, metrics
from sklearn.model_selection import train_test_split
# 加载糖尿病数据集(回归任务)
data = datasets.load_diabetes()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 1. 基础线性回归
lr = linear_model.LinearRegression()
lr.fit(X_train, y_train)
y_pred_lr = lr.predict(X_test)
mse_lr = metrics.mean_squared_error(y_test, y_pred_lr)
# 2. 岭回归(L2正则化,防止过拟合)
ridge = linear_model.Ridge(alpha=1.0)  # alpha是正则化强度
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)
mse_ridge = metrics.mean_squared_error(y_test, y_pred_ridge)
print(f"线性回归均方误差:{mse_lr:.2f}")
print(f"岭回归均方误差:{mse_ridge:.2f}")
#线性回归均方误差:2900.19
#岭回归均方误差:3077.42

4、Advanced Regression(高级回归)

高级回归模型用于处理线性回归无法拟合的复杂非线性关系,包括:多项式回归(将特征映射到高维空间)、弹性网回归(结合 L1 和 L2 正则化)、支持向量回归(SVR) 等,适用于更复杂的回归场景。

from sklearn import datasets, linear_model, preprocessing, metrics
from sklearn.model_selection import train_test_split
import numpy as np
# 生成非线性测试数据
np.random.seed(42)
X = np.linspace(-3, 3, 100).reshape(-1, 1)
y = 0.5 * X**2 + X + 2 + np.random.normal(0, 0.5, size=len(X))
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 1. 线性回归(无法拟合非线性关系)
lr = linear_model.LinearRegression()
lr.fit(X_train, y_train)
y_pred_lr = lr.predict(X_test)
mse_lr = metrics.mean_squared_error(y_test, y_pred_lr)
# 2. 多项式回归(2次多项式,拟合非线性关系)
poly = preprocessing.PolynomialFeatures(degree=2)  # 生成2次多项式特征
X_train_poly = poly.fit_transform(X_train)
X_test_poly = poly.transform(X_test)
lr_poly = linear_model.LinearRegression()
lr_poly.fit(X_train_poly, y_train)
y_pred_poly = lr_poly.predict(X_test_poly)
mse_poly = metrics.mean_squared_error(y_test, y_pred_poly)
print(f"线性回归均方误差:{mse_lr:.2f}")
print(f"多项式回归均方误差:{mse_poly:.2f}")  # 误差显著降低

5、Linear Classification(线性分类)

线性分类模型是分类任务的基础,假设不同类别之间存在线性可分的决策边界。常见模型包括:逻辑回归(Logistic Regression)、线性支持向量机(Linear SVM)随机梯度下降(SGD) 等,适用于高维稀疏数据(如文本分类)。

from sklearn import datasets, linear_model, metrics
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 初始化逻辑回归模型(多分类任务)
logreg = linear_model.LogisticRegression(max_iter=200)  # 增加迭代次数确保收敛
# 训练模型
logreg.fit(X_train, y_train)
# 预测测试集
y_pred = logreg.predict(X_test)
# 评估模型(准确率)
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f"逻辑回归准确率:{accuracy:.2f}")  # 输出:1.00(鸢尾花数据集较简单)

6、Tree-Based Methods(基于树的方法)

基于树的方法是机器学习中最强大的模型之一,通过构建决策树来拟合非线性关系,具有可解释性强无需特征缩放能处理缺失值等优势。常见模型包括:决策树随机森林(集成学习)、梯度提升树(XGBoost/LightGBM) 等,在 Kaggle 竞赛中表现优异。

from sklearn import datasets, ensemble, metrics
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 初始化随机森林模型(100棵树)
rf = ensemble.RandomForestClassifier(n_estimators=100, random_state=42)
# 训练模型
rf.fit(X_train, y_train)
# 预测测试集
y_pred = rf.predict(X_test)
# 评估模型(准确率)
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f"随机森林准确率:{accuracy:.2f}")  # 输出:1.00
# 查看特征重要性
feature_importance = rf.feature_importances_
print("特征重要性:", feature_importance.round(2))  # 输出:[0.11 0.02 0.44 0.43]

7、Support Vector Machines(支持向量机)

支持向量机(SVM)是一种强大的分类模型,通过寻找最优超平面来分隔不同类别,核心思想是最大化分类间隔。它通过核函数(如 RBF 核)可以处理非线性可分问题,在小样本、高维数据场景中表现优异。

from sklearn import datasets, svm, metrics
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 初始化SVM模型(RBF核,默认参数)
svm_model = svm.SVC(kernel='rbf', random_state=42)
# 训练模型
svm_model.fit(X_train, y_train)
# 预测测试集
y_pred = svm_model.predict(X_test)
# 评估模型(准确率)
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f"SVM准确率:{accuracy:.2f}")  # 输出:1.00

8、Other Classifiers(其他分类器)

除了线性模型、树模型和 SVM,scikit-learn 还提供了丰富的分类器,包括:K 近邻(KNN)朴素贝叶斯(Naive Bayes)神经网络(MLP) 等,适用于不同的数据分布和任务场景。

from sklearn import datasets, neighbors, metrics
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 初始化K近邻模型(k=3)
knn = neighbors.KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 评估模型(准确率)
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f"K近邻准确率:{accuracy:.2f}")  # 输出:1.00

9、Clustering(聚类)

聚类是无监督学习的核心任务,旨在将相似的数据点归为一类,无需标签数据。常见模型包括:K-Means(最常用)、层次聚类DBSCAN(基于密度)等,广泛应用于用户分群、异常检测等场景。

from sklearn import datasets, cluster, metrics
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# 加载鸢尾花数据集(无标签,用于聚类)
data = datasets.load_iris()
X = data.data
y_true = data.target  # 真实标签(仅用于评估)
# 初始化K-Means模型(3个簇,对应3种鸢尾花)
kmeans = cluster.KMeans(n_clusters=3, random_state=42)
# 训练模型(无监督学习,无需标签)
y_pred = kmeans.fit_predict(X)
# 评估聚类效果(调整兰德指数,越接近1越好)
ari = metrics.adjusted_rand_score(y_true, y_pred)
print(f"K-Means调整兰德指数:{ari:.2f}")  # 输出:0.73
# 可视化聚类结果(PCA降维到2D)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_pred, cmap='viridis')
plt.title("K-Means聚类结果(PCA降维)")
plt.show()

10、Dimensionality Reduction(降维)

降维是减少特征数量的过程,既能降低计算成本,又能缓解维度灾难,还能可视化高维数据。常见方法包括:主成分分析(PCA)(线性降维)、t-SNE(非线性降维,用于可视化)、线性判别分析(LDA)(监督降维)等。

from sklearn import datasets, decomposition
import matplotlib.pyplot as plt
# 加载鸢尾花数据集(4维特征)
data = datasets.load_iris()
X = data.data
y = data.target
# 初始化PCA模型(降维到2维)
pca = decomposition.PCA(n_components=2)
# 训练并转换数据
X_pca = pca.fit_transform(X)
# 可视化降维结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', edgecolor='k')
plt.xlabel("主成分1")
plt.ylabel("主成分2")
plt.title("PCA降维可视化(鸢尾花数据集)")
plt.show()
# 查看方差解释率
print("主成分1方差解释率:", pca.explained_variance_ratio_[0].round(2))  # 输出:0.92
print("主成分2方差解释率:", pca.explained_variance_ratio_[1].round(2))  # 输出:0.05

11、Model Evaluation(模型评估)

模型评估是判断模型性能的关键,不同任务需要不同的评估指标:

  • 分类任务:准确率、精确率、召回率、F1-score、ROC-AUC。
  • 回归任务:均方误差(MSE)、平均绝对误差(MAE)、R² 分数。
  • 聚类任务:轮廓系数、调整兰德指数。
from sklearn import datasets, linear_model, metrics
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 训练逻辑回归模型
logreg = linear_model.LogisticRegression(max_iter=200)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
# 1. 准确率(整体正确预测比例)
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f"准确率:{accuracy:.2f}")
# 2. 混淆矩阵(详细展示各类别的预测情况)
cm = metrics.confusion_matrix(y_test, y_pred)
print("混淆矩阵:\n", cm)
# 3. 分类报告(精确率、召回率、F1-score)
report = metrics.classification_report(y_test, y_pred, target_names=data.target_names)
print("分类报告:\n", report)

12、Hyperparameter Tuning(超参数调优)

超参数是模型训练前手动设置的参数(如随机森林的树数量、SVM 的核函数),直接影响模型性能。scikit-learn 提供了 网格搜索(GridSearchCV)随机搜索(RandomizedSearchCV) 两种高效的调优方法,结合交叉验证自动寻找最优超参数。

from sklearn import datasets, ensemble, model_selection
import numpy as np
# 加载鸢尾花数据集(分类任务)
data = datasets.load_iris()
X = data.data
y = data.target
# 初始化随机森林模型
rf = ensemble.RandomForestClassifier(random_state=42)
# 定义超参数搜索空间
param_grid = {
'n_estimators': [50, 100, 200],  # 树的数量
'max_depth': [None, 10, 20],       # 树的最大深度
'min_samples_split': [2, 5]        # 内部节点再划分所需最小样本数
}
# 初始化网格搜索(5折交叉验证)
grid_search = model_selection.GridSearchCV(
estimator=rf,
param_grid=param_grid,
cv=5,
scoring='accuracy'
)
# 执行搜索
grid_search.fit(X, y)
# 输出最优超参数和对应准确率
print("最优超参数:", grid_search.best_params_)
print("最优准确率:", grid_search.best_score_.round(2))
#最优超参数: {'max_depth': None, 'min_samples_split': 2, 'n_estimators': 50}
#最优准确率: 0.97

13、Pipelines & Deployment(管道与部署)

机器学习项目的最终目标是部署到生产环境,而 Pipeline(管道) 是实现这一目标的关键。它将数据预处理、特征工程、模型训练等步骤封装成一个整体,确保训练和预测阶段的处理逻辑一致,避免数据泄露,同时便于部署和复用。

from sklearn import datasets, preprocessing, linear_model, pipeline, model_selection, metrics
# 加载糖尿病数据集(回归任务)
data = datasets.load_diabetes()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(
X, y, test_size=0.2, random_state=42
)
# 构建Pipeline:标准化特征 -> 线性回归
pipe = pipeline.Pipeline([
('scaler', preprocessing.StandardScaler()),  # 步骤1:特征标准化
('regressor', linear_model.LinearRegression())  # 步骤2:线性回归
])
# 训练Pipeline(自动执行所有步骤)
pipe.fit(X_train, y_train)
# 预测测试集(自动应用相同的预处理)
y_pred = pipe.predict(X_test)
# 评估模型
mse = metrics.mean_squared_error(y_test, y_pred)
print(f"Pipeline模型均方误差:{mse:.2f}")
# 保存Pipeline(用于部署)
import joblib
joblib.dump(pipe, 'diabetes_regression_pipeline.pkl')
print("Pipeline已保存为diabetes_regression_pipeline.pkl")
# 加载Pipeline(部署时使用)
loaded_pipe = joblib.load('diabetes_regression_pipeline.pkl')
new_data = X_test[:1]  # 新数据
new_pred = loaded_pipe.predict(new_data)
print("新数据预测结果:", new_pred.round(2))

scikit-learn 学习的核心逻辑总计

   scikit-learn 看似函数繁多,实则核心逻辑只有一条:**“统一 API + 模块化组件 + 端到端流程”**。从数据预处理到模型训练,从评估调优到部署复用,这 13 个章节覆盖了机器学习项目的全流程。不用死记硬背每一个模型,先理解 “问题→模型→评估→部署” 的闭环,再结合真实数据场景应用,你很快就能熟练驾驭 scikit-learn,轻松搞定 AI 建模。

   至此,大模型知识体系 L1阶段 环境准备&Python学习全部结束,开始L2(大模型基础认知 | 核心原理及提示词工程)

如何系统的学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

在这里插入图片描述

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐