首页 > 其他分享 >4.Sklearn多项式回归

4.Sklearn多项式回归

时间:2023-11-04 23:47:19浏览次数:30  
标签:datasets degree 特征 多项式 回归 poly Sklearn

1.多项式回归介绍

在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归

多项式回归的最大优点就是可以通过增加X的高次项对实测点进行逼近,直至满意为止。

事实上,多项式回归可以处理相当一类非线性问题,它在回归分析中占有重要的地位,因为任一函数都可以分段用多项式来逼近。

2. 建立工程并导人sklean包

import matplotlib.pyplot as plt
import numpy as np

from sklearn import linear_model
from sklearn.preprocessing import PolynomialFeatures

sklearn中多项式回归:
这里的多项式回归实际上是先将变量X处理成多项式特征,然后使用线性模型学习多项式特征的参数,以达到多项式回归的目的。

例如: \(X =[x1, x2]\)
1.使用PolynomialFeatures构造X的二次多项式特征X_Poly

\[X\underline{}Poly = [x_1, x_2, x_1x_2, x_1^2,x_2^2] \]

2.使用linear_model学习X_Poly和y之间的映射关系,即参数$$w_{1} x_{1}+w_{2} x_{2}+w_{3} x_{1} x_{2}+w_{4} x_{1}^{2}+w_{5} x_{2}^{2}=y$$

3. 加载训练数据

# 建立datasets_X和datasets_Y用来存储数据中的房屋尺寸和房屋成交价格。
datasets_X = []
datasets_Y =[]
fr = open('prices.txt','r')
lines = fr.readlines()
for line in lines:
    items = line.strip().split(',')  # 去除数据文件中的逗号
    datasets_X.append(int(items[0]))
    datasets_Y.append(int(items[1]))
 
length = len(datasets_X)
datasets_X = np.array(datasets_X).reshape([length,1])  #将dataset_X转化为数组,并变为二维,以符合线性回归拟合函数输人参数要求。
datasets_Y = np.array(datasets_Y)

4. 建立回归方程

# 以数据datasets_X的最大值和最小值为范围,建立等差数列,方便后续画图。
minX = min(datasets_X)
maxX = max(datasets_X)
X = np.arange(minX,maxX).reshape([-1,1])

# degree=2表示建立datasets_X的二次多项式特征X_poly.然后创建线性回归,使用线性模型学习X_poly和datasets_Y之间的映射关系(即参数)
poly_reg = PolynomialFeatures(degree = 2)
X_poly = poly_reg.fit_transform(datasets_X)
lin_reg_2 = linear_model.LinearRegression()
lin_reg_2.fit(X_poly, datasets_Y)

PolynomialFeatures的用法:

poly = PolynomialFeatures(degree=2, interaction_only=False, include_bias=True)
  • degree(默认为2):指定多项式的阶数。例如,如果 degree=2,则会生成包括原始特征、其平方项和交互项的多项式特征。如果 degree=3,则还包括立方项。

  • interaction_only(默认为False):如果设置为True,只生成交互项,而不包括原始特征的平方项和高阶项。
    假设你有一个包含两个特征的输入特征矩阵 X:[[x1, x2],[y1, y2],[z1, z2]],则:

# degree = 2
[[1, x1, x2, x1^2, x1*x2, x2^2],
 [1, y1, y2, y1^2, y1*y2, y2^2],
 [1, z1, z2, z1^2, z1*z2, z2^2]]

# 如果 interaction_only=True,则只会生成交互项
[[1, x1*x2],
 [1, y1*y2],
 [1, z1*z2]]
  • include_bias(默认为True):如果设置为True,会添加一个偏置项(截距项)到生成的特征矩阵中,该项的值恒为1。如果设置为False,不会添加偏置项。

fit_transform多项式特征生成器poly来将原始特征矩阵 X 转换为多项式特征矩阵 X_poly。这将包括原始特征和它们的平方项。

示例:
如果 data 包含原始特征[[1],[2],[3]],那么 degree = 2 的 poly_reg.fit_transform(data) 将包括这些特征及它们的平方项:

[[1. 1. 1.]
 [1. 2. 4.]
 [1. 3. 9.]]

5. 可视化

