python实现多元线性回归

用python实现多元线性回归,先不使用sklearn.linear_model模块,编写如下:

#导模块
import numpy as np
import pandas as pd
#变量初始化
X=[]
Y=[]
B=[]
Q_e=0
Q_E=0
#从csv文件中读取数据
def get_data(file_name):
	data=pd.read_csv(file_name,header=0)
	data=np.array(data)
	#数组切片对变量进行赋值
	Y=data[:,data.shape[1]-1]#预报对象位于最后一列
	X=data[:,0:data.shape[1]-1]
	print(X.shape)
	return X,Y
X,Y=get_data('Advertising.csv')

X=np.mat(np.c_[np.ones(X.shape[0]),X])#为系数矩阵增加常数项系数
Y=np.mat(Y)#数组转化为矩阵
#print(X)
B=np.linalg.inv(X.T*X)*(X.T)*(Y.T)

print(B)#输出系数,第一项为常数项,其他为回归系数
print(np.mat([1,60,60,60])*B)#预测结果
#相关系数
Y_mean=np.mean(Y)
for i in range(Y.size):
	Q_e+=pow(np.array((Y.T)[i]-X[i]*B),2)
	Q_E+=pow(np.array(X[i]*B)-Y_mean,2)
R2=Q_E/(Q_e+Q_E)
print(R2)

输出结果:

不直接使用模块主要是一是希望自己熟悉公式及其数学意义,明白计算流程;二是熟悉python进行矩阵运算的函数和各种数据属性,暴露出了不少问题,自己进行矩阵运算时相当不熟练,一个矩阵运算式改正了一个多小时才算出正确结果,在计算式,使用shape属性查看list和matrix的维数,以免计算出现问题,熟记常用的属性和函数可以有效的提高编程效率。

使用sklearn.linear_model模块的代码实现如下:

#导模块
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
#变量初始化
X=[]
Y=[]
#从csv文件中读取数据
def get_data(file_name):
	data=pd.read_csv(file_name,header=0)
	data=np.array(data)
	#数组切片对变量进行赋值
	Y=data[:,data.shape[1]-1]#预报对象位于最后一列
	X=data[:,0:data.shape[1]-1]
	print(X.shape)
	return X,Y
X,Y=get_data('Advertising.csv')
regs=LinearRegression()
regs.fit(X,Y)
print(regs.coef_)#输出回归系数
print(regs.predict([[60,60,60]]))#预测值
print(regs.score(X,Y))#输出相关系数

结果输出如下:

经过对照可以知道结果是正确的。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值