ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytorch学习笔记(二)

2021-05-01 21:33:09  阅读:240  来源: 互联网

标签:inputs NumRooms torch NaN 笔记 学习 pytorch Alley data


pytorch学习笔记(二)

数据预处理

创建一个人工数据集,并存储在CSV(逗号分隔值)文件

import os

os.makedirs(os.path.join('..','data'),exist_ok=True)  #此处的..需要修改为你要存放的地址,例:C:\Users\qi\Desktop\文件\study
data_file = os.path.join('..','data','house_tiny.csv')
with open(data_file,'w')as f:
    f.write('NumRooms,Alley,Price\n')  #创建的列名
    f.write('NA,Pave,127500\n')  #每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

从创建的CSV文件中加载原始数据集

impot pandas as pd

data = pd.read_csv(data_file)
print(data)

#out:     NumRooms Alley   Price
#0       NaN  Pave  127500
#1       2.0   NaN  106000
#2       4.0   NaN  178100
#3       NaN   NaN  140000

处理缺失数据例如:NA,典型的方法包括 插值删除

使用插值法将数据缺失转换为估计值:

inputs,outputs = data.iloc[:,0:2],data.iloc[:,2]  #把数据中的第一列和第二列全部放进inputs中,把数据中的第三列全部放进outputs中
inputs = inputs.fillna(inputs.mean())  #用同一列的均值替换NaN
print(inputs)

#out:   NumRooms Alley
#0       3.0  Pave
#1       2.0   NaN
#2       4.0   NaN
#3       3.0   NaN

data.iloc是pandas中的位置索引

对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。

inputs = pd.get_dummies(inputs,dummy_na=True)
print(inputs)

#out:   NumRooms  Alley_Pave  Alley_nan
#0       3.0           1          0
#1       2.0           0          1
#2       4.0           0          1
#3       3.0           0          1

现在inputs和outputs中的所有条目都是数值类型,他们可以转换为张量格式。

import torch

X,y = torch.tensor(inputs.values),torch.tensor(outputs.values)  #将上述的CSV文件转换成了pytorch的张量
X,y

#out:(tensor([[3., 1., 0.],
#         [2., 0., 1.],
#         [4., 0., 1.],
#         [3., 0., 1.]], dtype=torch.float64),
# tensor([127500, 106000, 178100, 140000]))

使用删除法去除缺失最多的列

inputs = data.iloc[:,0:2],data.iloc[:,2]  #把数据中的第一列和第二列存放到inputs中
if float(inputs['NumRooms'].count()) > float(inputs['Alley'].count()):  #获取inputs中'NumRooms'列非空值的个数并转换为float类型
    inputs.drop('Alley',axis=1,inplace=True)  #删除'Alley'那一列
else :
    inputs.drop('NumRooms',axis=1,inplace=True)  #删除'Numroom'那一列
print(inputs)

#out:  NumRooms
#0       NaN
#1       2.0
#2       4.0
#3       NaN

转换为张量格式

import torch
inputs = pd.get_dummies(inputs.NumRooms,dummy_na=True)  #对'NumRooms'列进行分类,将NaN设置为可分类项
x = torch.tensor(inputs.values)
x
#out:tensor([[0, 0, 1],
#        [1, 0, 0],
#        [0, 1, 0],
#        [0, 0, 1]], dtype=torch.uint8)

#---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#

*注:python中反斜杠 \ 是有单独意义的,故输入地址要用其他符号代替,例:

错误输入:

sys.path.append('C:\Users\qi\Desktop\文件\study')

正确输入形式:1、在路径前面加r,即保持字符原始值的意思。

sys.path.append(r'C:\Users\qi\Desktop\文件\study')

2、替换为双反斜杠

sys.path.append('C:\\Users\\qi\\Desktop\\文件\\study')

3、替换为正斜杠

sys.path.append('C:/Users/qi/Desktop/文件/study')

标签:inputs,NumRooms,torch,NaN,笔记,学习,pytorch,Alley,data
来源: https://www.cnblogs.com/Rubyen2333/p/14724783.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有