avatar

机器学习a-z 多项式线性回归

基本原理

image.png

三种回归比较

  • 简单线性回归
  • 多元线性回归
  • 多项式线性回归

image.png

代码实现

有这样一个数据和例子

一个人的等级是6.5左右,判断它的薪水是16w

image.png

用线性回归器

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#导入数据
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values

#数据太少,用来拟合的数据不够

#特征缩放也不需要

#线性回归器模型的建立
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y) # 目的是为了比较


#图像化 线性模型
plt.scatter(X, y, color='red') #实际结果红色
plt.plot(X, lin_reg.predict(X), color='blue')
plt.title('Truth of Bluff (Linear Regression)')
plt.xlabel('Position Level')
plt.ylabel('Salary')
plt.show()

image.png

不是很精确

用多项式回归

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#导入数据
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X)
lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly, y)

#图像化 多项式模型
X_grid = np.arange(min(X),max(X),0.1)
X_grid = X_grid.reshape(len(X_grid),1);
plt.scatter(X, y, color='red') #实际结果红色
plt.plot(X_grid, lin_reg2.predict(poly_reg.fit_transform(X_grid)), color='blue')
plt.title('Truth of Bluff (Polynomial Regression)')
plt.xlabel('Position Level')
plt.ylabel('Salary')
plt.show()

image.png

四阶的效果很好了,我们还做了平滑的处理

预测

#预测 线性
lin_reg.predict(6.5)
#预测 多项式4阶
lin_reg2.predict(poly_reg.fit_transform(6.5))

结果:

330378

158862

用多项式回归的确实在16w左右,这个人很诚实

文章作者: Chen
文章链接: https://vccyb.gitee.io/myblog/2020/04/01/ML/ML-4/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 东川
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论