inflearn logo
강의

Course

Instructor

Deep Learning and PyTorch Bootcamp for Beginners (Easy! From Basics to ChatGPT's Core Transformer) [Data Analysis/Science Part 3]

Applying Deep Learning to Binary Classification (URL Phishing Kaggle Problem)

마지막에 confusion matrix 작성할때

157

lizamong5541

2 asked

0

/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
    405     uniques = np.unique(lengths)
    406     if len(uniques) > 1:
--> 407         raise ValueError(
    408             "Found input variables with inconsistent numbers of samples: %r"
    409             % [int(l) for l in lengths]

ValueError: Found input variables with inconsistent numbers of samples: [2286, 238]


수업 내용대로 했는데 이러한 에러가 나오네요.. 그대로 코드로 작성했는데요. 샘플 수가 안맞는건가요.

머신러닝 딥러닝 인공신경망 pytorch vision-transformer

Answer 1

0

funcoding

안녕하세요. 답변 도우미입니다.

네 맞습니다. 완전히 동일한 것인지, 데이터가 다른 것인지 문의하신 부분으로는 알기는 어렵긴 한데요. 가볍게 다음 내용 참고해보시면 도움이 되실 것 같습니다.

이 오류는 Confusion Matrix를 계산할 때, 예측값(predictions)과 실제 라벨(labels)의 샘플 수가 일치하지 않아서 발생한 문제입니다. 에러 메시지에 따르면, 두 배열의 샘플 수가 [2286, 238]로 다르다는 것을 알 수 있습니다.

### 가능한 원인

1. Batch 처리 문제: 학습 시 데이터셋이 배치로 나뉘어 처리되었고, 마지막 배치에서 크기가 달라졌을 가능성이 있습니다.

2. 모델 예측과 실제 라벨의 불일치: 모델의 예측값이 전체 테스트 데이터와 일치하지 않을 수 있습니다. 이는 예측을 할 때 일부 데이터가 누락되거나, 예측값이 잘못 처리된 경우일 수 있습니다.

### 해결 방법

1. 모델의 예측값과 실제 라벨의 크기 확인: predictionslabels 배열의 크기를 확인하여 동일한지 확인합니다. 이를 통해 어디에서 문제가 발생했는지 파악할 수 있습니다.

```python

print(f"Predictions shape: {predictions.shape}")

print(f"Labels shape: {labels.shape}")

```

2. 데이터 로더 확인: DataLoader를 사용하여 데이터를 배치로 나눌 때, 마지막 배치 크기가 작아지는 경우가 발생할 수 있습니다. 이를 방지하기 위해 drop_last=True 옵션을 사용하여 마지막 배치를 제거할 수 있습니다.

```python

data_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True, drop_last=True)

```

3. Confusion Matrix 계산: 예측값과 실제 라벨의 크기가 일치하는지 확인한 후 Confusion Matrix를 계산해야 합니다.

### 예시 코드

```python

# 모델 예측

outputs = model(inputs)

_, predictions = torch.max(outputs, 1)

# 실제 라벨

labels = labels

# 예측값과 실제 라벨의 크기 확인

print(f"Predictions shape: {predictions.shape}") # 예: torch.Size([2286])

print(f"Labels shape: {labels.shape}") # 예: torch.Size([238])

# 만약 크기가 다르면 문제가 발생한 부분을 찾아 수정해야 합니다.

# Confusion Matrix 계산

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(labels.cpu().numpy(), predictions.cpu().numpy())

```

이와 같이 데이터를 정확하게 처리하고 예측값과 실제 라벨의 크기를 맞추는 것이 중요합니다. 이를 통해 Confusion Matrix를 문제없이 계산할 수 있습니다.

감사합니다.

잔재미코딩 드림

import torch가 안되는 경우는 어떻게 하나요?

0

16

1

강의 필기는 어떻게 하나요?

0

85

1

섹션 5퀴즈 4번 문제 보기 오류로 보임

0

63

1

섹션17 81번이랑 82번 강의가 중복되는 것 같아서 질문드립니다.

0

88

2

강의교안이 안 옵니다

0

80

1

17-2강 Transfer learning 실습 관련 질문

0

134

2

13섹션 강의자료가 없네요^^

0

92

1

강의자료가 없네요.

0

106

2

LSTM 모델 학습 관련한 질문입니다.

0

127

1

MSE LOSS 관련

0

131

1

test시 minibatch 사용?

0

133

1

Average Test loss 계산식 문의

0

101

1

파이토치 설치

0

247

1

[Pytorch 기울기의 누적 곱? 누적 합?]

0

135

1

3d 텐서에서의 축 구분 질문

0

119

1

항상 tensor([0., 0., 0.]) 형식으로만 나오는 이유

0

111

1

강의자료 PDF 다운로드에 관하여

0

132

1

[실무에서 판다스 copy()메서드의 깊은복사 얕은복사 조정 소요가 생길까?]

0

116

1

섹션 다양한 Optimizer 정리하기 중 딥러닝으로 Regression 문제 적용해보기 (House Price Kaggle 문제) 강의에서 오류가 발생합니다.

0

148

1

아나콘다를 사용하지 않고 파이토치 사용하는 방법

0

853

1

test data 의 loss 계산식 문의

0

288

1

차원 출력 관련 문의

0

245

1

섹션 7-4 당뇨병

0

387

3

BackPropagation 질문입니다

0

376

1