html
掌握 Python 中的多元线性回归:全面指南
利用 Python 中的多元线性回归释放预测分析的力量。 无论您是数据科学爱好者还是经验丰富的专业人士,本指南将引导您使用 Python 强大的库构建、评估和优化多元线性回归模型。深入学习以提升您的数据建模技能,并推动有洞察力的决策。
目录
多元线性回归简介
多元线性回归 是一种基础的统计技术,用于基于两个或多个预测变量预测目标变量的结果。与依赖于单一自变量的简单线性回归不同,多元线性回归能够更全面地理解数据之间的关系,使其在经济学、医学和工程等领域中具有重要价值。
理解数据集
在本指南中,我们将使用 Medical Cost Personal Dataset(个人医疗费用数据集),您可以在 Kaggle 上访问。该数据集包含有关个人医疗费用的信息以及可能影响这些费用的各种因素,如年龄、性别、BMI、子女数量、吸烟状况和区域。
样本数据:
年龄
性别
BMI
子女
吸烟者
地区
费用
19
女性
27.9
0
是
西南
16884.924
18
男性
33.77
1
否
东南
1725.5523
28
男性
33
3
否
东南
4449.462
33
男性
22.705
0
否
西北
21984.47061
32
男性
28.88
0
否
西北
3866.8552
费用 是我们的目标变量,代表计费给个人的医疗费用。
设置环境
在进行数据分析之前,确保您已安装必要的工具。我们将使用:
- Python 3.x
- Jupyter Notebook
- 库: NumPy, Pandas, Matplotlib, Seaborn, Scikit-Learn
您可以使用 pip
安装所需的库:
1
pip install numpy pandas matplotlib seaborn scikit-learn
数据预处理
数据预处理是一个关键步骤,涉及清理和转换原始数据为适合建模的格式。
导入库
首先导入必要的 Python 库:
12345
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set()
加载数据
将数据集加载到 Pandas 数据框中:
1
data = pd.read_csv('S07_datasets_13720_18513_insurance.csv')
探索数据
了解数据集的结构和内容:
1
data.head()
输出:
年龄
性别
BMI
子女
吸烟者
地区
费用
19
女性
27.9
0
是
西南
16884.924
18
男性
33.77
1
否
东南
1725.5523
28
男性
33
3
否
东南
4449.462
33
男性
22.705
0
否
西北
21984.47061
32
男性
28.88
0
否
西北
3866.8552
分类变量的独热编码
机器学习模型需要数值输入。因此,我们需要使用 独热编码 将 sex
、smoker
和 region
等分类变量转换为数值格式。
1234567891011
from sklearn.preprocessing import OneHotEncoderfrom sklearn.compose import ColumnTransformer # Define the column transformer with OneHotEncoder for categorical columnscolumnTransformer = ColumnTransformer( [('encoder', OneHotEncoder(), [1, 4, 5])], remainder='passthrough') # Apply the transformation to the feature setX = columnTransformer.fit_transform(X)
解释:
ColumnTransformer
将转换器应用于指定的列。
OneHotEncoder
将分类变量转换为二进制向量。
remainder='passthrough'
确保未指定的列保持不变。
划分数据集
将数据集划分为训练集和测试集,以有效评估模型的性能。
12345
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.20, random_state=1)
参数:
test_size=0.20
将 20% 的数据用于测试。
random_state=1
确保结果可重复。
构建多元线性回归模型
数据准备就绪后,就可以构建和训练回归模型了。
1234567
from sklearn.linear_model import LinearRegression # Initialize the modelmodel = LinearRegression() # Train the model on the training datamodel.fit(X_train, y_train)
关键点:
- Scikit-Learn 的 LinearRegression() 是实现线性模型的简单方法。
.fit()
方法使用训练数据来训练模型。
进行预测
利用训练好的模型根据测试集预测费用。
1
y_pred = model.predict(X_test)
比较实际值与预测值
分析实际值与预测值之间的差异可以深入了解模型的性能。
1234
comparision = pd.DataFrame()comparision['Actual'] = y_testcomparision['Predicted'] = y_predcomparision
示例输出:
实际值
预测值
1646.4297
4383.680900
11353.2276
12885.038922
8798.5930
12589.216532
...
...
5227.98875
6116.920574
关键点:
- R² 值为 0.76 表明模型解释了医疗费用方差的大约 76%。
- 虽然结果令人鼓舞,但仍有提升准确度的空间。
评估模型性能
使用 R 平方(R²)指标评估模型的准确性,该指标表示模型解释的方差比例。
1234
from sklearn.metrics import r2_score r2 = r2_score(y_test, y_pred)print(f"R² Score: {r2:.2f}")
输出:
1
R² Score: 0.76
解释:
- R² 值为 0.76 表明模型解释了医疗费用方差的大约 76%。
- 虽然结果令人鼓舞,但仍有提升准确度的空间。
结论
在 Python 中构建多元线性回归模型涉及多个关键步骤,从数据预处理和分类变量编码到训练模型和评估其性能。本指南通过使用个人医疗费用数据集提供了全面的操作流程,展示了如何利用 Python 强大的库进行预测分析。
下一步:
- 特征工程: 探索创建新特征或转换现有特征以增强模型性能。
- 模型优化: 尝试不同的算法或超参数以获得更好的准确性。
- 处理过拟合: 实施交叉验证或正则化等技术,防止模型记忆训练数据。
采用这些策略进一步完善您的模型,并从数据中获取更深层次的见解。祝建模愉快!
附加资源
- Jupyter Notebook: 在此处访问完整的 Notebook *(替换为实际链接)*
- 数据集: Kaggle 上的个人医疗费用数据集
- Scikit-Learn 文档: 线性回归
关键词: Python 中的多元线性回归、数据预处理、独热编码、Scikit-Learn、模型评估、R 平方、预测分析、医疗费用预测、Python 数据科学、机器学习教程