其他分享
首页 > 其他分享> > pytorch学习笔记(二)

pytorch学习笔记(二)

作者:互联网

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