特征分别与标签之间的关系



分类问题中特征与标签[0,1]或者[-1,1]之间关系明显是非线性的关系。除非我们 在拟合分类的概率,否则不存在例外。

当我们在进行分类的时候,我们的数据分布往往是这样的:

总结一下,对于回归问题,数据若能分布为一条直线,则是线性的,否则是非线性。对于分类问题,数据分布若能使
用一条直线来划分类别,则是线性可分的,否则数据则是线性不可分的。

线性模型与非线性模型处理非线性分布数据


,线性回归无法拟合出这条带噪音的正弦曲线的真实面貌,只能够模拟出大概的趋势(欠拟合),而决策树却
通过建立复杂的模型将几乎每个点都拟合出来了,容易过拟合。



线性模型、分箱(离散化)、非线性模型
线性模型的决策边界是平行的直线,非线性模型的决策边界是曲线或者交叉的直线。

线性数据:线性模型或者非线性模型
非线性数据:非线性模型、分箱(线性模型)

5.2 使用分箱处理非线性问题
让线性回归在非线性数据上表现提升的核心方法之一是对数据进行分箱,也就是离散化。

7. 如何选取最优的箱数

from sklearn.model_selection import cross_val_score as CVS
import numpy as np
pred,score,var = [], [], []
binsrange = [2,5,10,15,20,30]
for i in binsrange:#实例化分箱类enc = KBinsDiscretizer(n_bins=i,encode="onehot")#转换数据X_binned = enc.fit_transform(X)line_binned = enc.transform(line)#建立模型LinearR_ = LinearRegression()#全数据集上的交叉验证cvresult = CVS(LinearR_,X_binned,y,cv=5)score.append(cvresult.mean())var.append(cvresult.var())#测试数据集上的打分结果pred.append(LinearR_.fit(X_binned,y).score(line_binned,np.sin(line)))
#绘制图像
plt.figure(figsize=(6,5))
plt.plot(binsrange,pred,c="orange",label="test")
plt.plot(binsrange,score,c="k",label="full data")
plt.plot(binsrange,score+np.array(var)*0.5,c="red",linestyle="--",label = "var")
plt.plot(binsrange,score-np.array(var)*0.5,c="red",linestyle="--")
plt.legend()
plt.show()

5.3 多项式回归PolynomialFeatures

5.3.1 多项式对数据做了什么


我们的模型应该是形似y=ax+b 的结构,而转换后我们的特征变化导致了模型的变化。根据我们在支持向量机中的经验,现在这个被投影到更高维空间中的数据在某个角度上看起来已经是一条直线了,于是我们可以继续使用线性回归来进行拟合。线性回归是会对每个特征拟合出权重 的,所以当我们拟合高维数据的时候,我们会得到下面的模型:
将原始的x 上的次方增加,并且为这些次方项都加上权重 ,然后增加一列所有次方为0的列作为截距乘数的 ,参
数include_bias就是用来控制 的生成的。

因此,多项式回归没有固定的模型表达式,多项式回归的模型最终长什么样子是由数据和最高次数决定的,因此我们无法断言
说某个数学表达式"就是多项式回归的数学表达",因此要求解多项式回归不是一件容易的事儿,感兴趣的大家可以自
己去尝试看看用最小二乘法求解多项式回归。

5.3.2 多项式回归处理非线性问题

import matplotlib.pyplot as plt
d=5 #和上面展示一致的建模流程
LinearR = LinearRegression().fit(X, y)
X_ = PF(degree=d).fit_transform(X)
LinearR_ = LinearRegression().fit(X_, y)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)
line_ = PF(degree=d).fit_transform(line) #放置画布
fig, ax1 = plt.subplots(1) #将测试数据带入predict接口,获得模型的拟合效果并进行绘制
ax1.plot(line, LinearR.predict(line), linewidth=2, color='green',label="linear regression")
ax1.plot(line, LinearR_.predict(line_), linewidth=2, color='red',label="Polynomial regression") #将原数据上的拟合绘制在图像上
ax1.plot(X[:, 0], y, 'o', c='k') #其他图形选项
ax1.legend(loc="best")
ax1.set_ylabel("Regression output")
ax1.set_xlabel("Input feature")
ax1.set_title("Linear Regression ordinary vs poly")
plt.tight_layout()
plt.show()


多项式的作用:
(1)特征选择。
(2)不仅数据的可解释性还存在,我们还可以通过这样的手段做特征工程——特征创造。多项式帮助我们进行 了一系列特征之间相乘的组合,若能够找出组合起来后对标签贡献巨大的特征,那我们就是创造了新的有效特征,对 于任何学科而言发现新特征都是非常有价值的。

5.3.4 线性还是非线性模型?

