python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

本文详细介绍了如何使用Python进行多元线性回归分析,以产品利润数据集为例,探讨模型建立、假设检验、异常值检测和模型诊断等步骤,确保模型的合理性和预测准确性。

线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量)。例如,餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额;网站根据访问的历史数据(包括新用户的注册量、老用户分活跃度、网页内容的更新频率等)预测用户的支付转化率。

在开始多元线性模型前介绍下一元线性模型。数学公式可以表示为:

一个因变量,一个自变量。参数求解公式为:

多元线性回归模型与一元线性回归模型的区别就是,自变量的增加。其数学表达式为:

可以简写为:

β代表多元线性回归模型的偏回归系数,e代表了模型拟合后每一个样本的误差项。利用最小二乘法求解β,可以得到:

将相应的x值,y值代入公式即可求得β。

我们构建模型的目的是为了预测,即根据已知的自变量X值预测未知的因变量y的值。本文是利用Python 实现这一目标。

这里以某产品的利润数据集为例,该数据集包含5个变量,分别是产品的研发成本、管理成本、市场营销成本、销售市场和销售利润。其中销售利润Profit为因变量,其他变量为自变量。

回归模型的建模和预测

将导入数据的数据进行切割,训练集用来训练模型,测试集用来预测。

测试集删除因变量Profit,剩下的自变量进行预测,结果用来跟删除的因变量进行对比,比较模型的预测能力。

数据集中的State变量为字符型的离散变量,需要进行哑

### Python 多元线性回归实例分析教程 #### 数据准备与预处理 为了构建多元线性回归模型,首先需要准备好合适的数据集并对其进行必要的预处理工作。这一步骤包括但不限于加载数据、查看基本统计信息以及处理缺失值等问题。 ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 假设已有一个CSV文件作为数据源 data = pd.read_csv('your_dataset.csv') # 查看前几行记录了解数据结构 print(data.head()) # 对于存在连续型特征的情况建议标准化 scaler = StandardScaler() scaled_features = scaler.fit_transform(data.drop(columns=['target'])) X_train, X_test, y_train, y_test = train_test_split(scaled_features, data['target'], test_size=0.2, random_state=42) ``` #### 构建与训练模型 接下来,在完成上述准备工作之后就可以着手建立多元线性回归模型了。这里采用`sklearn.linear_model.LinearRegression`来创建模型对象,并调用其`.fit()`方法完成参数估计过程[^1]。 ```python from sklearn.linear_model import LinearRegression model = LinearRegression() # 训练模型 model.fit(X_train, y_train) # 输出拟合优度R²得分 print(f'Training R^2 Score: {model.score(X_train, y_train)}') print(f'Testing R^2 Score: {model.score(X_test, y_test)}') ``` #### 结果评估与解释 除了计算决定系数\(R^{2}\),还可以进一步考察其他指标如均方误差(MSE)等以全面衡量预测效果的好坏程度;另外值得注意的是,当面对实际应用场景时还需要考虑业务逻辑层面的意义解读——即哪些自变量对因变量影响较大?这些因素之间是否存在交互作用? ```python from sklearn.metrics import mean_squared_error predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) rmse = mse ** 0.5 print(f'Root Mean Squared Error (RMSE): {rmse}') # 获取各特征对应的权重绝对值大小排序 feature_importance = abs(model.coef_) sorted_idx = feature_importance.argsort()[::-1] for idx in sorted_idx: print(f'{data.columns[idx]} : {feature_importance[idx]}') ``` #### 异常点检测 考虑到多元线性回归模型可能受极端值干扰而降低准确性,因此有必要引入一些有效的手段识别潜在异常情况。可以借助帽子矩阵(Hat Matrix), DFFITS标准, 学生化残差(Studentized Residuals) 或Cook's Distance来进行诊断测试[^2]。 ```python import statsmodels.api as sm ols_result = sm.OLS(y_train, sm.add_constant(pd.DataFrame(X_train))).fit() influence_measures = ols_result.get_influence().summary_frame() # 打印部分重要测量项的结果概览表头 print(influence_measures[['cooks_d', 'dffits_internal']].head()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值