1.sklearn 框架初识
学习内容:
- 学会安装机器学习库:pip install scikit-learn
- 学会导入库:import sklearn
- 明白 sklearn 是 Python 里常用的机器学习框架,很多常见算法和数据预处理工具都可以直接调用
2. KNN 实现分类任务
- 学会使用 KNeighborsClassifier 做分类
- 知道分类任务的目标是预测“类别”
- 理解 KNN 的核心思想:看离目标最近的 K 个邻居,大多数属于哪一类,就预测成哪一类
代码流程:
- 导入模型
- 准备训练数据 x_train
- 准备标签 y_train
- 创建 KNN 分类器
- 调用 fit() 训练
- 调用 predict() 预测
核心代码
python
from sklearn.neighbors import KNeighborsClassifier
x_train = [[0], [1], [2], [3]]
x_test = [[4]]
y_train = [0, 0, 0, 1]
knn_model = KNeighborsClassifier(n_neighbors=2)
knn_model.fit(x_train, y_train)
y_pred = knn_model.predict(x_test)
print(y_pred)
from sklearn.neighbors import KNeighborsClassifier
x_train = [[0], [1], [2], [3]]
x_test = [[4]]
y_train = [0, 0, 0, 1]
knn_model = KNeighborsClassifier(n_neighbors=2)
knn_model.fit(x_train, y_train)
y_pred = knn_model.predict(x_test)
print(y_pred)重点理解:
- x_train 是特征数据
- y_train 是标签数据
- n_neighbors=2 表示找最近的 2 个邻居
- 这个例子本质是在做“二分类”
补充理解:
- 如果邻居中类别票数相同,结果可能和底层规则有关,所以实际使用中常设置奇数个邻居,比如 3、5
- KNN 实现回归任务 文件:02_knn实现回归任务.py
学习内容:
- 学会使用 KNeighborsRegressor 做回归
- 知道回归任务的目标是预测“具体数值”
- 理解 KNN 回归思想:找到最近的 K 个样本,对它们的目标值做平均或加权平均
python
from sklearn.neighbors import KNeighborsRegressor
x_train = [[0], [1], [2], [3]]
x_test = [[4]]
y_train = [70, 80, 100, 110]
knn_model = KNeighborsRegressor(n_neighbors=3)
knn_model.fit(x_train, y_train)
y_pred = knn_model.predict(x_test)
print(y_pred)重点理解:
- 分类预测的是类别,比如“是不是垃圾邮件”
- 回归预测的是连续值,比如“房价是多少”
- n_neighbors=3 表示参考最近的 3 个邻居
- 预测结果 96.666... 说明 KNN 回归会根据邻居的目标值综合得到一个数值结果
4. 特征数据归一化
学习内容:
- **学会使用 **MinMaxScaler
- **理解归一化的作用:把不同范围的数据缩放到统一范围,通常是 **[0, 1]
- 明白归一化常用于特征数值差异比较大的情况
python
from sklearn.preprocessing import MinMaxScaler
x_train = [
[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]
]
model = MinMaxScaler()
new_x_train = model.fit_transform(x_train)
print(new_x_train)重点理解:
- fit_transform() = 先学习数据规律,再完成转换
- 归一化公式:
X' = (X - Xmin) / (Xmax - Xmin)
- 归一化后,不同特征的量纲差异会减小,更适合距离类算法,比如 KNN
5. 特征数据标准化
学习内容:
- 学会使用 StandardScaler
- 理解标准化的作用:把数据处理成均值为 0、标准差为 1
- 知道标准化在很多机器学习任务中更常用,所以文件里也标了“推荐”
python
from sklearn.preprocessing import StandardScaler
x_train = [
[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]
]
model = StandardScaler()
new_x_train = model.fit_transform(x_train)
print(new_x_train)重点理解:
- 标准化公式:
X' = (X - mean) / std
- 标准化后的数据不一定在 [0, 1]
- 适合数据分布较复杂的场景,对很多模型效果更稳定