持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
1.环境及要求
我们的运行环境是在jupyter中,有用到pandas库,torch框架,如果说没有pandas库可以在相应环境下输入指令pip install pandas进行下载安装。
2.创建csv文件
data_file=os.path.join(r'E:\360MoveData\Users\12079\Desktop\数据集\csv','data','wangba_price.csv')
with open(data_file,'w') as f:
f.write('Name,distance,price\n')#列名
f.write('mumu,2KM,3\n')#样本
f.write('qianfeng,0.5KM,4\n')
f.write('luoluo,4KM,2.5\n')
f.write('zhanshen,1.5KM,2\n')
这里我们创建一个csv文件,存储网吧名称、距离和价格,在这里我们需要注意一点就是在In[15]的第一行和第二行代码中可能存在的报错,在要保存的路径前要加上一个字母r,原因是因为在Python中\是转义符,\E表示其后是UNICODE编码,因此这里会报错,字符串前面加个 r(rawstring 原生字符串) ,可以避免python与正则表达式语法的冲突!
这样我们的一个CSV文件就创建好了,然后我们打开它,会显示出我们刚刚所输入的数据,但是可以发现有些没有输入的数据它会显示为NaN,所代表的意思就是缺失值。
3.缺失值处理
通常情况下,我们处理缺失数据的方法主要有两种一种是插值,一种是删除,在这里我们使用插值的方法对缺失值进行处理。
#缺失值处理
a=data.iloc[:,0:2]#我们定义的CSV文件是四行三列的,这里我们取全部的行和前两列
b=data.iloc[:,1]#取所有行所有列
a=a.fillna(0)
print(a)
在这里我们将缺失值全部换成0,这样所有的量都变成了数值,就可以进一步转换成torch中的张量了。对于a中的类别值或者其他的离散值,我们可以将NaN视为同一个类别。现在a和b中的所有条目都是数值类型,它们就可以顺利转换成张量的模式了。
4.线性代数
对于线性代数的学习只需了解一些基本的规则和应用。比如M行N列矩阵的转置,对称矩阵的转置等于它自己。
我们对特定轴进行求和,对于一个五行四列的矩阵,axis等于0的时候我们是对行进行操作,当axis等于1的时候我们是对列进行操作。在In[62]中我们可以看到结果是一个长为4的一个向量。也可以对特定的维度之间进行求和操作如In[64]。
5.总结
1.这样转换会使得数值变得稀疏,本来一组的元素会变成很多很多的向量,这就需要一个稀疏矩阵来做存储。
2.整个深度学习都要用张量来表示,深度学习跟数学有着密切的关系,统计学家偏向于使用张量。
3.copy和clone是存在很大区别的,copy只是浅复制,而clone是一定会复制内存
4.pandas软件包是Python中常用的数据分析工具中,pandas可以与张量兼容。
5.用pandas处理缺失的数据时,我们可根据情况选择用插值法和删除法。