共计 1949 个字符,预计需要花费 5 分钟才能阅读完成。
基础准备:数学与编程
在开始 AI 学习前,建议掌握以下基础知识:

- 数学基础:线性代数(矩阵运算)、概率统计(均值 / 方差)、基础微积分(梯度概念)
- 编程工具:Python 3.8+(必备库:NumPy, Pandas, Matplotlib)
- 英语能力:能阅读技术文档(如 Scikit-learn 官方文档)
框架选择指南
- Scikit-learn
- 优点:API 简洁、文档完善、适合传统机器学习算法
- 缺点:不支持深度学习、GPU 加速
-
推荐场景:结构化数据分类 / 回归任务(如本文的鸢尾花分类)
-
TensorFlow
- 优点:工业级部署支持、移动端兼容性好
- 缺点:静态计算图调试困难
-
推荐场景:生产环境深度学习项目
-
PyTorch
- 优点:动态计算图、研究社区活跃
- 缺点:移动端支持较弱
- 推荐场景:学术研究或原型开发
实战:鸢尾花分类
数据加载与探索
from sklearn.datasets import load_iris
import pandas as pd
# 加载数据
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
# 查看数据概况
print(df.describe())
print('类别分布:', df['target'].value_counts())
数据预处理
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
# 特征标准化(重要!)scaler = StandardScaler()
X_scaled = scaler.fit_transform(df.iloc[:, :-1])
# 划分训练集 / 测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, df['target'], test_size=0.2, random_state=42
)
模型选择与训练
选择 SVM 而非神经网络的原因:
- 小样本数据(仅 150 条)
- 特征维度低(4 个特征)
- 快速验证需求
from sklearn.svm import SVC
from sklearn.metrics import classification_report
# 初始化模型
model = SVC(kernel='rbf', C=1.0, gamma='scale')
# 训练与评估
model.fit(X_train, y_train)
preds = model.predict(X_test)
print(classification_report(y_test, preds))
典型输出结果:
precision recall f1-score support
0 1.00 1.00 1.00 10
1 1.00 0.89 0.94 9
2 0.92 1.00 0.96 11
accuracy 0.97 30
macro avg 0.97 0.96 0.97 30
weighted avg 0.97 0.97 0.97 30
生产环境注意事项
特征工程
- 数值特征:标准化 / 归一化(如本例的
StandardScaler) - 类别特征:One-Hot 编码
- 特征组合:通过业务知识创建新特征
过拟合识别
- 训练集准确率 >> 测试集准确率
- 使用交叉验证(cross-validation)
- 添加正则化项(如 SVM 的 C 参数)
模型持久化
import joblib
# 保存模型与 scaler
joblib.dump(model, 'iris_svc.model')
joblib.dump(scaler, 'iris_scaler.bin')
# 加载使用
loaded_model = joblib.load('iris_svc.model')
延伸思考
-
模型部署
使用 Flask/FastAPI 将模型封装为 REST API:from fastapi import FastAPI app = FastAPI() @app.post('/predict') def predict(features: list): scaled = scaler.transform([features]) return {'class': int(model.predict(scaled)[0])} -
类别不平衡处理
- 重采样(过采样少数类 / 欠采样多数类)
- 类别权重(如 SVM 的
class_weight参数) - 使用 F1-score 替代准确率作为评估指标
总结
通过这个完整的 pipeline,我们实现了:
1. 数据加载与探索性分析
2. 标准化预处理
3. 选择适合小数据集的 SVM 模型
4. 模型评估与持久化
建议下一步尝试:
– 在其他数据集(如葡萄酒分类)复现流程
– 通过 GridSearchCV 优化超参数
– 学习 PCA 降维可视化数据分布
正文完
