回归¶
设置¶
In [ ]:
Copied!
pip install ydf -U
pip install ydf -U
什么是回归?¶
回归是预测数值的任务,例如计数、测量或数量。例如,预测动物的年龄或产品的成本就是回归问题。默认情况下,回归模型的输出是期望值,即最小化平方误差的值。回归标签可以是整数或浮点值。
训练回归模型¶
模型的任务(例如,分类、回归、排序、提升)由学习者参数 task
决定。
In [1]:
Copied!
# 加载库
import ydf # Yggdrasil决策森林
import pandas as pd # 我们使用 Pandas 加载小型数据集。
# 下载一个分类数据集,并将其加载为Pandas DataFrame。
ds_path = "https://raw.githubusercontent.com/google/yggdrasil-decision-forests/main/yggdrasil_decision_forests/test_data/dataset"
all_ds = pd.read_csv(f"{ds_path}/abalone.csv")
# 将数据集随机划分为训练集(70%)和测试集(30%)
all_ds = all_ds.sample(frac=1)
split_idx = len(all_ds) * 7 // 10
train_ds = all_ds.iloc[:split_idx]
test_ds = all_ds.iloc[split_idx:]
# 打印前5个训练样本
train_ds.head(5)
# 加载库
import ydf # Yggdrasil决策森林
import pandas as pd # 我们使用 Pandas 加载小型数据集。
# 下载一个分类数据集,并将其加载为Pandas DataFrame。
ds_path = "https://raw.githubusercontent.com/google/yggdrasil-decision-forests/main/yggdrasil_decision_forests/test_data/dataset"
all_ds = pd.read_csv(f"{ds_path}/abalone.csv")
# 将数据集随机划分为训练集(70%)和测试集(30%)
all_ds = all_ds.sample(frac=1)
split_idx = len(all_ds) * 7 // 10
train_ds = all_ds.iloc[:split_idx]
test_ds = all_ds.iloc[split_idx:]
# 打印前5个训练样本
train_ds.head(5)
Out[1]:
Type | LongestShell | Diameter | Height | WholeWeight | ShuckedWeight | VisceraWeight | ShellWeight | Rings | |
---|---|---|---|---|---|---|---|---|---|
3191 | M | 0.650 | 0.515 | 0.180 | 1.3315 | 0.5665 | 0.3470 | 0.405 | 13 |
1752 | M | 0.710 | 0.560 | 0.220 | 2.0150 | 0.9215 | 0.4540 | 0.566 | 11 |
2238 | I | 0.460 | 0.335 | 0.110 | 0.4440 | 0.2250 | 0.0745 | 0.110 | 8 |
3 | M | 0.440 | 0.365 | 0.125 | 0.5160 | 0.2155 | 0.1140 | 0.155 | 10 |
2685 | M | 0.625 | 0.480 | 0.145 | 1.0850 | 0.4645 | 0.2445 | 0.327 | 10 |
标签列为:
In [2]:
Copied!
train_ds["Rings"]
train_ds["Rings"]
Out[2]:
3191 13 1752 11 2238 8 3 10 2685 10 .. 1845 8 603 11 3264 12 1268 11 2104 11 Name: Rings, Length: 2923, dtype: int64
我们可以训练一个回归模型:
In [3]:
Copied!
model = ydf.GradientBoostedTreesLearner(label="Rings",
task=ydf.Task.REGRESSION).train(train_ds)
model = ydf.GradientBoostedTreesLearner(label="Rings",
task=ydf.Task.REGRESSION).train(train_ds)
Train model on 2923 examples Model trained in 0:00:00.590275
回归模型的评估使用 RMSE(均方根误差)。
In [4]:
Copied!
evaluation = model.evaluate(test_ds)
print(evaluation)
evaluation = model.evaluate(test_ds)
print(evaluation)
RMSE: 2.13062 num examples: 1254 num examples (weighted): 1254
您可以绘制更丰富的评估图,增加更多的图表。
In [5]:
Copied!
evaluation
evaluation
Out[5]: