본문 바로가기
Python/numpy

numpy ValueError: Expected 2D array, got 1D array instead 오류 해결하기

by PySun 2024. 10. 9.
반응형

소개

파이썬에서 NumPy 또는 Scikit-learn을 사용할 때 'ValueError: Expected 2D array, got 1D array instead' 오류는 자주 발생하는 문제 중 하나입니다. 이 오류는 일반적으로 모델 학습 또는 데이터를 변환할 때 1D 배열을 예상하는 대신 2D 배열을 제공하려고 할 때 발생합니다. 오늘은 이 오류의 원인과 그 해결 방법을 알아보겠습니다.

에러 발생 예시 코드

먼저, 이 오류가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import numpy as np
from sklearn.linear_model import LinearRegression

# 1D 배열 생성
X = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 3, 5])

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)  # 이 줄에서 ValueError 발생

에러 해결 방법

1. 1D 배열을 2D 배열로 변환

가장 간단한 해결책은 1D 배열을 2D 배열로 변환하여 올바른 형태로 모델에 전달하는 것입니다. NumPy의 reshape 메서드를 사용할 수 있습니다.

X = X.reshape(-1, 1)  # X를 2D 배열로 변환

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)  # 이제 오류가 발생하지 않습니다

2. numpy.newaxis 사용하기

또 다른 방법은 numpy.newaxis를 사용하여 1D 배열을 2D 배열로 변환하는 것입니다. 이렇게 하면 차원을 쉽게 추가할 수 있습니다.

X = X[:, np.newaxis]  # X를 2D 배열로 변환

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)  # 오류가 발생하지 않습니다

3. 올바른 데이터 형식 확인

입력 데이터 X와 y의 형식을 확인하여, 반드시 그 형태가 모델에 적합한지 점검하는 것이 좋습니다. 일반적으로 X는 (n_samples, n_features), y는 (n_samples,)이어야 합니다.

X = np.array([[1], [2], [3], [4], [5]])  # X를 2D 배열로 초기화
y = np.array([1, 3, 2, 3, 5])

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)  # 오류가 발생하지 않습니다

마무리

이 블로그 글에서는 NumPy 또는 Scikit-learn을 사용할 때 'ValueError: Expected 2D array, got 1D array instead'에 대한 간단한 해결 방법을 알아보았습니다. 배열의 형상을 올바르게 변환하는 것이 중요하며, 항상 입력 데이터의 모양을 체크하고 올바른 형식으로 전달하는 것이 좋습니다. 코딩을 하다 보면 이러한 문제를 자주 마주하게 되겠지만, 해결하는 과정에서 더 많은 지식을 쌓을 수 있을 것입니다.

반응형