数据科学- 线性回归案例

案例:使用 Duration + Average_Pulse 预测 Calorie_Burnage

创建一个以 Average_Pulse 和 Duration 作为解释变量的线性回归表:

实例

import pandas as pd
import statsmodels.formula.api as smf

full_health_data = pd.read_csv("data.csv", header=0, sep=",")

model = smf.ols('Calorie_Burnage ~ Average_Pulse + Duration', data = full_health_data)
results = model.fit()
print(results.summary())
亲自试一试 »

示例说明:

  • 将库 statsmodels.formula.api 导入为 smf。 Statsmodels 是 Python 中的一个统计库。
  • 使用 full_health_data 集。
  • 使用 smf.ols() 创建基于普通最小二乘法的模型。 请注意,解释变量必须首先写在括号中。 使用 full_health_data 数据集。
  • 通过调用.fit(),您可以获得变量结果。 这包含有关回归模型的大量信息。
  • 调用summary()获取线性回归结果表。

输出:

Linear Regression Table Case

线性回归函数在数学上可以改写为:

Calorie_Burnage = Average_Pulse * 3.1695 + Duration * 5.8424 - 334.5194

四舍五入到小数点后两位:

Calorie_Burnage = Average_Pulse * 3.17 + Duration * 5.84 - 334.52


在 Python 中定义线性回归函数

在 Python 中定义线性回归函数以执行预测。

什么是卡路里燃烧如果:

  • 平均脉搏为 110,训练时间为 60 分钟?
  • 平均脉搏为 140,训练时间为 45 分钟?
  • 平均脉搏为 175,训练时间为 20 分钟?

实例

def Predict_Calorie_Burnage(Average_Pulse, Duration):
 return(3.1695*Average_Pulse + 5.8434 * Duration - 334.5194)

print(Predict_Calorie_Burnage(110,60))
print(Predict_Calorie_Burnage(140,45))
print(Predict_Calorie_Burnage(175,20))
亲自试一试 »

答案:

  • 平均脉搏为 110,训练时间为 60 分钟 = 365 卡路里
  • 平均脉搏为 140,训练时间为 45 分钟 = 372 卡路里
  • 平均脉搏为 175,训练时间为 20 分钟 = 337 卡路里

访问系数

查看系数:

  • 如果 Average_Pulse 增加 1,则 Calorie_Burnage 增加 3.17。
  • 如果持续时间增加 1,卡路里燃烧会增加 5.84。

访问 P 值

查看每个系数的 P 值。

  • Average_Pulse、Duration 和 Intercept 的 P 值为 0.00。
  • P 值对于所有变量都具有统计显着性,因为它小于 0.05。

所以在这里我们可以得出结论,Average_Pulse 和 Duration 与 Calorie_Burnage 有关系。


调整后的 R 平方

如果我们有多个解释变量,R-squared 就会出现问题。

如果我们添加更多变量,R 平方几乎总是会增加,并且永远不会减少。

这是因为我们在线性回归函数周围添加了更多数据点。

如果我们添加不影响 Calorie_Burnage 的随机变量,我们可能会错误地得出线性回归函数非常适合的结论。 Adjusted R-squared 针对这个问题进行了调整。

因此,如果我们有多个解释变量,最好查看调整后的 R 平方值。

调整后的 R 平方为 0.814。

R-Squared 的值始终介于 0 到 1(0% 到 100%)之间。

  • 较高的 R-Squared 值意味着许多数据点接近线性回归函数线。
  • 较低的 R 平方值意味着线性回归函数线不能很好地拟合数据。

结论:模型很好地拟合了数据点!

恭喜!您现在已经完成了数据科学库的最后一个模块。