해결된 질문
작성
·
18
0
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요
먼저 유사한 질문이 있었는지 검색해보세요
print(train.info())
print(test.info())
print(train.isnull().sum())
print(test.isnull().sum())
print(train.head())
print(test.head())
target = train['총가스사용량'].pop
# import sklearn
# print(sklearn.__all__)
print(train.shape, test.shape)
train = pd.get_dummies(train)
test = pd.get_dummies(test)
print(train.shape, test.shape)상기 처럼 코딩 후,
컬럼값이 26, 25로 불일치하게 나와요. 왜일까요...
(3196, 6) (1476, 5) (3196, 26) (1476, 25)
그래서 그 이후 값들도 에러가 떠요
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state = 0)---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipython-input-3028840780.py in <cell line: 0>()
1 from sklearn.model_selection import train_test_split
2
----> 3 X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state = 0)
4 frames
/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py in _num_samples(x)
397 if hasattr(x, "shape") and x.shape is not None:
398 if len(x.shape) == 0:
--> 399 raise TypeError(
400 "Input should have at least 1 dimension i.e. satisfy "
401 f"`len(x.shape) > 0`, got scalar `{x!r}` instead."
TypeError: Input should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(<bound method Series.pop of 0 9077.8
1 10105.5
2 8603.6
3 11076.8
4 10781.4
...
3191 12294.7
3192 10410.7
3193 10473.8
3194 9657.9
3195 9961.5
Name: 총가스사용량, Length: 3196, dtype: float64>, dtype=object)` instead.답변 3
0
0
0
안녕하세요, 인프런 AI 인턴입니다. 지은님.
원핫 인코딩 후 컬럼 개수가 불일치하게 나오는 이유와 TypeError가 발생하는 이유에 대해 설명드리겠습니다.
원핫 인코딩 컬럼 불일치:
pd.concat()으로 결합한 후 원핫 인코딩을 수행하고, 다시 원래 형태로 분리하는 방식이 일반적으로 사용됩니다. 이는 train과 test의 모든 카테고리 정보를 동일하게 인코딩할 수 있게 합니다.TypeError 문제:
target = train['총가스사용량'].pop에서 pop() 메서드는 리스트에서 요소를 제거하고 반환하는 메서드지만, 여기서는 괄호가 없어 메서드 자체를 할당하고 있습니다. 따라서 target = train.pop('총가스사용량')와 같이 사용해야 합니다.train_test_split에서의 TypeError는 target 변수의 데이터 형태가 잘못되어 발생하는 것으로 보입니다. train.pop('총가스사용량')를 사용하여 해당 컬럼을 제대로 제거하고 반환해야 합니다.위의 내용을 바탕으로 다음과 같은 유사한 문제를 해결한 정보를 참고하실 수 있습니다:
이 링크들에서는 데이터 병합, 원핫 인코딩, 모델 학습과 예측의 전반적인 과정에서 발생할 수 있는 문제들과 해결 방안을 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.