多项式回归通常被认为是非线性模型,但广义上它是一种特殊的线性模型。

非线性问题:多项式回归相关推荐

  1. 十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归

    案例:加利福尼亚房屋价值数据集(线性回归)& Lasso & 岭回归 & 分箱处理非线性问题 点击标题即可获取文章源代码和笔记 1. 导入需要的模块和库 from sklear ...

  2. 机器学习sklearn-多项式回归

    目录 线性关系 线性模型和非线性模型 利用线性回归解决非线性问题 多项式回归 线性模型 线性关系 首先,"线性"这个词用于描述不同事物时有着不同的含义.我们最常使用的线性是指&qu ...

  3. 机器学习-Sklearn-13(回归类大家族-下——非线性问题:多项式回归(多项式变换后形成新特征矩阵))

    机器学习-Sklearn-13(回归类大家族-下--非线性问题:多项式回归(多项式变换后形成新特征矩阵)) 5 非线性问题:多项式回归 5.1 重塑我们心中的"线性"概念 在机器学 ...

  4. 回归分析(三)——多项式回归解决非线性问题

    git源码:https://github.com/xuman-Amy/Regression-Analysis [将线性回归模型转换为曲线--多项式回归] 之前都是将解释变量和目标值之间的关系假设为线性 ...

  5. sklear多项式回归

    来源: https://www.icourse163.org/course/BIT-1001872001 多项式回归 多项式回归(Polynomial Regression)是研究一个因变量与一 个或 ...

  6. 多项式回归 过拟合 模型泛化 模型误差

    很过数据是没有线性关系的==>非线性 =>多项式模拟非线性曲线 添加的特征是原来特征的线性组合==>解决非线性问题=>数据集升维      (PCA降维)  有时升维有时降维 ...

  7. 【skLearn 回归模型】多项式回归 PolynomialFeatures

    文章目录 一.多项式对数据的处理 ① 一维数据集简单案例 ---- (维度针对特征数而言) ② 多维数据集案例 ---- (维度针对特征数而言) ♦ 二维测试 ♦ 三维测试 ③ 多项式回归处理非线性问 ...

  8. 人工智能——多项式回归(Python)

    目录 1.概述 1.1 有监督学习 1.2 多项式回归 2 概念 3 案例实现--方法1 3.1 案例分析 3.2 代码实现 3.3 结果 3.4 可视化 4 案例实现--方法2 4.1 代码 4.2 ...

  9. 使用sklearn学习多项式回归(三)

    目录 1,什么是线性 1.1,变量之间的线性关系 1.2,数据间的线性与非线性 1.3,线性模型与非线性模型 1.4,使用分箱处理非线性问题 2,多项式回归PolynomialFeatures 2.1 ...

最新文章

  1. php如何保存服务器会话,如何用PHP在服务器上创建会话?
  2. pycharm 更改字体和界面样式
  3. 小程序下的兼容性问题
  4. 电脑键盘下划线怎么打_电脑键盘右边的数字键无法使用怎么办?
  5. 虚拟机7.1.4序列号
  6. ODS(Operational Data Store)定义
  7. git ssh拉取代码_win10下git初始安装及配置工作
  8. c# 低功耗蓝牙_C#建立从笔记本电脑内部蓝牙4.0到蓝牙低功耗(BLE)外设的流
  9. c++与unreal 的uc脚本交互
  10. 【李宏毅2020 ML/DL】P13 Backpropagation | 神经网络反向传播到底是怎么计算的
  11. CSDN VIP文章
  12. yalmip-cplex学习总结+亲测算例(一)
  13. PS下载 PS2021中文版下载 Photoshop2021中文版22.5.1 ACR14.0最新
  14. 使用美图秀秀批量处理照片
  15. 计算机组成原理复习(第二版)唐朔飞编著(转载请注明出处---https://www.cnblogs.com/qingl)...
  16. 用javascript的正则表达式来验证Email地址是否格式正确
  17. 现控计控中基于留数法Z变换与Z反变换的MATLAB实现
  18. Sublime Text 崇高文本 ----最性感的编辑器(程序员必备)
  19. 公众号批量移动用户分组
  20. 考试科目C语言缩写,全国计算机专业统考 考试科目都有什么

热门文章

  1. 搜狗汪仔《一站到底》完胜人类 背后核心技术曝光
  2. 独孤思维:自动得3w,这样赚钱颠覆你的认知
  3. JavaScript 网页简易计算器
  4. 基于Android 6.0 MTK 彩信收发
  5. Google搜索语法(二)高级语法
  6. Android课程表的设计开发
  7. 叮咚,你的耳鼻喉专科医院营销策略快来查收
  8. 业务重要?还是技术重要?
  9. 11.02 长者题解
  10. 吃自助火锅的最高境界