마지막에 confusion matrix 작성할때
157
2 asked
/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]
수업 내용대로 했는데 이러한 에러가 나오네요.. 그대로 코드로 작성했는데요. 샘플 수가 안맞는건가요.
Answer 1
0
안녕하세요. 답변 도우미입니다.
네 맞습니다. 완전히 동일한 것인지, 데이터가 다른 것인지 문의하신 부분으로는 알기는 어렵긴 한데요. 가볍게 다음 내용 참고해보시면 도움이 되실 것 같습니다.
이 오류는 Confusion Matrix를 계산할 때, 예측값(predictions)과 실제 라벨(labels)의 샘플 수가 일치하지 않아서 발생한 문제입니다. 에러 메시지에 따르면, 두 배열의 샘플 수가 [2286, 238]로 다르다는 것을 알 수 있습니다.
### 가능한 원인
1. Batch 처리 문제: 학습 시 데이터셋이 배치로 나뉘어 처리되었고, 마지막 배치에서 크기가 달라졌을 가능성이 있습니다.
2. 모델 예측과 실제 라벨의 불일치: 모델의 예측값이 전체 테스트 데이터와 일치하지 않을 수 있습니다. 이는 예측을 할 때 일부 데이터가 누락되거나, 예측값이 잘못 처리된 경우일 수 있습니다.
### 해결 방법
1. 모델의 예측값과 실제 라벨의 크기 확인: predictions와 labels 배열의 크기를 확인하여 동일한지 확인합니다. 이를 통해 어디에서 문제가 발생했는지 파악할 수 있습니다.
```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

