HDU杭电--机器学习实验报告(二)

  • 实验目的

• 1、理解监督学习中回归之非线性回归(多项式回归);

• 2、掌握Sklearn提供的非线性回归模型;

• 3、理解线性回归和非线性回归的区别

  • 实验内容与要求
  1.   线性回归

• 线性回归(Linear Regression)是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

• 线性回归利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。

使用形如y=wTx+b的线性模型拟合数据输入和输出之间的映射关系的。

2. 非线性回归

•非线性回归是回归函数关于未知回归系数具有非线性结构的回归。 常用的处理方法有回归函数的线性迭代法、分段回归法、迭代最小二乘法等。

•非线性回归(Non-linear Regression)算法就是将非线性回归转化为线性回归,再按照线性回归求解。线性回归通常采用给定的函数值与模型预测值之差的平方和最小为损失函数, 并使用最小二乘法和梯度下降法来计算最终的拟合参数。

3.实验步骤

  • 实验程序与结果

# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 读取数据
data = np.genfromtxt('prices.txt', delimiter=',')
dX = data[:, 0].reshape(-1, 1) # x-尺寸
dY = data[:, 1].reshape(-1, 1) # y-价格
# 得出多项式特征(将特征矩阵转换为多项式特征表示的数据)
poly = PolynomialFeatures(degree=13)
dX_poly = poly.fit_transform(dX)
# 用线性回归建立多项式回归模型
poly_model = LinearRegression()
poly_model.fit(dX_poly, dY)
# 训练数据预测
min_x = min(dX)
max_x = max(dX)
x = np.linspace(min_x, max_x, 100).reshape(-1, 1)
# 将预测数据转换为多项式特征表示
x_poly = poly.transform(x)
y = poly_model.predict(x_poly)
plt.scatter(dX, dY, color='red') # 画出原始数据点
plt.plot(x, y, color='blue') # 画出预测结果
plt.xlabel('House Size')
plt.ylabel('price')
plt.show()

四、实验结果分析

上图为根据price.txt文件得出的非线性回归图形,我尝试更改过degree,发现其数值越大图像会越接近数据点,会越乱,在degree=13左右拟合效果最好。相对于线性回归,非线性回归的拟合效果更好,也会学习处理异常数据点,更贴合实际情况。

五、实验问题解答与体会

在这个实验中,我旨在通过分析房屋尺寸与价格之间的关系,并建立一个预测房屋价格的模型。我运用了Python编程语言以及相关的库来处理数据,其中包括从文件中读取数据、转换为适当的格式,并应用了非线性回归模型。

首先,我通过调用NumPy库中的genfromtxt函数从文件中读取了数据,并对数据进行了简单的处理。我将房屋尺寸和价格分别存储在变量 dX 和 dY 中,以便后续的分析和模型训练。然后,我使用PolynomialFeatures函数将原始特征数据转换为多项式特征数据,并设置了13次多项式的阶数,以捕捉数据中的非线性关系。

接下来,我创建了一个线性回归模型对象,并使用fit方法对多项式特征数据进行训练,从而得到了一个非线性回归模型。这个模型能够更好地拟合数据中的非线性关系,以便更准确地预测房屋价格。

通过这个实验,我深刻体会到了数据处理的重要性和可视化对数据理解的帮助。此外,我也意识到了在选择和训练模型时的重要性,特别是针对非线性数据关系的情况。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值