강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của lizamong5541
lizamong5541

câu hỏi đã được viết

Bootcamp Học Sâu và PyTorch cho Người Mới Bắt Đầu (Dễ Dàng! Từ Cơ Bản đến Transformer Cốt Lõi của ChatGPT) [Phân Tích/Khoa Học Dữ Liệu Phần 3]

Áp dụng Deep Learning cho Binary Classification (Bài toán URL Phishing trên Kaggle)

마지막에 confusion matrix 작성할때

Viết

·

152

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]


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

머신러닝딥러닝인공신경망pytorchvision-transformer

Câu trả lời 1

0

funcoding님의 프로필 이미지
funcoding
Người chia sẻ kiến thức

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

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

이 오류는 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를 문제없이 계산할 수 있습니다.

감사합니다.

잔재미코딩 드림

Hình ảnh hồ sơ của lizamong5541
lizamong5541

câu hỏi đã được viết

Đặt câu hỏi