plt.scatter(datasets_X, datasets_Y, color = 'red')
plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color ='blue')
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()

6. 预测

y_pred = model.predict(poly.transform(X_test))

它首先将测试数据集 X_test 转换为多项式特征矩阵,然后使用训练好的线性回归模型 model 对多项式特征进行预测,得到预测值 y_pred。

标签:datasets,degree,特征,多项式,回归,poly,Sklearn
From: https://www.cnblogs.com/ratillase/p/17810059.html

相关文章

  • 3.Sklearn-一元线性回归
    1.导入包importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_model2.加载训练数据#建立datasets_X和datasets_Y用来存储数据中的房屋尺寸和房屋成交价格。datasets_X=[]datasets_Y=[]fr=open('prices.txt','r')lines=fr.readline......
  • 2.Sklearn库标准数据集及基本功能
    1.sklearn数据集波士顿房价数据集波士顿房价数据集包含506组数据,每条数据包含房屋以及房屋周围的详细信息。其中包括城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等。因此,波士顿房价数据集能够应用到回归问题上。使用sklearn.dataset......
  • HPO-ELM猎食者算法优化极限学习机的数据回归预测 可直接运行 预测效果好 Matlab~
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 【lssvm回归预测】基于天鹰算法优化最小二乘支持向量机AO-lssvm实现数据回归预测附mat
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 2. 电力负荷预测-一元回归
    1.负荷预测思路电力负荷的时间序列通常可以由三部分组成。\[Y(t)=f(t)+p(t)+X(t)\]\(X(t)\)随机项一般假设为白噪声,即标准正态分布,不改变均值。\(p(t)\)周期项有两种假设方法在数据预处理时进行去周期处理,然后在得到预测结果后,再还原周期。直接带入表示周期项的参数......
  • sklearn-决策树
    目录决策树算法关键特征维度&判别条件决策树算法:选择决策条件纯度的概念信息增益增益率:基尼指数:纯度度量方法1)纯度函数%20%E7%BA%AF%E5%BA%A6%E5%87%BD%E6%95%B0)2)纯度度量函数%20%E7%BA%AF%E5%BA%A6%E5%BA%A6%E9%87%8F%E5%87%BD%E6%95%B0)编辑决策树算法关键了解了“if-else”......
  • Eviews回归分析股权集中度、股权制衡度与公司绩效关系:中小板上市公司数据
    全文链接:http://tecdat.cn/?p=32345原文出处:拓端数据部落公众号本文深入分析了国内外关于股权结构与公司绩效的影响因素;帮助客户运用回归分析法,以ROE作为公司绩效的度量指标,考察中小企业板上市公司股权集中度、股权制衡度对公司绩效的影响因素。为了进行实证研究,选取了部分深......
  • 2023牛客暑期多校训练营8 B Bloodline Counter 指数型生成函数 容斥 多项式求逆
    传送门容易想到求出竞赛图上最大环\(\lek\)的数量,再求出\(\lek-1\)的数量作差即可得到答案。设指数型生成函数\(G(x)\)表示大小为\(i\)的环的方案数。\(G(x)=\sum_{i=1}^k\frac{a_i}{i!}x^i\)那么最大环\(\lek\)的数量\(=[x^n]n!\sum_{i=1}^ki!\frac{(G(x))^i}{i!}\)这里......
  • matlab中polyfit和polyval的使用(曲线拟合/多项式拟合/指数拟合)
    matlab中polyfit函数的作用是对数据进行数据拟合有些小伙伴可能搞不清楚polyfit和polyval之间的区别,这里就直接上我的笔记给大家看看吧%%普通的多项式拟合clear;clc;num=30;x=linspace(0,5,num);%横轴数据error=rand(1,num);%生产误差值a=x.^2+2*error;%......
  • 信也科技推出移动UI自动化平台,持续提升回归测试效率
        在当今竞争激烈的移动应用市场中,用户对APP应用的体验和质量要求越来越高,自动化测试对企业来说至关重要。近日,信也科技研发并推出了移动UI自动化平台,通过将重复的流程进行UI自动化测试,提升回归测试效率,降本增效并为企业长期健康可持续发展打下坚实基础。传统手工回归测试......