Pandas 데이터 프레임을 PyTorch 텐서로 변환하려면 어떻게 해야 합니까?
팬더 데이터 프레임에 PyTorch로 간단한 신경망을 훈련하는 방법df
?
칼럼df["Target"]
는 네트워크의 대상(예: 레이블)입니다.이것은 작동하지 않습니다.
import pandas as pd
import torch.utils.data as data_utils
target = pd.DataFrame(df['Target'])
train = data_utils.TensorDataset(df, target)
train_loader = data_utils.DataLoader(train, batch_size=10, shuffle=True)
제목에 있는 질문을 언급하는 것입니다. 텍스트에 다른 것을 명시하지 않았기 때문에 DataFrame을 PyTorch 텐서로 변환하는 것입니다.
당신의 데이터에 대한 정보가 없는 상태에서, 저는 단지 플로트 값을 예시적인 목표로 삼고 있을 뿐입니다.
팬더 데이터 프레임을 PyTorch 텐서로 변환하시겠습니까?
import pandas as pd
import torch
import random
# creating dummy targets (float values)
targets_data = [random.random() for i in range(10)]
# creating DataFrame from targets_data
targets_df = pd.DataFrame(data=targets_data)
targets_df.columns = ['targets']
# creating tensor from targets_df
torch_tensor = torch.tensor(targets_df['targets'].values)
# printing out result
print(torch_tensor)
출력:
tensor([ 0.5827, 0.5881, 0.1543, 0.6815, 0.9400, 0.8683, 0.4289,
0.5940, 0.6438, 0.7514], dtype=torch.float64)
Pytorch 0.4.0으로 테스트.
이것이 도움이 되길 바랍니다, 만약 더 궁금한 것이 있다면 - 그냥 물어보세요.
(샘플 코드를 기반으로) 문제를 해결할 수 있는지 확인해 볼 수 있을까요?
train_target = torch.tensor(train['Target'].values.astype(np.float32))
train = torch.tensor(train.drop('Target', axis = 1).values.astype(np.float32))
train_tensor = data_utils.TensorDataset(train, train_target)
train_loader = data_utils.DataLoader(dataset = train_tensor, batch_size = batch_size, shuffle = True)
아래 함수를 사용하여 데이터 프레임 또는 팬더 시리즈를 파이토치 텐서로 변환할 수 있습니다.
import pandas as pd
import torch
# determine the supported device
def get_device():
if torch.cuda.is_available():
device = torch.device('cuda:0')
else:
device = torch.device('cpu') # don't have GPU
return device
# convert a df to tensor to be used in pytorch
def df_to_tensor(df):
device = get_device()
return torch.from_numpy(df.values).float().to(device)
df_tensor = df_to_tensor(df)
series_tensor = df_to_tensor(series)
특성(numpy 배열)을 데이터셋 생성기에 직접 전달할 수 있습니다.
import torch.utils.data as data_utils
# Creating np arrays
target = df['Target'].values
features = df.drop('Target', axis=1).values
# Passing to DataLoader
train = data_utils.TensorDataset(features, target)
train_loader = data_utils.DataLoader(train, batch_size=10, shuffle=True)
참고: 기능(df
)에 대상 변수()도 포함되어 있습니다.df['Target']
) 즉, 네트워크는 입력에서 대상을 볼 수 있기 때문에 '확장'됩니다.피쳐 집합에서 이 열을 제거해야 합니다.
변환만 하면 됩니다.pandas dataframe -> numpy array -> pytorch tensor
. 이에 대한 예는 다음과 같습니다.
import pandas as pd
import numpy as np
import torch
df = pd.read_csv('train.csv')
target = pd.DataFrame(df['target'])
del df['target']
train = data_utils.TensorDataset(torch.Tensor(np.array(df)), torch.Tensor(np.array(target)))
train_loader = data_utils.DataLoader(train, batch_size = 10, shuffle = True)
이를 통해 pytorch(최신 버전의 pytorch와 호환됨)를 사용하여 자신만의 데이터셋을 만들 수 있기를 바랍니다.
#This works for me
target = torch.tensor(df['Targets'].values)
features = torch.tensor(df.drop('Targets', axis = 1).values)
train = data_utils.TensorDataset(features, target)
train_loader = data_utils.DataLoader(train, batch_size=10, shuffle=True)
데이터 프레임을 파이토치 텐서로 변환하려면: [이것을 사용하여 임의의 df를 해결하여 파이토치 텐서로 변환할 수 있습니다.]
단계:
- df.to _numpy(df.to _numpy) 또는 ype _numpy(ast _numpy)를 사용하여 df를 numpy로 변환하여 각 numpy 배열의 데이터 유형을 float32로 변경합니다.
- torch.from_numpy(df) 메서드를 사용하여 numpy를 텐서로 변환합니다.
예:
tensor_ = torch.from_numpy(df.to_numpy().astype(np.float32))
언급URL : https://stackoverflow.com/questions/50307707/how-do-i-convert-a-pandas-dataframe-to-a-pytorch-tensor
'sourcecode' 카테고리의 다른 글
MySQL 시계열은 window 함수를 사용하여 평균 무게를 측정했습니다. (0) | 2023.09.16 |
---|---|
C API에서 0은 '참'을 의미하고 1은 '거짓'을 의미하는 것이 일반적입니까? (0) | 2023.09.16 |
TextInputLayout의 힌트 크기를 변경하는 방법 (0) | 2023.09.16 |
toad: 오라클 자동 완료 드롭다운 (0) | 2023.09.16 |
Python 요소 변환트리에서 문자열로 (0) | 2023.09.16 |