回顾:葡萄酒近邻
本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 10 课,共 58 课。
挑战
简单像本章第一张地图那样,为葡萄酒绘制一张地图。起始代码将 178 种葡萄酒分成不同集合(两个特征,品种编号为 0 到 2),列出 ks 并标注图表。
- 对两组数据进行缩放,并在训练葡萄酒数据上拟合。
- 打印测试准确率最高时的 k(目前如此:第 7 章会提供更公平的评估)。
- 使用这个 k 填充地图:网格
xx、yy,大小为 100 乘 100,两个方向的范围都是 -3 到 3,预测结果放在zz中。 - 在地图上方绘制缩放后的训练葡萄酒数据点,使用
names中的标签;添加图例。
使用酒精和黄酮类化合物这两个特征:
Best k: 13 (test accuracy 0.956)Coddy 会描述你的地图。
亲手试试
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# 来自三个葡萄品种的 178 款葡萄酒,类别为 0、1、2
wine = load_wine()
# 第 6 列和第 12 列: flavanoids 和脯氨酸
X = wine.data[:, [6, 12]]
y = wine.target
names = ["cultivar A", "cultivar B", "cultivar C"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 32, 2) # k = 1, 3, 5, ..., 31
fig, ax = plt.subplots()
ax.set_title("Wine Neighbors")
ax.set_xlabel("flavanoids (scaled)")
ax.set_ylabel("proline (scaled)")
# 在下方编写你的代码
监督学习中的所有课
自己练习: Python 在线编译器