본문 바로가기
Python/error

sklearn TypeError: 'numpy.ndarray' object is not subscriptable 오류 해결하기

by PySun 2025. 8. 28.
반응형

소개

파이썬의 sklearn 라이브러리를 사용할 때 'TypeError: 'numpy.ndarray' object is not subscriptable' 오류에 직면할 수 있습니다. 이 오류는 주로 NumPy 배열에 잘못된 방식으로 접근하려고 할 때 발생합니다. 이번 블로그 글에서는 이 오류가 발생하는 배경과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 예시 코드를 통해 어떤 상황에서 이 오류가 발생하는지 살펴보겠습니다.

import numpy as np
from sklearn.linear_model import LinearRegression

# 데이터 생성
X = np.array([[1, 2], [3, 4]])
y = np.array([1, 2])

# 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)

# 예측
predictions = model.predict(X)

# 'numpy.ndarray' 객체에 대해 잘못된 방식으로 접근
print(predictions[1, 0])  # TypeError 발생

에러 해결 방법

1. 올바른 인덱스 방식 사용하기

NumPy 배열에 접근할 때는 대괄호로 두 개의 인덱스를 전달하는 것이 올바른 방식이지만, 예측 결과는 1차원 배열입니다. 따라서 하나의 인덱스만 사용해야 합니다.

import numpy as np
from sklearn.linear_model import LinearRegression

# 데이터 생성
X = np.array([[1, 2], [3, 4]])
y = np.array([1, 2])

# 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)

# 예측
predictions = model.predict(X)

# 올바른 방식으로 인덱스 접근
print(predictions[1])  # 두 번째 예측값 출력

2. 배열의 차원 확인하기

예측 결과 배열의 차원을 확인하고, 필요한 경우 reshape를 사용하여 원하는 형태로 변경할 수도 있습니다.

import numpy as np
from sklearn.linear_model import LinearRegression

# 데이터 생성
X = np.array([[1, 2], [3, 4]])
y = np.array([1, 2])

# 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)

# 예측
predictions = model.predict(X)

# 예측값의 차원 확인
print(predictions.shape)  # (2,)
# 예측값을 2차원으로 변경
predictions_reshaped = predictions.reshape(-1, 1)
print(predictions_reshaped[1, 0])  # 이제 올바른 방법으로 접근 가능

마무리

이 블로그 글에서는 sklearn을 사용할 때 발생할 수 있는 'TypeError: 'numpy.ndarray' object is not subscriptable' 오류에 대한 해결 방법을 다루었습니다. 올바른 인덱스 방식을 사용하거나 배열의 차원을 확인하여 문제를 피할 수 있습니다. NumPy를 효과적으로 활용하려면 배열의 구조와 특성을 잘 이해하는 것이 중요합니다. 경험을 통해 더욱 성장하는 데 도움이 될 것입니다!

반응형