树会提问
本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 27 课,共 58 课。
本章以一棵解释农场贷款的树作为结尾。决策树就像“二十个问题”游戏:每次只问一个关于特征的是非问题,直到得出答案:
训练过程会为每个问题挑选答案,使其尽可能清晰地划分类别:
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train) # 花瓣长度和宽度,单位为 cm
print(tree.predict([[4.5, 1.4]]))这会输出 [1],versicolor。max_depth=2 允许每条路径提出两个问题。无需缩放:每个问题只读取一个特征。
挑战
中等一家相机租赁店会在器材可能逾期归还时发送提醒。起始代码会拆分过去的租赁记录,并将一笔新租赁记录读入单行表 new_rental。
- 训练一棵决策树,每条路径最多包含 2 个问题(
random_state=0)。 - 打印测试准确率(保留 3 位小数),并打印对这笔新租赁记录的判断:1 表示
likely late,0 表示likely on time。
对于另一家店:
Test accuracy: 0.792
This rental: likely on time亲手试试
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# 以往的租赁记录:late 中的 1 表示装备逾期归还
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)
# 一笔新的租赁:预订周数、装备价值、客户年龄,以及该客户此前逾期归还的次数
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
监督学习中的所有课
自己练习: Python 在线编译器