机器学习之多项式回归

原创 2018年04月15日 12:03:58

零、模型

1、公式

y = b0 + b1X1+B2X2^2 +BnXn^n

2.R平方

R^2 = 1- 剩余平方和/共平方和

R^2为值为0到1,越大拟合效果越好

3.广义R平方(增加惩罚作用)

R^2 = 1- 剩余平方和/共平方和 *((n-1)/n-p-1)

n :数据个数 p:自变量个数

一、导入标准库

In [16]:
# Importing the libraries 导入库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 使图像能够调整
%matplotlib notebook 
#中文字体显示  
plt.rc('font', family='SimHei', size=8)

二、导入数据

In [10]:
# Importing the dataset 导入数据
dataset = pd.read_csv('./Position_Salaries.csv')

X = dataset.iloc[:, 1:2].values  # 职位级别
y = dataset.iloc[:, 2].values    # 薪水
dataset
Out[10]:
 PositionLevelSalary
0Business Analyst145000
1Junior Consultant250000
2Senior Consultant360000
3Manager480000
4Country Manager5110000
5Region Manager6150000
6Partner7200000
7Senior Partner8300000
8C-level9500000
9CEO101000000
In [11]:
X 
Out[11]:
array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10]], dtype=int64)
In [12]:
y
Out[12]:
array([  45000,   50000,   60000,   80000,  110000,  150000,  200000,
        300000,  500000, 1000000], dtype=int64)

三、创建回归模型

In [13]:
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)
Out[13]:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

四、创建多项式回归

In [29]:
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 4)
X_poly = poly_reg.fit_transform(X) # 自变量不同次数的矩阵
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly,y)
X_poly 
Out[29]:
array([[  1.00000000e+00,   1.00000000e+00,   1.00000000e+00,
          1.00000000e+00,   1.00000000e+00],
       [  1.00000000e+00,   2.00000000e+00,   4.00000000e+00,
          8.00000000e+00,   1.60000000e+01],
       [  1.00000000e+00,   3.00000000e+00,   9.00000000e+00,
          2.70000000e+01,   8.10000000e+01],
       [  1.00000000e+00,   4.00000000e+00,   1.60000000e+01,
          6.40000000e+01,   2.56000000e+02],
       [  1.00000000e+00,   5.00000000e+00,   2.50000000e+01,
          1.25000000e+02,   6.25000000e+02],
       [  1.00000000e+00,   6.00000000e+00,   3.60000000e+01,
          2.16000000e+02,   1.29600000e+03],
       [  1.00000000e+00,   7.00000000e+00,   4.90000000e+01,
          3.43000000e+02,   2.40100000e+03],
       [  1.00000000e+00,   8.00000000e+00,   6.40000000e+01,
          5.12000000e+02,   4.09600000e+03],
       [  1.00000000e+00,   9.00000000e+00,   8.10000000e+01,
          7.29000000e+02,   6.56100000e+03],
       [  1.00000000e+00,   1.00000000e+01,   1.00000000e+02,
          1.00000000e+03,   1.00000000e+04]])

五、画图比较

1.线性回归

In [24]:
plt.scatter(X,y,color="red")
plt.plot(X,lin_reg.predict(X),color ="blue")
plt.title(u"真话还是假话(线性模型)")
plt.xlabel(u"职位水平")
plt.ylabel(u"薪水")
plt.show()
print('r-squared', lin_reg.score(X,y))
('r-squared', 0.66904123319298947)

2.多项式回归

In [28]:
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_reg_2.predict(poly_reg.fit_transform(X_grid)),color ="blue")
plt.title(u"真话还是假话(多项式模型)")
plt.xlabel(u"职位水平")
plt.ylabel(u"薪水")
plt.show()
print('r-squared', lin_reg_2.score(X_poly,y))
('r-squared', 0.99739228917066114)

结论:多项式回归结果明显优于简单线性回归结果(实际应用时应考虑过拟合的问题)

六、薪水预测

1.线性回归

In [19]:
lin_reg.predict(6.5)
Out[19]:

array([ 330378.78787879])




2.多项式回归预测

In [20]:
lin_reg_2.predict(poly_reg.fit_transform(6.5))
Out[20]:

array([ 158862.45265154])





七、项目地址



机器学习之——多项式回归和正规方程

上一次我们分享了多变量线性回归模型(Linear Regression with Multiple Variables),这一次我们来讨论一下多项式回归(Polynomial Regression) ...
  • mysteryhaohao
  • mysteryhaohao
  • 2016-04-19 11:24:58
  • 4511

Python机器学习应用 | 多项式回归

1 多项式回归多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多...
  • JinbaoSite
  • JinbaoSite
  • 2017-06-24 14:16:17
  • 3027

斯坦福大学机器学习笔记——特征和多项式回归以及正规方程

我们可以举一个例子来引入多项式回归: 比如我们之前遇到的房价问题,对于房价的影响我们假设有两个特征,一个是房子的宽度x1x_{1},另外一个是房子的长度x2x_{2},这针对房价的估测我们可以建立下...
  • wyl1813240346
  • wyl1813240346
  • 2017-11-05 22:21:54
  • 198

(斯坦福机器学习课程笔记)多项式回归练习

代码使用python3.x题目如下(自己拍脑壳出的)import numpy as np import random import matplotlib.pyplot as plt F64='floa...
  • qq_32231743
  • qq_32231743
  • 2016-12-13 22:40:16
  • 367

机器学习(5)多项式回归:用基函数扩展线性模型

机器学习中的一个常见模式是使用数据的非线性函数训练的线性模型。 这种方法保持了线性方法的一般快速的性能,同时允许它们适应更宽范围的数据。 例如,可以通过从系数构建多项式特征来扩展简单的线性回归。 在...
  • voidfaceless
  • voidfaceless
  • 2017-03-15 09:18:56
  • 847

Standford 机器学习学习笔记线性回归和多项式回归

  • 2013年05月08日 09:15
  • 664KB
  • 下载

机器学习-2 多元线性回归、多项式回归

多元线性回归:          通过尺寸预测房价,只有尺寸一个特征,如果有多个特征比如楼层、房间数等,则 1. Hypothesis:假设(输入到输出的映射) 2. Parame...
  • Hou_Rj
  • Hou_Rj
  • 2013-11-03 19:03:46
  • 3758

Andrew Ng 机器学习笔记 05 :特征的选择和多项式回归

特征的选择 以预测房价为例,假设你有两个特征,分别是房子临街的宽度(frontage)和垂直宽度(depth),你可能会建立一个像这样的线性回归模型: hθ(x)=θ0+θ1×frontage+...
  • lk3030
  • lk3030
  • 2018-03-17 14:45:08
  • 29
收藏助手
不良信息举报
您举报文章:机器学习之多项式回归
举报原因:
原因补充:

(最多只允许输入30个字)