xgboost回归预测模型_直播案例 | 使用回归模型预测鲍鱼年龄

本文通过探索性数据分析处理鲍鱼数据,使用Numpy实现线性回归和岭回归,以及LASSO构建预测模型。通过MAE、决定系数评估模型效果,展示残差图和正则化路径,揭示回归模型在预测鲍鱼年龄中的应用。
摘要由CSDN通过智能技术生成

获取案例链接、直播课件、数据集在本公众号内发送“机器学习”。

鲍鱼是一种贝类,在世界许多地方被认为是美味佳肴。是铁和泛酸的极好来源,也是澳大利亚、美洲和东亚的营养食品资源和农业。100克鲍鱼就能给人体提供超过 20% 上述每日摄入营养素。鲍鱼的经济价值与年龄正相关。因此,准确检测鲍鱼的年龄对养殖户和消费者确定鲍鱼的价格具有重要意义。

然而,目前确定鲍鱼年龄的技术是相当昂贵和低效的。农场主通常把鲍鱼的壳割下来,用显微镜数鲍鱼环的数量,以估计鲍鱼的年龄。因此判断鲍鱼的年龄很困难,主要是因为鲍鱼的大小不仅取决于年龄,而且还取决于食物的供应情况。此外,鲍鱼有时会形成所谓的“发育不良”群体,这些群体的生长特性与其他鲍鱼种群有很大不同。这种复杂的方法增加了成本,限制了应用范围。本案例的目标是使用机器学习中的回归模型,找出最佳的指标来预测鲍鱼环数,进而预测鲍鱼的年龄。

1 数据集探索性分析

我们首先将鲍鱼数据集 abalone_dataset.csv 读取为 Pandas 的 DataFrame 格式。

import pandas as pd
import warnings
warnings.filterwarnings('ignore')
data = pd.read_csv("./input/abalone_dataset.csv")
data.head()
3b931d81e100db5d392e3f356dc43e8e.png

查看数据集中样本数量和特征数量。

data.shape
553ffc1c7499f7d83ecdae1df786a1a8.png
89649ea5064d90db398149d5e05a1e4f.png

数据集一共有 4177 个样本,每个样本有 9 个特征。其中 rings 为鲍鱼环数,能够代表鲍鱼年龄,是预测变量。除了 sex 为离散特征,其余都为连续变量。

首先借助 seaborn 中的 countplot 函数绘制条形图,观察 sex 列的取值分布情况。

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.countplot(x = "sex", data = data)
4d060d900ba4b175185bfdedeb5a6abc.png
a1d65546f56187d47099e46b1225f0fd.png

对于连续特征,可以使用 seaborn 的 distplot 函数绘制直方图观察特征取值情况。我们将 8 个连续特征的直方图绘制在一个 4 行 2 列的子图布局中。

i = 1 # 子图记数
plt.figure(figsize=(16, 8))
for col in data.columns[1:]:
    plt.subplot(4,2,i)
    i = i + 1
    sns.distplot(data[col])  
plt.tight_layout()
bfc2c57c644f4a3f191adf1829ef0cef.png
sns.pairplot(data,hue="sex")
06835fb4f9450a41f05a20e9b3ee6621.png
9473f44e1e136f7f96ee21539fe381ef.png

从以上连续特征之间的散点图我

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用MATLAB实现线性回归预测鲍鱼年龄的步骤: 1.首先加载数据集,可以使用MATLAB自带的load函数加载数据集: ```matlab data = load('abalone.txt'); ``` 2.然后,将数据集分为训练集和测试集。这里我们将80%的数据用于训练,20%的数据用于测试: ```matlab train_size = round(0.8 * size(data, 1)); train_data = data(1:train_size, :); test_data = data(train_size+1:end, :); ``` 3.接下来,我们需要将数据集中的特征和标签分开。在这个数据集中,第一列到第八列是特征,最后一列是标签: ```matlab X_train = train_data(:, 1:8); y_train = train_data(:, end); X_test = test_data(:, 1:8); y_test = test_data(:, end); ``` 4.然后,我们可以使用MATLAB自带的regress函数来训练线性回归模型: ```matlab b = regress(y_train, [ones(size(X_train, 1), 1) X_train]); ``` 其中,b是线性回归模型的系数。 5.最后,我们可以使用训练好的模型预测测试集的标签,并计算预测结果的均方误差: ```matlab y_pred = [ones(size(X_test, 1), 1) X_test] * b; mse = mean((y_pred - y_test).^2); ``` 完整的MATLAB代码如下: ```matlab data = load('abalone.txt'); train_size = round(0.8 * size(data, 1)); train_data = data(1:train_size, :); test_data = data(train_size+1:end, :); X_train = train_data(:, 1:8); y_train = train_data(:, end); X_test = test_data(:, 1:8); y_test = test_data(:, end); b = regress(y_train, [ones(size(X_train, 1), 1) X_train]); y_pred = [ones(size(X_test, 1), 1) X_test] * b; mse = mean((y_pred - y_test).^2); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值