关于sklearn 编写多项式方程

之前写过一次关于多次函数的代码,同样使用sklearn库,数据如图所示:

先画出散点图:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
#设置中文显示
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
 
data=np.genfromtxt("C:/Users/Lenovo/Desktop/shuzizuoye/job.csv",delimiter=",")
x = data[1:, 1]
y = data[1:, 2]#y取第二列数据
plt.scatter(x, y,)#画出数据散点图
plt.show
data = np.array(data)

 

根据这个散点图可以看出这里使用一次函数会产生很大的误差,需要高次函数。

x=x[:,np.newaxis]
y=y[:,np.newaxis]

 这里是将x,y数据变成二维的数据格式,因为后面model.fit(x1,y)需要数据是二维的。

# 用于增加一个多次项内容的模块PolynomialFeatures
from sklearn.preprocessing import PolynomialFeatures

poly_reg = PolynomialFeatures(degree=6)

x1= poly_reg.fit_transform(x)
model = LinearRegression()
model.fit(x1,y)

plt.scatter(x,y)

plt.plot(x,model.predict(x1),color='r')
plt.show()
 
model.coef_,model.intercept_

这次采用的最高次数为6.

画出图像,可以看出这里基本拟合。现在对拟合的精度进行检验。

import statsmodels.api as sm
 
# add_constant()函数给原来的特征变量X添加常数项,并赋给X2,这样才有y=ax+b中的常数项,即截距b
X2 = sm.add_constant(x1)
# 用OLS()和fit()函数对Y和X2进行线性回归方程搭建
est = sm.OLS(y,x1).fit()
est.summary()

 

可以看出R-squrared与adj.R-squrared均为1说明拟合的效果很高。 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值