Menu
CoddyTech

拟合与预测

本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 3 课,共 58 课。

每个 scikit-learn 模型都通过两次调用来工作。fit 使用标签学习训练数据行,predict 则为模型从未见过的数据行添加标签:

示意图:六只宠物,旁边是包含体重和耳朵长度的 X_train,以及 y_train 中的三只猫和三只狗,一起经过 fit 输入模型。两只新宠物 X_new 经过 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']。新行会以表格的形式添加,每只宠物占一行。

创建、拟合、预测:本单元中的每个模型都遵循这三个步骤。

challenge icon

挑战

简单

一个观鸟俱乐部的应用会根据鸟的翼展和体重识别鸟类。起始代码会拆分俱乐部的 birds.csv,并将今晚观测到的鸟读入表 spotted。

  1. 创建一个 k 近邻模型,并用训练集中的鸟类数据训练它。
  2. 一次调用就预测所有观测到的鸟。
  3. 每只鸟打印一行,如下所示。

另一次观鸟活动中观测到三只鸟时:

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})

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

监督学习中的所有课

自己练习: Python 在线编译器