Tensor는 주로 딥러닝과 수치 연산을 위해 사용되는 다차원 배열(또는 매트릭스) 데이터 구조를 말한다. torch.Tensor는 PyTorch에서 제공하는 데이터 구조로 수학적 연산을 효율적으로 수행할 수 있게 한다.
텐서는 NumPy 배열과 매우 유사하지만 GPU를 사용한 연산 가속과 자동 미분과 같은 추가 기능을 제공한다. NumPy는 CPU 기반 연산에 주로 사용되지만 파이토치의 텐서는 CPU 및 GPU 모두에서 효율적으로 작동한다.
import torch
import numpy as np
# 1
data = np.array([[1, 2], [3, 4]]) # 2차원 데이터
x = torch.tensor(data)
x
type(x)
data1 = torch.ones_like(x) # x의 속성을 유지하면서 1로 값 대입
data1
data2 = torch.zeros_like(x)
data2
# 0 ~ 1사이의 수를 무작위로 출력하되 float 타입
data3 = torch.rand_like(x, dtype=torch.float)
data3
x
x.sum(dim=0) # 열(column) 기준으로 합 구하기
# 2
t = torch.FloatTensor([1, 2, 3])
t
t.dim() # 차원
t.size() # 사이즈
t2 = torch.FloatTensor([[1., 2.],
[3., 4.],
[5., 6.]])
t2
t2.dim()
t2.size() # 3행 2열
# 3
t3 = torch.FloatTensor([[1.], [2.]])
t4 = torch.FloatTensor([[3.]]) # 브로드 캐스팅
t3 + t4
t3.mean() # 전체 평균
t3.mean(dim=0) # 열별 평균
t5 = torch.FloatTensor([[1., 2.], [3., 4.]])
t6 = torch.FloatTensor([[1.], [2.]])
t5.matmul(t6) # 행렬 곱
# 4
x = torch.FloatTensor([[1, 2], [3, 4]])
x.mul(2.) # 곱하기 2를 수행한 결과 출력
x # 기존 값 출력
x.mul_(2.) # 곱하기 2를 수행한 결과를 변수 x에 값을 저장하면서 결과 출력
x # 기존 값 출력
# 5
t1 = torch.FloatTensor([[1., 2.],
[3., 4.],
[5., 6.]])
t2 = torch.FloatTensor([[7., 8.],
[9.,10.],
[11., 12.]])
torch.cat([t1, t2], dim=0)
torch.cat([t1, t2], dim=1)
# 6
x = torch.FloatTensor([1, 4])
y = torch.FloatTensor([2, 5])
z = torch.FloatTensor([3, 6])
x.dim() # 차원
x.shape # 값 2개라는 뜻
x = x.unsqueeze(1) # 첫 번째에 1 대입, 차원 확장
x # 2행 1열
x.dim() # 2행 1열
x.shape
x = x.unsqueeze(2) # 두 번째에 1 대입, 차원 확장
x
x.dim()
x.shape
# squeeze는 차원 축소
# 7
t1 = torch.FloatTensor([[1., 2.],
[3., 4.],
[5., 6.]]) # 3행 2열
t1.view(-1, 3) # 열을 3으로 고치기, 2행 3열
a = pd.DataFrame({'name' : ['kim', 'lee', None, None],
'score' : [100, np.nan, np.nan, 99] })
a

결측치 발생
1) Nan, Null, Inf 등의 데이터가 데이터 수집 시 발생 가능
2) 외부 데이터의 경우 결측치 발생 확인 및 처리가 더욱 중요함
결측치 방치
: 예측 결과에 큰 영향을 미쳐 잘못된 예측결과가 나올 수 있음
데이터셋.isna()
데이터셋.isnull()
1) 데이터셋.isnull.sum() : numll의 개수
2) 데이터셋.isnull.all() : 데이터가 모두 null인지 확인
3) 데이터셋.isnull.any() : 데이터 중 하나라도 null이 있는지 확인
NaN값 포함 여부 확인 : Boolean 타입으로 반환되므로, 해당 결과로 확인
판다스(pandas) : na, null 두 데이터를 NaN으로 통일하여 사용 가능
isin()
1) 이상치(불필요한 데이터) 검색 시 사용
2) 찾고자 하는 데이터의 존재 유무 확인 가능
데이터셋.sum() : 가능
데이터셋.mean() : 가능
numpy의 array구조에서 NaN이 있는 경우 연산 무조건 불가능. 해당 데이터의 경우 pandas로 변환 후 연산 가능