回归¶
设置¶
In [ ]
已复制!
pip install ydf -U
pip install ydf -U
什么是回归?¶
回归是预测数值的任务,例如计数、测量值或数量。例如,预测动物的年龄或产品的成本都是回归问题。默认情况下,回归模型的输出是期望值,即最小化平方误差的值。回归标签可以是整数或浮点值。
训练回归模型¶
模型的任务(例如,分类、回归、排序、提升)由学习器参数 task
确定。
In [1]
已复制!
# Load libraries
import ydf # Yggdrasil Decision Forests
import pandas as pd # We use Pandas to load small datasets
# Download a classification dataset and load it as a 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")
# Randomly split the dataset into a training (70%) and testing (30%) dataset
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:]
# Print the first 5 training examples
train_ds.head(5)
# 导入库 import ydf # Yggdrasil Decision Forests 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]
类型 | 最长壳长 | 直径 | 高度 | 总重量 | 去壳重量 | 内脏重量 | 壳重 | 环数 | |
---|---|---|---|---|---|---|---|---|---|
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]
已复制!
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]
已复制!
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]
已复制!
evaluation = model.evaluate(test_ds)
print(evaluation)
evaluation = model.evaluate(test_ds) print(evaluation)
RMSE: 2.13062 num examples: 1254 num examples (weighted): 1254
您可以绘制包含更多图表的丰富评估结果。