1.说明
CSV是一种以逗号分隔数值的文件类型,在数据库或电子表格中,常见的导入导出文件格式就是CSV格式,CSV格式存储数据通常以纯文本的方式存数数据表。
excel:
txt文本中:
2.问题
现在需要用线性回归求出一批参数,其公式为a=wx+b,其中a为一个值,w为2881的矩阵,x为1288维的矩阵,b为偏置向量,其形式为a=w1x1+w2x2+…+w288*x288+b
3.代码与讲解分析
(1)数组与np.array
Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。
Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也没有各种运算函数。因而不适合数值运算。
NumPy的出现弥补了这些不足。
(——摘自张若愚的《Python科学计算》)
(2)计算形式:
x的每一行对应了y的每一行,x一般有多个,y一般为一个,即求
y=w1x1+w2x2+…+wnxn,调用函数fit即可求出w1,w2…wn个参数,
在此例中x的参数有288个。
(3)关于多维切片
x= deliveryData[:,0:-3] # 所有行,第一列到倒数第四列(-3列前一列)y = deliveryData[:,-1]#所有行,倒数第一列
在本例二维数组中,“,”的含义是区分维度的,在第一行表示行(第一维)x:y表示从x行到y-1行,若x为空默认从第一行起始,若y为空默认到最后一行,第二维同理,这样可以切选出自己想要的矩阵数组,若为负数则为从末尾开始。
(4).fit源码分析
之后再更,先占个坑
#coding=utf-8# @Author: lihao# @Time: 2019-09-09 10:11# @Abstract:多元线性回归(Multiple Regression)算法 含类别变量from numpy import genfromtxtimport numpy as npfrom sklearn import linear_modeldatapath=r"/home/lihao/Desktop/data_controller3.csv" #ctrl+l可以查看文件路径#从文本文件中提取数据并转为numpy Array格式deliveryData = genfromtxt(datapath,delimiter=',')#deliveryData = [[ 0 ,1 , 2 , 3 , 4],# [ 5 , 6 , 7, 8 , 1.65],# [10 ,11 ,12 ,13 ,2.85],# [15, 16 ,17 ,18 ,4],# [20 ,21, 22 ,23, 5.2]]#deliveryData=np.arange(864).reshape(3,288)#deliveryData=np.array(deliveryData)#print (data)print(deliveryData)# 读取自变量X1...x5x= deliveryData[:,0:-3] # 读取因变量 y = deliveryData[:,-1]print ("x:",x) print ("y:",y)# 调用线性回归模型 lr = linear_model.LinearRegression() # 装配数据 lr.fit(x, y) print (lr) print("coefficients:") print (lr.coef_)print("intercept:")print (lr.intercept_)#预测xPredict = deliveryData[-20:,0:-3] yPredict = lr.predict(xPredict) yreally=deliveryData[-20:,-1] print("predict:") print(yPredict)print(yreally)
更多推荐
多维,操作,数据处理,数组,切片
发布评论