Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 랜덤포레스트
- 사이킷런
- 데이터분석
- 머신러닝
- 경력 기술서
- 데이터사이언티스트
- 판다스
- 데이터 사이언스
- pandas
- 주가데이터
- 이력서 첨삭
- 대학원
- 주요 파라미터
- 데이터사이언스학과
- 코딩테스트
- 주식데이터
- 하이퍼 파라미터 튜닝
- 커리어전환
- sklearn
- 하이퍼 파라미터
- 데이터사이언스
- 베이지안 최적화
- 파라미터 튜닝
- 퀀트
- 파이썬
- 자기소개서
- 퀀트 투자 책
- 데이터 사이언티스트
- 경력기술서 첨삭
- AutoML
Archives
- Today
- Total
GIL's LAB
Scikit-learn NotFittedError 본문
NotFittedError는 사이킷런의 모델 인스턴스를 학습하지 않고 활용할 때 발생하는 에러입니다.
간단한 예시를 살펴보겠습니다.
먼저 임의로 데이터를 만들고 LinearRegression 클래스를 이용해서 선형 회귀 모델을 만들겠습니다.
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.random.random((100, 3))
y = np.random.random(100)
model = LinearRegression()
다음으로 이렇게 만들어진 model을 사용해서 X의 라벨을 예측해보겠습니다.
model.predict(X)
[실행 결과]
---------------------------------------------------------------------------
NotFittedError Traceback (most recent call last)
<ipython-input-17-43a58eb494e8> in <module>
----> 1 model.predict(X)
~\AppData\Roaming\Python\Python38\site-packages\sklearn\linear_model\_base.py in predict(self, X)
353 Returns predicted values.
354 """
--> 355 return self._decision_function(X)
356
357 def _set_intercept(self, X_offset, y_offset, X_scale):
~\AppData\Roaming\Python\Python38\site-packages\sklearn\linear_model\_base.py in _decision_function(self, X)
334
335 def _decision_function(self, X):
--> 336 check_is_fitted(self)
337
338 X = self._validate_data(X, accept_sparse=["csr", "csc", "coo"], reset=False)
~\AppData\Roaming\Python\Python38\site-packages\sklearn\utils\validation.py in check_is_fitted(estimator, attributes, msg, all_or_any)
1378
1379 if not fitted:
-> 1380 raise NotFittedError(msg % {"name": type(estimator).__name__})
1381
1382
NotFittedError: This LinearRegression instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.
NotFittedError가 발생했습니다.
친절하게도 This LinearRegression instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator란 문구와 같이 등장했습니다. 생성한 LinearRegression instance가 학습되지 않았으니, fit 메서드를 이용해서 모델을 학습하라고 해석할 수 있겠네요.
현재 만든 model은 선언만 해준 것으로 빈 껍데기에 불과합니다.
이를 활용하기 위해서는 반드시 학습을 해줘야 합니다.
즉, 아래와 같이 X와 y를 이용해서 model을 학습해준 뒤 predict 메서드를 이용하면 정상적으로 작동하는 것을 알 수 있습니다.
model.fit(X, y)
model.predict(X)
[실행 결과]
array([0.62048451, 0.53776985, 0.44899954, 0.45861017, 0.48706049,
0.50052395, 0.61870385, 0.46024703, 0.49653643, 0.43481032,
0.44983331, 0.52403423, 0.45543152, 0.54226504, 0.47566291,
0.41802113, 0.46246691, 0.50580912, 0.55361506, 0.55269921,
0.57058922, 0.46028964, 0.43772055, 0.46397021, 0.46489378,
0.49923468, 0.53177449, 0.49144076, 0.59002174, 0.45737009,
0.51863138, 0.52950084, 0.64999773, 0.573832 , 0.51900087,
0.62237894, 0.47243325, 0.49283281, 0.41435333, 0.54753908,
0.51522962, 0.55591055, 0.51476189, 0.49597229, 0.51122384,
0.48453732, 0.49681429, 0.64020096, 0.60231534, 0.48973703,
0.56348271, 0.59633199, 0.39613843, 0.41111203, 0.51614134,
0.53283831, 0.55612269, 0.48904166, 0.49440104, 0.46914856,
0.59393956, 0.37794852, 0.42666274, 0.5397091 , 0.4348672 ,
0.59359121, 0.56832952, 0.40653642, 0.52258935, 0.66288156,
0.50907375, 0.56636368, 0.40810082, 0.51986254, 0.57423694,
0.49664783, 0.64125099, 0.55564907, 0.6561786 , 0.47324263,
0.48066972, 0.39247412, 0.53477159, 0.42134534, 0.5941709 ,
0.39727188, 0.48622512, 0.54156577, 0.43403335, 0.58460314,
0.56918672, 0.60613608, 0.46962133, 0.47261304, 0.50100671,
0.51835933, 0.44789845, 0.5769234 , 0.54713358, 0.55220004])
이는 지도학습 인스턴스의 predict 메서드 뿐만 아니라, 전처리 인스턴스의 transform 메서드에서도 동일합니다.
데이터 분석 서비스가 필요한 분은 아래 링크로!
'파이썬 > 환경설정 및 오류 해결' 카테고리의 다른 글
ValueError: too many values to unpack, ValueError: not enough values to unpack 해결 방법 (0) | 2023.08.07 |
---|---|
파이썬 개발 환경 구축: 아나콘다와 주피터 노트북 (1) | 2022.01.09 |
주피터 노트북 실행 결과 초기화 방법 (0) | 2021.09.05 |
주피터 노트북 기본 경로 설정, 브라우저 설정, 기타 오류 해결 (0) | 2021.09.03 |
Comments