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()
代码运行说明
- Pandas 创建表格数据;
- NumPy 把一维数据 reshape 成 sklearn 需要的二维特征格式;
- sklearn 拆分数据集、训练线性回归模型、评估误差;
- Matplotlib 绘制散点和拟合曲线直观展示效果。
3. 小结
- NumPy 负责底层数值;Pandas 负责表格数据清洗;
- Matplotlib 负责可视化探索;Scikit-learn 提供现成机器学习算法;
- 真实机器学习项目几乎都是这套组合先行,后续深度学习才会引入 PyTorch / TensorFlow。
思考题
- 如果数据是 CSV 文件,你该怎么用 Pandas 读取?
- 为什么 sklearn 的特征 X 必须是二维数组?
- 把上面代码改成保存图片到本地,而不是弹窗展示,怎么改?
0 条笔记