自学教程 学编程从这里开始

Python 机器学习库应用

Python 是机器学习最主流的编程语言,强大的生态依赖几个核心科学计算库。在机器学习项目里,NumPy、Pandas、Matplotlib、Scikit-learn 这四个库经常搭配在一起使用,各司其职、协同完成从数据读取、处理、运算、可视化到模型训练预测的完整流程。

1. 四大核心库简介

1.1 NumPy

NumPy(Numerical Python),底层数值计算库,是几乎所有机器学习库的基础。

  • 核心:ndarray 多维数组,比 Python 原生列表运算速度快很多
  • 用途:向量、矩阵运算、数值生成、数学计算、数据底层变换
  • 安装
pip install numpy
  • 简单示例
import numpy as np

# 创建数组
arr = np.array([1,2,3,4,5])
print(arr)
print(arr * 2)  # 向量化运算

1.2 Pandas

Pandas 表格数据处理库,专门用来处理结构化数据(csv、excel 表格)。

  • 核心:Series(一维序列)、DataFrame(二维表格)
  • 用途:读取数据集、清洗缺失值、筛选、统计、特征整理
  • 安装
pip install pandas
  • 简单示例
import pandas as pd

data = {
    "身高":[160,170,180],
    "体重":[50,60,75]
}
df = pd.DataFrame(data)
print(df)
print(df.describe()) # 统计信息

1.3 Matplotlib

Matplotlib 绘图可视化库,用来直观查看数据分布、对比结果。

  • 核心:绘图、折线图、散点图、直方图
  • 用途:探索性数据分析、查看数据趋势、模型结果可视化
  • 安装
pip install matplotlib
  • 简单示例
import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [2,4,6,8]
plt.plot(x,y)
plt.show()

⚠️ 如果图表不弹出:

  • VSCode:安装 Python 插件;Jupyter 可以加 %matplotlib inline
  • 服务器无图形界面:改用 plt.savefig("result.png") 保存图片

1.4 Scikit-learn(sklearn)

经典机器学习算法库,封装了大量传统机器学习模型、评估工具、数据划分工具。

  • 核心:数据集划分、特征处理、回归、分类、聚类、模型评估
  • 用途:训练模型、预测、计算准确率、划分训练集测试集
  • 安装
pip install scikit-learn
  • 简单示例
from sklearn.datasets import make_regression
X, y = make_regression(n_samples=100, n_features=1, noise=10)
print(X.shape, y.shape)

四大库分工一句话总结

  • Pandas:读表格、洗数据(管家)
  • NumPy:数值矩阵运算(计算器)
  • Matplotlib:画图看数据(显示器)
  • Scikit-learn:训练模型、做预测(算法工具箱)

2. 四库协同完整实战示例

目标:使用四个库,完成一个简单线性回归任务
流程:Pandas 构造/读取数据 → NumPy 数据转换 → sklearn 划分数据集+训练线性回归模型 → Matplotlib 可视化拟合结果

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 1. Pandas:构建数据集
data = {
    "x": [5, 8, 10, 13, 16, 18, 20, 23, 26, 30],
    "y": [20, 35, 42, 50, 65, 72, 80, 91, 105, 120]
}
df = pd.DataFrame(data)

# 2. NumPy:转为二维数组,sklearn要求特征是二维
X = np.array(df["x"]).reshape(-1, 1)
y = np.array(df["y"])

# 3. sklearn:划分训练集、测试集,训练模型
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)

# 预测 + 评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"模型系数: {model.coef_[0]:.2f}")
print(f"截距: {model.intercept_:.2f}")
print(f"均方误差 MSE: {mse:.2f}")

# 4. Matplotlib:可视化原始数据和拟合线
plt.scatter(X, y, color="blue", label="原始数据")
plt.plot(X, model.predict(X), color="red", label="拟合直线")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.title("线性回归拟合结果(四库协同演示)")
plt.show()

代码运行说明

  1. Pandas 创建表格数据;
  2. NumPy 把一维数据 reshape 成 sklearn 需要的二维特征格式;
  3. sklearn 拆分数据集、训练线性回归模型、评估误差;
  4. Matplotlib 绘制散点和拟合曲线直观展示效果。

3. 小结

  • NumPy 负责底层数值;Pandas 负责表格数据清洗;
  • Matplotlib 负责可视化探索;Scikit-learn 提供现成机器学习算法;
  • 真实机器学习项目几乎都是这套组合先行,后续深度学习才会引入 PyTorch / TensorFlow。

思考题

  1. 如果数据是 CSV 文件,你该怎么用 Pandas 读取?
  2. 为什么 sklearn 的特征 X 必须是二维数组?
  3. 把上面代码改成保存图片到本地,而不是弹窗展示,怎么改?

0 条笔记