python数据挖掘笔记——回归(3):一元非线性回归 - Go语言中文社区

python数据挖掘笔记——回归(3):一元非线性回归


概念:

一元非线性回归分析(Univariate Nonlinar Regression):在回归分析中,只包含一个自变量和一个因变量,且二者的关系可以用一条曲线表示,则成为一元非线性分析。
案例:游戏等级和木材消耗的关系。
在这里插入图片描述
木材消耗和游戏等级呈一条曲线关系,探究木材消耗和游戏等级之间的非线性关系。

求解:将一元非线性回归方程转为多元线性回归方程,例如:
在这里插入图片描述
下面是代码演示:
首先导入数据集,取出自变量和因变量。

import pandas
import matplotlib;

data = pandas.read_csv(
    r'C:Userswww12DesktopDApythonDM4.3data.csv'
)
#取出自变量和因变量
x = data[["等级"]]
y = data[["资源"]]

在这里插入图片描述
然后,绘制出两个变量之间的散点图:

font = {
    'family' : 'SimHei'
};
matplotlib.rc('font', **font);
matplotlib.rcParams['axes.unicode_minus'] = False

from pandas.tools.plotting import scatter_matrix;

scatter_matrix(
    data[["等级", "资源"]], 
    alpha=0.8, figsize=(10, 10), diagonal='kde'
)

在这里插入图片描述
可以看出是一元二次方程的曲线,我们画一个一元二次方程曲线来比较一下:

import numpy;
x_ = numpy.arange(-10, 10, 0.01);
y_ = x_**2

from matplotlib import pyplot as plt;

plt.figure();
plt.title('等级与资源')
plt.xlabel('等级')
plt.ylabel('资源')
plt.grid(True)
plt.plot(x_, y_, 'k.')
plt.show()

在这里插入图片描述
然后我们要将一元非线性回归方程转化为多元线性回归方程:
用到方法是PolynomialFeatures()方法

导入包
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x

pf = PolynomialFeatures(degree=2)  #   传入degree参数,表示一元二次方程
x_2_fit = pf.fit_transform(x)

x_2_fit
#查看x_2_fit:
array([[  1.,   1.,   1.],
       [  1.,   2.,   4.],
       [  1.,   3.,   9.],
       [  1.,   4.,  16.],
       [  1.,   5.,  25.],
       [  1.,   6.,  36.],
       [  1.,   7.,  49.],
       [  1.,   8.,  64.],
       [  1.,   9.,  81.],
       [  1.,  10., 100.],
       [  1.,  11., 121.],
       [  1.,  12., 144.],
       [  1.,  13., 169.],
       [  1.,  14., 196.],
       [  1.,  15., 225.],
       [  1.,  16., 256.],
       [  1.,  17., 289.],
       [  1.,  18., 324.],
       [  1.,  19., 361.],
       [  1.,  20., 400.]])

#然后就转换为二元线性回归方程了
lrModel = LinearRegression()
lrModel.fit(x_2_fit, y)  #训练模型

lrModel.score(x_2_fit, y)  #模型评分

x_2_predict = pf.fit_transform([[21], [22], [23]])   #预测的时候自变量需要经过转换再预测
lrModel.predict(x_2_predict)   #模型预测

预测结果:
array([[ 8449.29298246],
       [ 9490.99924812],
       [10594.83697881]])

API总结:
一元n次方程,转多元线性回归方程:
pf = PolynomialFeatures(degree=2)
参数说明:
degree :回归方程的次数
转换方法:
x_2_fit = pf.fit_transform(x)

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42695959/article/details/85227197
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