인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

자스민님의 프로필 이미지
자스민

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

회귀 실습 1: 자전거 대여(공유) 수요 예측 - 02

LinearRegression() 에러

작성

·

68

0

안녕하세요. 너무 좋은 강의 잘 듣고 있습니다.

Bike Sharing Demend 예제소스 에러 질문이 있어서요..


[ 로그 변환, 피처 인코딩, 모델 학습/예측/평가 ]

from sklearn.model_selection import train_test_split , GridSearchCV

from sklearn.linear_model import LinearRegression , Ridge , Lasso

y_target = bike_df['count']

X_features = bike_df.drop(['count'],axis=1,inplace=False)

X_train, X_test, y_train, y_test = train_test_split(X_features, y_target, test_size=0.3, random_state=0)

lr_reg = LinearRegression()

lr_reg.fit(X_train, y_train)

pred = lr_reg.predict(X_test)

evaluate_regr(y_test ,pred)


에러

---------------------------------------------------------------------------
DTypePromotionError                       Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_19124\3974685920.py in <module>
     11 lr_reg = LinearRegression()
     12 
---> 13 lr_reg.fit(X_train, y_train)
     14 pred = lr_reg.predict(X_test)
     15 

D:\dev03\anaconda\lib\site-packages\sklearn\linear_model\_base.py in fit(self, X, y, sample_weight)
    660         accept_sparse = False if self.positive else ["csr", "csc", "coo"]
    661 
--> 662         X, y = self._validate_data(
    663             X, y, accept_sparse=accept_sparse, y_numeric=True, multi_output=True
    664         )

D:\dev03\anaconda\lib\site-packages\sklearn\base.py in _validate_data(self, X, y, reset, validate_separately, **check_params)
    579                 y = check_array(y, **check_y_params)
    580             else:
--> 581                 X, y = check_X_y(X, y, **check_params)
    582             out = X, y
    583 

D:\dev03\anaconda\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)
    962         raise ValueError("y cannot be None")
    963 
--> 964     X = check_array(
    965         X,
    966         accept_sparse=accept_sparse,

D:\dev03\anaconda\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
    663 
    664         if all(isinstance(dtype, np.dtype) for dtype in dtypes_orig):
--> 665             dtype_orig = np.result_type(*dtypes_orig)
    666 
    667     if dtype_numeric:

DTypePromotionError: The DType <class 'numpy.dtypes.

 

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

잘 듣고 계시다니, 저도 기쁘군요. ^^

소스코드를 변경하시지 않았다면, 현재 사용하고 계시는 scikit-learn과 numpy가 실습 버전과 안맞아서 그러는 것 같습니다.

사용하시는 scikit-learn과 numpy의 버전을 알 수 있을 까요?

감사합니다.

 

자스민님의 프로필 이미지
자스민
질문자

사이킷런 1.0.2 파이썬 3.9.18입니다. numpy 버전을 몇버전으로 다운그레이 해야할까요?

권 철민님의 프로필 이미지
권 철민
지식공유자

현재 사용하시는 numpy 버전은 무엇인지요?

실습 numpy 버전은 1.22.4 입니다. 그리고 pandas는 1.3.4 입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 자스민님, 좋은 강의를 듣고 계신다니 기쁩니다. 질문주신 Bike Sharing Demand 예제의 LinearRegression 모델 실행 중 발생하는 에러에 대해 알아보겠습니다.

제공된 에러 메시지 바탕으로 보았을 때, 발생한 문제는 데이터 유형(DType)때문인 것으로 보입니다. 질문 내용과 정확히 일치하는 답변을 가진 자료는 없으나, 이와 유사한 문제를 겪는 경우가 있었으며, 일반적으론 데이터의 유형이 모델 요구사항과 정확히 맞지 않아 생기는 경우가 많습니다.

주로 발생하는 문제는 다음과 같습니다:
- 판다스 데이터프레임에 있는 비수치형 데이터가 있을 때
- 데이터에 NaN이나 무한대 값이 포함되어 있을 때
- 예상과 다른 데이터 유형이 섞여 있을 때

이를 해결하기 위한 방법으로는 다음과 같은 점을 확인해 보시기 바랍니다:
1. 데이터의 모든 컬럼이 숫자 유형(float 또는 int)인지 확인하세요.
2. 결측치(NaN)가 존재하지 않는지 확인하세요.
3. 필요하다면 데이터 유형을 변환해주세요.

유사한 상황에 대한 일반적인 안내이며, 자스민님의 경우에는 추가로 데이터 내의 유형에 대한 구체적인 확인이 필요해 보입니다.

아래 링크는 다른 상황에 대한 안내이므로 직접적인 해결책이 될 수는 없지만, 유사한 상황에서의 데이터 전처리 방법에 대해서는 참고할 수 있습니다:
- “5.9 bike sharing demand에서 standardScaler”에서는 데이터 전처리 단계를 거치는 과정에서 발생할 수 있는 유형의 변화와 성능 향상을 위한 방법에 대해 다루고 있지만, 정확한 에러 해결 방법은 아니라는 점 양해 부탁드립니다.

자스민님의 문제 해결을 위해 조금 더 구체적인 질문이나, 추가적으로 스크린샷이나 코드의 일부분을 공유해주신다면 더 정확한 답변을 드릴 수 있을 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

자스민님의 프로필 이미지
자스민

작성한 질문수

질문하기