文章
Python 教程拆解索引 · 06:数据分析与机器学习
阅读数据加载中…
点赞数据加载中…
说明:本文基于
Day66-80/、Day81-90/做原创教学整理,不复写原教程内容。
本篇对应材料:
66.数据分析概述.md、70-74.Pandas的应用*.md、75-76.数据可视化*.md、81.人工智能和机器学习概述.md、82.k最近邻分类.md
定位更正:这一页不再承担“大而全的数据教程”,而只做专题入口。Pandas、kNN、可视化、回归、聚类这些都应该拆开讲。
本章细教程
已经拆开的源文件
| 原仓库文件 | 主题 | 教程 |
|---|---|---|
Day66-80/70.Pandas的应用-1.md |
DataFrame 读表、清洗、分组、透视 | 06A |
Day81-90/82.k最近邻分类.md |
kNN 距离、投票、k 值 | 06B |
下一批应该继续拆的文件
Day66-80/68.NumPy的应用-1.mdDay66-80/75.数据可视化-1.mdDay66-80/77.概率统计基础.mdDay66-80/79.相关和回归.mdDay81-90/83.决策树.mdDay81-90/86.K-均值聚类.md
这部分如果只是讲“NumPy 很重要,Pandas 很重要,机器学习要理解流程”,那还是废话。
所以今天直接做一个从数据表到最小模型的实战。
今天你要做出的结果
- 用 Pandas 读入小数据集;
- 做一次最基本的数据清洗和统计;
- 用 scikit-learn 训练一个最小分类模型。
Step 1:准备依赖
mkdir -p practice/day06
cd practice/day06
python -m venv .venv
source .venv/bin/activate
pip install pandas scikit-learn
Step 2:准备一个小 CSV
新建 practice/day06/sales.csv:
day,visitors,orders,is_promo
1,120,12,1
2,98,7,0
3,135,15,1
4,80,4,0
5,160,22,1
6,90,5,0
Step 3:先做分析,不要急着建模
新建 practice/day06/analyze.py:
import pandas as pd
df = pd.read_csv("sales.csv")
df["conversion_rate"] = df["orders"] / df["visitors"]
print("原始数据:")
print(df)
print()
print("平均访客数:", df["visitors"].mean())
print("平均下单数:", df["orders"].mean())
print("平均转化率:", round(df["conversion_rate"].mean(), 4))
print()
print("按活动分组后的平均下单数:")
print(df.groupby("is_promo")["orders"].mean())
运行:
python analyze.py
这一步就是 Day66-80 的核心:先看懂数据,再谈模型。
Step 4:再做一个最小分类任务
现在把问题改成:根据访客数和是否活动,判断“订单是否高于 10”。
新建 practice/day06/model_demo.py:
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
df = pd.read_csv("sales.csv")
df["target"] = (df["orders"] > 10).astype(int)
X = df[["visitors", "is_promo"]]
y = df["target"]
model = DecisionTreeClassifier(max_depth=2, random_state=42)
model.fit(X, y)
sample = [[110, 0], [150, 1]]
pred = model.predict(sample)
print("预测结果:", pred.tolist())
运行:
python model_demo.py
你现在就完成了一条最小闭环:
- 读数据;
- 造特征;
- 定义目标;
- 训练模型;
- 预测新样本。
为什么这一步比空讲算法有用
因为大多数人卡住的地方根本不是“什么是决策树”,而是:
- 数据怎么读进来;
- 目标列怎么定义;
- 特征列怎么选;
- 预测时输入长什么样。
只要这几步你亲手走过一次,后面看 kNN、SVM、回归、KMeans 才会有抓手。
继续往前,你可以怎么练
往分析侧走
- 给
sales.csv增加缺失值; - 练习清洗;
- 练习分组统计和透视;
- 补图表。
往机器学习侧走
- 把决策树换成
KNeighborsClassifier; - 把分类目标改成回归目标;
- 增加训练集 / 测试集拆分。
本篇练习
- 新增一列
avg_order_value,自己编一点数据。 - 尝试用
train_test_split划分训练集和测试集。 - 把模型换成 kNN,观察输出变化。
常见坑
- 坑 1:刚开始就想上深度学习。 数据分析地基没打稳,很快会虚。
- 坑 2:只会调库,不知道目标列是什么。 这时模型训练几乎没有意义。
- 坑 3:连分析和建模的边界都没分清。 先理解,再建模。
上一篇:Python 教程拆解 · 05:网络数据采集
下一篇:Python 教程拆解 · 07:项目交付、工具链与表达