当前位置: 首页 > article >正文

《Python实战进阶》第30集:Scikit-learn 入门:分类与回归模型

第30集:Scikit-learn 入门:分类与回归模型


摘要

Scikit-learn 是 Python 数据科学生态系统中最重要的库之一,广泛应用于机器学习任务。本集聚焦于 Scikit-learn 的核心功能,涵盖分类与回归两大经典任务。我们将学习如何使用 Scikit-learn 构建基础的机器学习模型,并通过实战案例掌握其在数据科学中的实际应用。同时,我们还将探讨传统机器学习模型在 AI 大模型时代的适用场景。
在这里插入图片描述


核心概念和知识点

1. Scikit-learn 的模块化设计

Scikit-learn 的设计遵循一致的接口规范,主要分为以下几部分:

  • 数据预处理:包括标准化、归一化、特征编码等。
  • 模型构建:提供丰富的算法实现,如线性回归、逻辑回归、支持向量机(SVM)等。
  • 模型评估:支持多种评估指标,例如准确率、F1 分数、均方误差(MSE)等。
  • 模型优化:通过交叉验证、网格搜索等方式优化模型性能。

2. 常用算法

  • 线性回归:用于连续值预测的回归任务。
  • 逻辑回归:用于二分类或多分类问题。
  • 支持向量机(SVM):适用于高维数据的分类与回归任务。

3. 数据预处理

  • 标准化:将数据转换为均值为 0、标准差为 1 的分布。
  • 归一化:将数据缩放到 [0, 1] 区间。

4. 模型评估指标

  • 回归任务:均方误差(MSE)、均绝对误差(MAE)、R² 分数。
  • 分类任务:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 分数。

实战案例

案例 1:使用 Scikit-learn 预测房价(回归任务)

背景

我们将使用波士顿房价数据集,构建一个线性回归模型来预测房价。

代码实现
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 加载数据集
boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)
y = boston.target

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 构建线性回归模型
model = LinearRegression()
model.fit(X_train_scaled, y_train)

# 模型预测
y_pred = model.predict(X_test_scaled)

# 模型评估
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Mean Squared Error: {mse:.2f}")
print(f"R² Score: {r2:.2f}")
输出结果
Mean Squared Error: 23.87
R² Score: 0.74
可视化

我们可以绘制实际房价与预测房价的对比图:

import matplotlib.pyplot as plt

plt.scatter(y_test, y_pred, alpha=0.5)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Prices")
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')  # 对角线
plt.show()

案例 2:使用逻辑回归对鸢尾花数据进行分类

背景

鸢尾花数据集是经典的分类问题数据集,包含 3 类鸢尾花的特征。我们将使用逻辑回归模型对其进行分类。

代码实现
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 构建逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train_scaled, y_train)

# 模型预测
y_pred = model.predict(X_test_scaled)

# 模型评估
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred, target_names=iris.target_names)

print(f"Accuracy: {accuracy:.2f}")
print(report)
输出结果
Accuracy: 1.00
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        16
  versicolor       1.00      1.00      1.00        19
   virginica       1.00      1.00      1.00        15

    accuracy                           1.00        50
   macro avg       1.00      1.00      1.00        50
weighted avg       1.00      1.00      1.00        50
可视化

可以通过混淆矩阵展示分类结果:

from sklearn.metrics import ConfusionMatrixDisplay

ConfusionMatrixDisplay.from_predictions(y_test, y_pred, display_labels=iris.target_names)
plt.title("Confusion Matrix")
plt.show()

总结

Scikit-learn 提供了简单易用的接口,使得初学者能够快速上手机器学习的核心算法。通过本集的学习,我们掌握了如何使用 Scikit-learn 构建回归与分类模型,并通过实战案例深入理解了数据预处理、模型训练与评估的完整流程。


扩展思考

1. 如何将 Scikit-learn 与深度学习框架结合?

Scikit-learn 可以作为深度学习框架(如 TensorFlow 和 PyTorch)的补充工具。例如:

  • 使用 Scikit-learn 进行数据预处理和特征工程。
  • 使用深度学习框架构建复杂模型,然后利用 Scikit-learn 的 PipelineGridSearchCV 进行超参数调优。

2. 传统机器学习模型在 AI 大模型时代的适用场景

尽管大模型(如 GPT、BERT)在许多领域表现出色,但传统机器学习模型仍然具有重要价值:

  • 小数据集:当数据量有限时,传统模型往往表现更稳定。
  • 可解释性:传统模型(如线性回归、决策树)更容易解释,适合需要透明度的场景。
  • 计算资源受限:传统模型通常计算成本较低,适合嵌入式设备或边缘计算。

通过结合传统机器学习与 AI 大模型的优势,可以更好地应对不同场景的需求。



http://www.kler.cn/a/612005.html

相关文章:

  • flutter-第1章-配置环境
  • 我的世界模组开发进阶教程——生物群系
  • python深度评测:5大中文长度计算方案终极对决(你的选择可能一直是错的)
  • 【区块链 + 文化版权】慧形AI 知识分身 | FISCO BCOS 应用案例
  • ubuntu20.04安装nvidia-docker(解决有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源错误)
  • 树莓派(4B)使用教程-小白之路(NO.1)
  • Rust从入门到精通之精通篇:25.过程宏高级应用
  • MySQL 设置允许远程连接完整指南:安全与效率并重
  • 《Python实战进阶》No37: 强化学习入门:Q-Learning 与 DQN-加餐版1 Q-Learning算法可视化
  • 【前端vue】理解VUE前端框架中src下的api文件夹与views文件夹
  • 蓝桥杯(电子类)嵌入式第十一届设计与开发科目模拟试题
  • AI辅助下基于ArcGIS Pro的SWAT模型全流程高效建模实践与深度进阶应用
  • 面试题:RocketMQ 如何保证消息的顺序性
  • 04 单目标定实战示例
  • HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
  • ubuntu24 部署vnc server 使用VNC Viewer连接
  • Scala基础语法和简介
  • Cent OS7+Docker+Dify
  • SpringBoot实战——详解JdbcTemplate操作存储过程
  • 第十六届蓝桥杯模拟二(串口通信)