之前学习了单一线性回归和多元线性回归,这次来学习下多项线性回归,那什么事多项线性回归呢?先看下图Polynomial Linear Regression
多项目线性回归表达式来,上代码
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#import the dataset
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values
吃进去的数据是这样(样例数据)
样例数据(级别与薪资)来生成多项模型
#多项线性模型
#项 = 几次方 【1,2,3,4,5】 直线 【1,4,9,16,25】【1,8,27,84,125】 曲线
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 2) #转成平方
X_poly = poly_reg.fit_transform(X)
来查看先X_poly
X_poly为什么前面多 了一列1,解释请看下面公式,进一步理解什么是多项线性回归
Y = 2º + 2¹ + 2² (用2距离)
为了跟好了理解下多项详细回归,我们先用数据
(1)、生成单一线性模型
#单一 线性回归
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)
(2)、可视化
通过单一线性回归得出来的可视化图#把数据可视化
plt.scatter(X,y,color = "red")
#先用单一线性回归的模型
plt.plot(X,lin_reg.predict(X), color = "blue")
plt.title("Truth or Bluff(Linear Regression)")
plt.xlabel("Position level")
plt.ylabel("Salary")
plt.show()
(3)、通过这种图可以发现,这个模型的精度非常低,几乎无法预测、下面让我们再来看下,通过多项线性模型得出的来的图。
代码:
模型
#多项线性模型
#项 = 几次方 【1,2,3,4,5】 直线 【1,4,9,16,25】【1,8,27,84,125】 曲线
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 2) #转成平方 3、立方 4、 可以更换尝试
X_poly = poly_reg.fit_transform(X)
lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly, y)
通过多项线性回归(平方)产生的图 通过多项线性回归(立方)产生的图 通过多项线性回归(4次方)产生的图#把数据可视化
plt.scatter(X,y,color = "red")
#多项线性回归的模型
plt.plot(X,lin_reg2.predict(poly_reg.fit_transform(X)), color = "blue")
plt.title("Truth or Bluff(PolynomialFeatures)")
plt.xlabel("Position level")
plt.ylabel("Salary")
plt.show()
可以看到4次方的时候,模型的精确度越来越高
通过两个模型对6.5级别的薪资 进行下预测看下那个精度高些,明显是多项线性模型 预测的是158862
线性预测的结果是:array([[ 330378.78787879]])#作出预测
lin_reg.predict(6.5) #array([[ 330378.78787879]])
lin_reg2.predict(poly_reg.fit_transform(6.5)) #array([[ 158862.4526516]])
那么问题又来了,选择使用什么样的模型,或者如何提高模型的精确度,请看“SVR”
网友评论