拟合与预测
本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 3 课,共 58 课。
每个 scikit-learn 模型都通过两次调用来工作。fit 使用标签学习训练数据行,predict 则为模型从未见过的数据行添加标签:
本次学习之旅第一课介绍的模型是k 近邻:它会根据与某一行最接近的训练行来为该行分类。宠物的体重(kg)和耳朵长度(cm):
from sklearn.neighbors import KNeighborsClassifier
X_train = np.array([[4, 6], [5, 7], [3, 5], [30, 10], [25, 12], [35, 11]])
y_train = np.array(["cat", "cat", "cat", "dog", "dog", "dog"])
model = KNeighborsClassifier()
model.fit(X_train, y_train)
print(model.predict([[6, 6], [28, 11]]))这会打印 ['cat' 'dog']。新行会以表格的形式添加,每只宠物占一行。
创建、拟合、预测:本单元中的每个模型都遵循这三个步骤。
挑战
简单一个观鸟俱乐部的应用会根据鸟的翼展和体重识别鸟类。起始代码会拆分俱乐部的 birds.csv,并将今晚观测到的鸟读入表 spotted。
- 创建一个 k 近邻模型,并用训练集中的鸟类数据训练它。
- 一次调用就预测所有观测到的鸟。
- 每只鸟打印一行,如下所示。
另一次观鸟活动中观测到三只鸟时:
Bird 1: sparrow
Bird 2: blackbird
Bird 3: robin亲手试试
import pandas as pd
from sklearn.model_selection import train_test_split
# 俱乐部已命名的每只鸟占一行:翼展单位为 cm,体重单位为克
birds = pd.read_csv("birds.csv")
X = birds[["wingspan_cm", "weight_g"]]
y = birds["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 今晚散步时的记录:先输入鸟的数量,再输入每只鸟的翼展和体重
count = int(input())
spans = []
weights = []
for i in range(count):
spans.append(float(input()))
weights.append(float(input()))
spotted = pd.DataFrame({"wingspan_cm": spans, "weight_g": weights})
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
监督学习中的所有课
自己练习: Python 在线编译器