多项式回归+房价与房屋尺寸的非线性拟合

多项式回归

  • 多项式回归(Polynomial
    Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。
  • 在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。后续的实例就是这个例子。
  • 多项式回归的最大优点就是可以通过增加X的高次项对实测点进行逼近,直到满意为止。
  • 事实上,多项式回归可以处理相当一类非线性问题,它在回归分析中占有重要的地位,因为任一函数都可以分段用多项式来逼近。
    在上一篇文章中的房价与房屋尺寸实例中,是运用直线来拟合数据输入和输出之间的线性关系。不同于线性回归,多项式回归是使用曲线拟合数据的输入与输出的映射关系。
import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
datasets_x = []#建立datasets_x和datasets_y用来存储数据中的房屋尺寸和房屋成交价格
datasets_y = []
fr = open('data/prices.txt','r')
lines = fr.readlines()#一次读取所有数据
#print(lines)
for line in lines:
    items = line.strip().split(',')#去除逗号
    datasets_x.append(int(items[0]))
    datasets_y.append(int(items[1]))
length = len(datasets_x)
datasets_X=np.array(datasets_x).reshape([length,1])#将datasets_x转化为数组,并变为二维,以符合线性回归拟合函数
datasets_Y=np.array(datasets_y)
minX=min(datasets_X)
maxX=max(datasets_X)
X=np.arange(minX,maxX).reshape([-1,1])
#degree=2表示建立datasets_X的二次多项式特征x_poly
poly_reg=PolynomialFeatures(degree=2)
x_poly = poly_reg.fit_transform(datasets_X)
#使用线性莫想学习x_poly和datasets_y之间的映射关系
lin_reg_2 = linear_model.LinearRegression()
lin_reg_2.fit(x_poly,datasets_Y)
plt.scatter(datasets_X,datasets_Y,color='red')#scatter函数绘制数据点
plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='blue')#plot函数用来绘制直线,这里表示绘制回归线
plt.xlabel("尺寸")
plt.ylabel("价格")
plt.show()

在这里的多项式回归实际上是先将变量X处理成多项式特征,然后使用线性模型学习多项式特征的参数,以达到多项式回归的目的。在这里插入图片描述
可视化结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值