共计 1662 个字符,预计需要花费 5 分钟才能阅读完成。
机器学习基础概念
机器学习是让计算机通过数据自动学习规律的技术,无需显式编程。简单说就是:用历史数据训练模型,让模型学会预测或分类。举个例子,你给模型看 1000 张猫狗图片并标注,它就能学会区分新图片是猫还是狗。

- 监督学习 :数据集有明确答案(如房价预测)
- 无监督学习 :数据无标签(如客户分群)
- 特征(Feature):数据的输入变量(如房屋面积)
- 标签(Label):要预测的结果(如房价)
数据准备四步法
- 收集数据 :使用公开数据集(如 Kaggle)或自己采集
- 清洗数据 :处理缺失值(用平均值填充)、删除重复项
- 特征工程 :将文本转数字(One-Hot 编码)、归一化数值(0- 1 缩放)
- 划分数据集 :70% 训练集 + 30% 测试集(用
train_test_split)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
模型选择指南
| 模型类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 线性回归 | 房价预测等连续值预测 | 简单、可解释性强 | 只能处理线性关系 |
| 决策树 | 分类和回归都适用 | 无需特征缩放 | 容易过拟合 |
| 随机森林 | 复杂分类 / 高精度需求 | 抗过拟合、并行计算 | 计算资源消耗大 |
新手推荐 :从逻辑回归(分类)或线性回归(预测)开始入门
完整代码实战(鸢尾花分类)
# 1. 导入库
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 2. 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 3. 划分数据集(自动随机打乱)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 4. 创建并训练模型
model = LogisticRegression(max_iter=200) # 增加迭代次数保证收敛
model.fit(X_train, y_train)
# 5. 预测测试集
predictions = model.predict(X_test)
# 6. 评估准确率
print(f"模型准确率:{accuracy_score(y_test, predictions):.2%}")
关键参数说明:
– max_iter:最大迭代次数,数据复杂时需要增加
– test_size:测试集比例,常用 20%-30%
模型评估三大指标
- 准确率(Accuracy):正确预测的比例,适合均衡数据集
- 精确率(Precision):预测为正例中实际为正的比例,关注误报(如垃圾邮件过滤)
- 召回率(Recall):实际为正例中被正确预测的比例,关注漏报(如疾病检测)
from sklearn.metrics import classification_report
print(classification_report(y_test, predictions))
部署避坑指南
- 特征一致性 :线上数据必须与训练数据格式完全相同
- 性能监控 :记录预测耗时和内存使用,超阈值时报警
- 模型更新 :定期用新数据重新训练(建议每周 / 月)
- 常见错误 :
- 忘记对线上数据做相同的归一化
- 未处理输入数据中的缺失值
- Python 环境依赖版本冲突
动手练习建议
- 在 Kaggle 下载 Titanic 数据集,尝试预测乘客生存率
- 比较逻辑回归、决策树、随机森林的准确率差异
- 添加新特征(如家庭成员数量)观察效果提升
- (进阶)将模型封装为 Flask API 提供 HTTP 服务
通过这个完整流程,你现在应该能够:
– 理解机器学习的基本工作流程
– 使用 scikit-learn 构建简单模型
– 评估模型表现并优化
– 避免常见的部署陷阱
接下来就是多实践——真正的理解都来自于亲手调试代码和解决报错的过程。遇到问题时,记得查阅官方文档和 Stack Overflow,这是每个数据科学家的必经之路。
正文完
