数据科学- 线性回归案例
案例:使用 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()获取线性回归结果表。
输出:
线性回归函数在数学上可以改写为:
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 平方值意味着线性回归函数线不能很好地拟合数据。
结论:模型很好地拟合了数据点!
恭喜!您现在已经完成了数据科学库的最后一个模块。