本文实例阐述了Python实现的简单线性回归算法。 分享仅供参考。 具体如下。
用python实现r线性模型(lm )中一元线性回归的简单方法是使用r的women样本数据进行r的执行结果: summary (fit ) )
Call:
公式(公式=重量~高度,数据=重量) ) ) ) ) ) ) )。
Residuals:
Min 1Q Median 3Q Max
- 1.7333-1.1333-0.38330.74173.1167
Coefficients:
estimateSTD.errortvaluepr(|t|) )。
(Intercept )-87.516675.93694-14.741.71 e-09 * * *
height 3.45000.0911437.851.09e-14 * * *
-
sign if.codes :‘* *’0.001‘* *’0.01‘*’0.05‘.’0.1‘‘1’
residualstandarderror :1.525 on 13 degreesoffreedom
多重r-squared : 0.991,Adjusted R-squared: 0.9903
F-statistic: 1433 on 1 and 13 DF,p-value: 1.091e-14
python实现的功能如下。
人员相关系数的计算
用最小二乘法计算回归系数
计算适合度判定系数R2R2
估计标准误差Se的计算
计算显像检查的f和p的值
import numpy as np
import scipy.stats as ss
class Lm:
“”一类简单一元线性模型,回归系数、拟合优度的判定系数和
估算标准误差、显著性水平“”
def __init__(self,data_source,separator ) :
self.beta=NP.matrix (NP.zeros (2) ) )
self.yhat=NP.matrix(NP.Zeros(2) ) )。
self.r2=0.0
self.se=0.0
self.f=0.0
self.msr=0.0
self.mse=0.0
自. p=0.0
data _ mat=NP.genfromtxt (data _ source,delimiter=separator ) ) ) ) ) ) ) ) )。
self.xarr=data _ mat [ :-1 ] self.yarr=data _ mat [ :-1]self.ybar=NP.mean(self.Yaran )
self.DFD=len(self.yarr )- 2 #自由度n-2
返回
#协方差的计算
@静态方法
efcov_custom(x,y ) :
result=sum(x-NP.mean(x ) ) y-NP.mean ) )/(len )- 1 ) ) ) ) ) ) )
返回结果
#相关系数的计算
@静态方法
efcorr_custom(x,y ) :
returnlm.cov_custom(x,y )NP.STD ) x,ddof=1) * np.std(y ) y,ddof=1) )
#回归系数的计算
efsimple_regression(self ) :
xmat=NP.mat(self.xarr ) )。
ymat=NP.mat(self.yarr ).t
xtx=xmat.T * xmat
IFNP.LinaLG.det(xtx )==0.0:
打印(cannotresolvetheproblem ) )
返回
(self.beta=NP.LinaLG.solve(xtx,xmat.T * ymat ) ) xtx.I * (xmat.t * ymat ) ) ) ) ) )
self.yhat=(xmat*self.Beta ).flatten ).A[0] return
#计算适合度判定系数r侧、即相关系数corr的平方
defr_square(self ) :
y=NP.mat(self.yarr ) )。