多元线性回归

1 绪 论

2 预备知识

  2.1 多元线性回归分析法基本思想

  2.2 多元线性回归分析法的理论模型

  2.3 多元线性回归分析的计算步骤

    2.3.1 参数估计

    2.3.2 假设检验

  2.4 Python语言操作步骤

3 多元线性回归模型的建立与分析

  3.1 数据收集与分析

  3.2 模型构建

  3.3 计算及结果分析

    3.3.1 模型求解

    3.3.2 单特征与目标的可视化

    3.3.3 模型结果分析

    3.3.4 相关系数检验

    3.3.5 多重共线性检验

    3.3.6 回归系数的显著性检验

    3.3.7 模型验证

4 模型的评价

  4.1 模型的优点

  4.2 模型的缺点

  4.3 模型的改进

5 结论与建议

参考文献:……

 

参考论文:

链接:https://pan.baidu.com/s/1NSok8WVKtlku15HrlBFFVw?pwd=1354

提取码:1354

 1 import pandas as pd
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 from sklearn.model_selection import train_test_split
 5 from sklearn.model_selection import cross_val_score      #导入交叉验证模块
 6 from statsmodels.formula.api import ols  #线性回归模型,小写的 ols 函数才会自带截距项,OLS 则不会
 7 import seaborn as sns
 8 plt.rcParams['font.sans-serif'] = ['SimHei']
 9 plt.rcParams['axes.unicode_minus'] = False
10 
11 class Multiple_linear_regression():
12     def __init__(self,path):
13         try:
14             self.df = pd.read_csv(path)
15         except:
16             self.df=pd.read_excel(path)
17         print(self.df.head())
18 
19     def Single_factor_scatter_plot(self):
20         for i in self.df:
21             if i==self.df.iloc[:,-1].name:
22                 continue
23             else:
24                 self.df.plot(x=i, y=self.df.iloc[:,-1].name, kind='scatter', title=f'因素{i}与{self.df.iloc[:,-1].name}的散点图')
25                 plt.show()
26 
27     def Correlation_coefficient_matrix_and_thermodynamic_diagram(self):
28         # df.corr().to_csv('相关系数矩阵.csv')
29         print(self.df.corr())
30         heatmap = sns.heatmap(self.df.corr(), cmap='inferno', center=0.01)
31         plt.show()
32 
33     def Vif_test(self):
34         # 共线性检测,vif检验,方差膨胀因子
35         def vif(df, col_i):
36             """
37             df: 整份数据
38             col_i:被检测的列名
39             """
40             cols = list(df.columns)
41             cols.remove(col_i)
42             cols_noti = cols
43             formula = col_i + '~' + '+'.join(cols_noti)
44             r2 = ols(formula, df).fit().rsquared
45             # 其实就是多元线性回归建模步骤,只是取出了参数 R 平方而已
46             test = 1. / (1. - r2)
47             return test
48 
49         print('vif检验结果')
50         print('  变量            vif检验值')
51         vif_value = []
52         for i in self.df:
53             print(i.center(7) + '    ', str(vif(df=self.df, col_i=i)))
54             vif_value.append(vif(df=self.df, col_i=i))
55         plt.bar([x for x in self.df], vif_value, color='teal')
56         plt.axhline(10, color='red', lw=2, label="参考线")
57         plt.title("VIF检验结果")
58         plt.xlabel("变量")
59         plt.ylabel("VIF_value")
60         plt.show()
61 
62     def Model(self):
63         st=''
64         for k in self.df:
65             if k == self.df.iloc[:, -1].name:
66                 continue
67             else:
68                 st += ''.join(k) + '+'
69         xy=f'{self.df.iloc[:, -1].name}~{st[0:-1]}'
70         lm = ols(xy, data=self.df).fit()
71         print(lm.summary())
源代码类,命名为MLR
1 import MLR
2 a=MLR.Multiple_linear_regression(path='house.csv')
3 
4 a.Single_factor_scatter_plot()
5 a.Correlation_coefficient_matrix_and_thermodynamic_diagram()
6 a.Vif_test()
7 a.Model()
调用类

 

posted @ 2023-04-27 22:29  一眉师傅  阅读(284)  评论(0编辑  收藏  举报