ML——回归模型(三)

Polynomial regression多项式回归

这里我们沿用上一节的房价数据,对LSTAT(底层人口比例)和MEDV(房价)做回归分析(原因见Axes网格图),同时将多项式回归结果与简单线性回归效果作比较。其中关于多项式回归在https://blog.csdn.net/After__today/article/details/81352891中有介绍。

import os
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

os.chdir('C:/Users/Administrator/Desktop/jpynb/机器学习')
df = pd.read_csv('./data/housing.csv')
df.head()

# 载入数据
X = df[['LSTAT']].values
y = df['MEDV'].values

# 添加模型
pr = LinearRegression()
lr = LinearRegression()
# degree多项式的阶数
quadratic = PolynomialFeatures(degree=2)
# fit_transform对数据预处理,先调用fit(),后调用transform()
X_quad = quadratic.fit_transform(X)

# 用来做预测的数据,np.newaxis规范矩阵计算
X_fit = np.arange(X.min(), X.max(), 1)[:, np.newaxis]

# 训练简单线性模型
lr.fit(X, y)
y_lin_fit = lr.predict(X_fit)

# 训练多项式模型
pr.fit(X_quad, y)
y_quad_fit = pr.predict(quadratic.fit_transform(X_fit))

# 画出结果图
plt.scatter(X, y, label='training points')
plt.plot(X_fit, y_lin_fit, label='linear fit', linestyle='--')
plt.plot(X_fit, y_quad_fit, label='quadratic fit')
plt.legend(loc='upper left')
plt.tight_layout()

看看效果图:

ML——回归模型(三)_第1张图片

可以很直观看出多项式回归的效果明显好于简单线性回归,我们可以通过调整多项式的阶数来使模型效果更加逼近数据点,做非线性回归。

你可能感兴趣的:(机器学习,回归问题)