【数据处理】csv文件格式操作与python多维数组切片操作

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 genfromtxt
  import numpy as np
  from sklearn import linear_model
  datapath=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...x5
  x= 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)

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值