目录
一、回归分析基础
回归分析是利用数据统计原理建立因变量和自变量回归方程->求出合理的回归系数->进行相关性检验,确定相关系数->计算预测值置信区间的过程
根据自变量和因变量的相关关系可将其分为线性回归、非线性回归和逻辑回归等;根据特征变量个数可将其分为一元线性回归和多元线性回归。本节我们主要聚焦于一元线性回归分析
数学原理:以预测值和观测值的差值平凡和为目标函数衡量模型的准确性。对残差平凡和函数求导确定模型优化的方向最终求出各系数
二、代码实现
2.1一元线性回归
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
##以不同行业工作年限与收入的线性回归模型为例
data=pd.read_excel('IT行业收入表.xlsx') #读取数据
X=data[['工龄‘]]
Y=data[['薪水']]
X.head()
Y.head()
plt.scatter(X,Y)
plt.xlabel('工龄')
plt.ylabel('薪水')
plt.show()#数据可视化
regr=LinearRegression()##模型构造
regr.fit(X,Y)
plt.plot(X,regr.predict(X),color='red')##模型可视化
#查看线性回归方程
print('系数a1为:'+str(regr,coef_[0]))
print('截距b为:'+str(regr.intercept_))
进阶版本:一元多次线性回归模型
from sklearn.preprocessing import PolynomialFeatures
poly_reg=PolynomialFeatures(degree=2)#假设最高次项为二次
X_=poly_reg.fit_transfrom(X)#转为新的二维数组X_,其中包含x和x^2的取值
regr=LinearRegression()
regr.fit(X_,Y)
##模型可视化和回归方程查看和一元线性方程相似
2.2多元线性回归
import pandas as pd
from sklearn.linear_model import LinearRegression
df=pd.read_excel('客户价值数据表.xlsx')
X=df[['贷款金额','贷款次数','学历','月收入','性别']]
Y=df[['客户价值']]
X.head()
Y.head()#数据可视化
regr=LinearRegression()
regr.fit(X,Y)
print('各系数'+str(regr.coef_))
print('常数'+str(regr.intercept_))
2.3非线性回归分析
方法一:变量变换将非线性方程转换为线性方程
方法二:除自变量X外设置p个未知参数theta,e为白噪音
y=f(X,theta)+ e
三、模型评价
3.1R-squared
TSS——整体平方和
RSS——残差平方和
ESS——解释平方和
R-squared=1-(RSS/TSS)解释:RSS趋于0时,实际值基本和拟合曲线贴合,说明其拟合程度高,此时R-squared趋于1。值得注意的是拟合程度过高可能产生过拟合现象
import statsmodels.api as am
X2=am.add_constant(X)
est=sm.OLS(Y,X2).fit()
print(est.summary())
statsmodels是Pandas生态系统下Statistics and Machine Learning下的一个库:statsmodels.api为横截面模型和方法;statsmodels.tsa.api为时间序列模型和方法;statsmodels.formula.api为使用公式字符串和DataFrame指定模型的方便接口
四、结语
除了上述的几种线性回归模型外还有逻辑回归模型尚未讨论。逻辑回归模型本质上是在预测概率,试用于分析二分类或有次序的因变量和自变量之间的关系,是分类模型。该模块的相关结论和代码实现将在未来的文章中再详细分析。
本篇文章是笔者自行学习总结得出,若有错处还望温和批评指正。