代码部分:
# -*- coding: utf-8 -*-
import numpy as np
import xlrd
path="C:/Users/Desktop/temp/aprotest/2creatmodel/123.xlsx"
data = xlrd.open_workbook(path)
table = data.sheets()[2]
cols = table.col_values(0)
cols1 = np.matrix(cols) # 把list转换为矩阵
cols2=np.transpose(cols1)#转置
print cols2
cols11 = table.col_values(1)
cols21 = table.col_values(2)
cols31 = table.col_values(3)
cols4=np.vstack((cols11,cols21,cols31))#vstack合并后是横着排的,需要转置
cols5=np.matrix(cols4)
cols6=np.transpose(cols5)#转置
print cols6
z=np.linalg.inv(cols6.T*cols6)*cols6.T*cols2 #代码复制后乘号显示异常
print z
思路:
先用xlrd读取excel数据;然后将数据转换为矩阵matrix,期间用到numpy做数据合并和矩阵转置;最后用numpy做矩阵计算,得到线性回归结果。
知识点:
numpy之矩阵转置
cols6=np.transpose(cols5)
numpy之数据合并
cols4=np.vstack((cols11,cols21,cols31))
如果(cols11,cols21,cols31)已经先作为矩阵转置过了,再合并,那就应该用hstack,而不是vstack。
可以简单的理解为:vstack是行合并,hstack是列合并。具体可以参考:
https://blog.csdn.net/m0_37602827/article/details/90546621章节1.2
原文地址:https://www.cnblogs.com/myshuzhimei/p/12112507.html