Strava

mooc机器学习第九天-多项式回归

Mooc上一篇的房屋和价格回归预测使用的一元线性回归,这次该用多项式看看拟合效果有什么变化。

1.多项式原理简单介绍

(1).基本概念

多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个 时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。 

        

 

 

在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。 

多项式回归的最大优点就是可以通过增加x的高次项对实测点进行逼近,直至满意为止。 

 

 

事实上,多项式回归可以处理相当一类非线性问题,它在回归分析 中占有重要的地位,因为任一函数都可以分段用多项式来逼近。

 

 

 

2.代码

 

import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn import  linear_model
plt.rcParams['font.sans-serif']=['SimHei']

datasets_X=[]
datasets_Y=[]
fr=open('./prices.txt',
        'r')
lines=fr.readlines()
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_Y=np.array(datasets_Y)
# print(datasets_X)

maxX=np.max(datasets_X)
minX=np.min(datasets_X)
X=np.arange(minX,maxX).reshape([-1,1])


#调用算法
poly_reg=PolynomialFeatures(degree=2)
#degree=2表示建立datasets_X的二 次多项式特征X_poly。
#更该数值可以提高曲线向真实点的逼近效果
X_poly=poly_reg.fit_transform(datasets_X)#利用创建好的特称来训练

#创建线性回归器
lin_reg_2=linear_model.LinearRegression()
lin_reg_2.fit(X_poly,datasets_Y)



#图像
plt.scatter(datasets_X,datasets_Y,color='r')
plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='b')
plt.xlabel('Area')
plt.title('房屋价格和面积关系非线性拟合')
plt.ylabel('Price')
plt.show()

  

 

 图示效果为4次多项式特征

 

参考:https://blog.csdn.net/bxg1065283526/article/details/80043049

posted @ 2020-07-15 21:57  cheflone  阅读(387)  评论(0编辑  收藏  举报