python 回归_Python中的线性回归:线性回归简介

线性回归是一种统计方法,用于对响应变量和解释变量之间的线性关系进行建模。回归函数描述了给定解释变量的响应变量的期望值,并通过线性函数进行建模。

在本文中,我们将回顾线性回归背后的理论,以及如何使用python scikit-learn中的机器学习库实现线性回归模型。

给定p维输入向量:

ade9a32903edfea9aca8057f35d7ee37.png

我们想要预测一个实值响应Y。线性回归模型允许我们预测Y,给定输入向量X有如下形式:

5806c654ea0b60bf6058127ffa2684cb.png

该模型描述了输入特征的加权总和。假设给定X下Y的期望值的回归函数是线性的或近似线性的。参数β是未知系数,输入向量X可以来自定量输入,转换输入,基数展开,交互作用项或表示类别的虚拟变量。给定一组训练数据,我们估计β参数的值:

4193f034cd367f921fdb7e825c852d1b.png

在此,每个x是输入向量(特征值列表),每个y是响应,并且N是训练示例的数量。

如果我们回顾一下回归模型:

ed6b9feb13bdbfdebc0166a2a655aeb4.png

我们看到估计量f是一个常数加上具有相应β值(或权重)的输入的线性组合。总而言之,p是输入值或特征的数量。我们需要一种估计p + 1 β参数的方法:

46a0aa124b76388fa2218afdb9b0de75.png

估计β参数的最流行方法是最小二乘法。此方法选择最小化残差平方和(RSS)的β参数值:

85a67bb99404573a89e1caa01e38273a.png

简而言之,此方法选择权重来描述每个特征的重要性。

因此,现在我们应该考虑如何最小化RSS。

我们以矩阵符号重写RSS:

4531c54254810bb99383107ce955347d.png

在矩阵X中,每一行都是输入特征,而RSS是具有p +1个参数的二次函数。我们可以对p +1β参数采用RSS的导数:

f392c2c7b51c58548256feeb80d57229.png

如果我们将此导数设置为零:

9c2f42b806249182dab0a2a7ace2f86b.png

我们有独特的解决方案:

1643626faeb270cd3f6713fb5e809d8e.png

现在,我们有了可将RSS最小化的β参数。给定输入向量,我们可以通过训练输入处的拟合值来表示预测值:

f48b0b7af3f58b29f5dea9807a1a4463.png

现在我们已经涵盖了足够的理论。现在让我们讨论如何在python中实现线性回归模型。

我们将使用Kaggle的Medical Cost Personal Datasets数据。

首先,我们导入pandas库:

import pandas as pd

然后,使用'.read_csv()'方法将数据读入Pandas数据框中,并显示我们的数据:

df = pd.read_csv('insurance/insurance.csv')df#df.head()
d2edff5472f3c6aef9547d7c88ab0fcb.png

我们将使用年龄(age),体重指数(bmi),吸烟者状况(smoker)和性别(sex)建立线性回归模型,以预测医疗费用。让我们定义输入和输出:

import numpy as npdf ['sex_code'] = np.where(df['sex'] =='female',1,0)df ['smoker_code'] = np.where(df ['smoker'] == 'yes',1,0)X = np.array(df [['age','bmi','children','sex_code','smoker_code']])y = np.array(df ['charges' ])

将数据分割以进行培训和测试:

from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2,random_state = 42)

从scikit-learn(sklearn)导入线性回归模块,定义我们的线性回归对象,并拟合我们的模型:

from sklearn.linear_model import LinearRegressionreg = LinearRegression()reg.fit(X_train,y_train)

现在,输出模型的性能。我们将使用R²指标来衡量效果。R²是一种统计量度,用于测量数据与回归线的接近程度。值介于0到1.0之间,而值1.0代表完美的模型性能:

print("Model Performance: ", reg.score(X_test, y_test))

输出结果为:Model Performance: 0.7811302113434095

我们看到我们的模型表现很好。R²为0.78意味着我们的模型可以解释数据中78%的方差。

结论

在这篇文章中,我们讨论了线性回归背后的理论。线性回归使用特征的加权总和来表示响应变量。使用最小二乘法计算模型中的权重。我们还展示了如何在python中实现线性回归模型,并使用它来根据患者特征预测医疗费用。感谢您的阅读!

356bd14d6ab87715b5ba2b70b30ff52a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值