怎么用python实现回归_手把手教你用Python进行回归(附代码、学习资料)-阿里云开发者社区...

本文介绍了线性回归、多项式回归以及样条回归,强调了线性回归的局限性和多项式回归可能导致的过拟合问题。通过样条回归,利用分段多项式在不同区间拟合数据,解决了灵活性和过拟合的平衡。文章提供了Python代码示例,展示了如何在工资预测数据集上应用这些方法,探讨了如何选择节点数量和位置以优化模型性能。
摘要由CSDN通过智能技术生成

我刚开始学习数据科学时,第一个接触到的算法就是线性回归。在把这个方法算法应用在到各种各样的数据集的过程中,我总结出了一些它的优点和不足。

首先,线性回归假设自变量和因变量之间存在线性关系,但实际情况却很少是这样。为了改进这个问题模型,我尝试了多项式回归,效果确实好一些(大多数情况下都是如此会改善)。但又有一个新问题:当数据集的变量太多的时候,用多项式回归很容易产生过拟合。

由于而且我建立的模型总是过于灵活,它可能在测试集上结果很好,但在那些“看不见的”数据上表现的就差强人意了。后来我看到另外一种称为样条回归的非线性方法---它将线性/多项式函数进行组合,用最终的结果来拟合数据。

在这篇文章中,我将会介绍线性回归、多项式回归的基本概念,然后详细说明关于样条回归的更多细节以及它的Python实现。

注:为了更好的理解本文中所提到的各种概念,你需要有线性回归和多项式回归的基础知识储备。这里有一些相关资料可以参考:

https://www.analyticsvidhya.com/blog/2015/08/comprehensive-guide-regression/

本文结构

了解数据

简单回顾线性回归

多项式回归:对线性会回归的改进

理解样条回归及其实现

分段阶梯函数

基函数

分段多项式

约束和样条

三次样条和自然三次样条

确定节点的数量和位置

比较样条回归和多项式回归

了解数据

为了更好的理解这些概念,我们选择了工资预测数据集来做辅助说明。你可以在这儿下载:

https://drive.google.com/file/d/1QIHCTvHQIBpilzbNxGmbdEBEbmEkMd_K/view

这个数据集是从一本最近热门的书《Introduction to Statistical learning》(http://www-bcf.usc.edu/~gareth/ISL/ ISLR%20Seventh%20Printing.pdf)上摘取下来的。

我们的数据集包括了诸如ID、出生年份、性别、婚姻状况、种族、教育程度、职业、健康状况、健康保险和工资记录这些信息。为了详细解释样条回归,我们将只用年龄作为自变量来预测工资(因变量)。

让我们开始吧:

#导入需要的包

import pandas as pd

import numpy as np

import statsmodels.api as sm

import matplotlib.pyplot as plt

%matplotlib inline

#读入数据

data = pd.read_csv("Wage.csv")

data.head()

我们会得到这样的结果:

继续:

data_x = data['age']

data_y = data['wage']

#将数据划分为训练集和验证集

from sklearn.model_selection import train_test_split

train_x, valid_x, train_y, valid_y = train_test_split(data_x, data_y, test_size=0.33, random_state = 1)

#对年龄和工资的关系进行可视化

import matplotlib.pyplot as plt

plt.scatter(train_x, train_y, facecolor='None', edgecolor='k', alpha=0.3)plt.show()

我们会得到这样的图:

看到上边这个散点图,你会想到什么?这到底是代表正相关还是负相关?或者说根本没有联系?大家可以在下方的评论区说说自己的观点。

介绍线性回归

线性回归是预测模型中最简单同时应用最广泛的统计方法。它是用来解决基于回归任务的一种监督学习方法。

这种方法建立了自变量和因变量之间线性的关系,所以被称为线性回归。主要是一个线性方程,就像下边这个式子。可以这么理解:我们的特征就是一组带系数的自变量。

这个式子中,我们认为Y是因变量,X为自变量,所有的β都是系数。这些系数即为对应特征的权重,表示了每个特征的重要性。比如说:某个预测的结果高度依赖于诸多特征中的一个(X1),则意味着与其他所有特征相比,X1的系数(即权重)值会更高。

下面我们来试着理解一下只有一个特征的线性回归。即:只有一个自变量。它被称为简单线性回归。对应的式子是这样的:

前面提到,我们只用年龄这一个特征来预测工资,所以很显然,可以在训练集上应用简单线性回归,并且在验证集上计算该模型的误差(RMSE)

from sklearn.linear_model import LinearRegression

#拟合线性回归模型

x = train_x.reshape(-1,1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值