多个特征
本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 12 课,共 58 课。
房价不只取决于面积:步行到车站的距离远,会让房价降低。模型从这两方面学习,并画出平行线:
在代码中,X 会获取两列,而 coef_ 会为每个特征提供一个权重:
X = houses[["area_m2", "minutes_walk"]]
model = LinearRegression()
model.fit(X, houses["price"])
print(np.round(model.coef_, 1))这会打印:
[ 2.6 -5.1]权重对应 X 的列。其他特征保持不变时,每增加 1 m²,价格就增加 2.6 千美元;步行时间每增加 1 分钟,价格就减少 5.1 千美元。
权重的单位是目标相对于其特征单位的比例:每平方米对应的千数,每分钟对应的数量。
挑战
中等餐饮服务商根据过去 40 场活动的情况,为新活动报价,数据在 events.csv 中:guests、courses、months_ahead(提前预订的时间)和以美元计的 cost。起始代码会将一场新活动读入 new_event。
- 使用
features对成本进行LinearRegression拟合。 - 对每个特征,打印该特征增加 1 个单位会使费用增加或减少多少(保留 2 位小数)。
- 打印新活动的报价(保留 2 位小数)。
另一家餐饮服务商的结果:
Each extra guest adds 41.5 dollars
Each extra course adds 198.25 dollars
Each extra month booked ahead takes off 22.8 dollars
Quote: 4312.6 dollars亲手试试
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
# 每场过去的活动占一行:宾客人数、菜品道数、提前预订的月数、费用(美元)
events = pd.read_csv("events.csv")
features = ["guests", "courses", "months_ahead"]
units = ["guest", "course", "month booked ahead"]
# 新活动的数据,存为只有一行的表
guests = int(input())
courses = int(input())
months = int(input())
new_event = pd.DataFrame({"guests": [guests], "courses": [courses], "months_ahead": [months]})
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
监督学习中的所有课
自己练习: Python 在线编译器