capital bike share demand 진행 중 error 모음집이다.
AttributeError: 'Series' object has no attribute 'value'
[원인]
1. counts 뒤 ( ) 실수로 빠뜨림
2. value.counts() 가 아니라 value_counts()임
[해결]
train["dayofweek"].value_counts()
TypeError: The DTypes <class 'numpy.dtype[int64]'> and <class 'numpy.dtype[datetime64]'>
do not have a common DType. For example they cannot be stored in a single array unless
the dtype is `object`.
LR(선형회귀) 분석을 위해 데이터를 Train, Test 으로 분리하는 과정에서 생긴 에러이다.
int64와 datetime64의 데이터타입을 가진 데이터를 살펴봐야 한다.
[원인]
1.
범주형 변수를 category화 하기 전이다.
datetime의 데이터타입은 datetime64[ns]이다.
2.
범주형 변수를 category로 변경한 후이다.
그래도 datetime의 Dtype은 datetime64[ns]이다.
[해결]
datetime64[ns]를 object로 바꾸어 주었다.
내친김에 categorical_features를 보기 위해서 범주형 피쳐들도 object로 데이터타입을 바꾸었다.
category가 데이터타입인 애들을 categorical_features = df.select_dtypes를 하게 되면 이상하게 선택되지 않는다.
object로 바꾸어주었더니 나오긴 한다.
▶category가 데이터타입인 애들을 categorical_features = df.select_dtypes를 하게 되면 이상하게 선택되지 않는다.
원인을 알았다.
아래 코드 작성 후 돌려보면 잘 선택된다.
이 부분을 간과했던 것 같다.
후에 모델도 잘 돌려진다.
ModuleNotFoundError: No module named 'xgboost'
이건 비교적 해결하기 쉬운 에러인 것 같다.
xgboost라는 모듈을 사용할 예정인데, 이 모듈이 설치되어 있지 않아서 생기는 오류이다.
▶ XGBoost
Gradient Boosting 알고리즘을 분산환경에서도 실행할 수 있도록 구현해놓은 라이브러리.
Regression, Classification 문제 모두 지원한다.
성능, 자원 효율적인 면에서 좋다.
[해결]
XGBoost 설치
pip install xgboost
설치가 완료되었다.
다시 실행시켜 보니 에러가 뜨지 않았다.
ValueError: DataFrame.dtypes for data must be int, float, bool or category. When
categorical type is supplied, DMatrix parameter `enable_categorical` must
be set to `True`. Invalid columns:year, hour
year, hour 컬럼의 데이터타입이 잘못된 것 같다.
[해결 과정]
1.
pip install category_encoders
stackoverflow 고수님이 library 링크 주고 encode해보라길래 설치했는데
고수님의 처방이 듣질 않았다.
▶ 고수님 처방 링크
그렇게 나의 삽질이 시작되었다.
2.
X_train['year'] = pd.to_numeric(X_train['year'])
X_train['hour'] = pd.to_numeric(X_train['hour'])
판다스 to_numeric 활용해 데이터 타입을 변경해주면 된다는 글을 보고 변경했지만 실패..
[해결]
명의 처방 성공
X_train['year'] = pd.to_numeric(X_train['year'])
X_train['hour'] = pd.to_numeric(X_train['hour'])
X_test['year'] = pd.to_numeric(X_test['year'])
X_test['hour'] = pd.to_numeric(X_test['hour'])
다행히 삽질은 오래 걸리지 않았다.
x_train과 x_test 中 year, hour 데이터 타입을 numeric으로 바꿔주었더니 해결되었다.
▶명의 처방
import lightgbm as lgb
이것 또한 모듈만 설치해주면 나는 오류이다.
머신 러닝에 발 조금 깨작 담글락 말락하는 초보인 내 입장으로는 모듈이 이것저것 많다고 느껴진다.
그래도 나름 재미있어서 다행 ㅋㅋ
[해결]
!pip install lightgbm
lgb를 설치하고 190번 코드를 실행시켰다.
에러가 나지 않았다.
남이 작성한 코드를 그대로 가져와서 쓴다고 해도
결국 내 코드에 맞게 변형해야 하는 과정에서 생기는 에러는 정말 많다.
pip같이 단순히 설치만 끝나는 에러는 차라리 감사하다.
구글링해도 명쾌하게 나오지 않아서 몇시간을 삽질하다가
A 답변과 B 답변을 섞으면 비로소 맞게 실행되는 경우도 있었다.
다른 프로젝트 들어가면 또 에러가 생기겠지..
하지만 몇시간을 삽질해도 에러가 결국에는 어떻게든 해결되는 과정을 보면서
나름 재미있었고 못할 것도 없다는 걸 느꼈다.
그리고 최종적으로는 컴퓨터와 인간의 싸움에는 인간의 잘못이 99.999999999%라는 것을 새삼 느끼게 해줌.
stackoverflow는 진리다.
'[Data Science] > Data Analysis' 카테고리의 다른 글
[Kaggle]bike share demand (1. 첫 발표 후 수정사항) (0) | 2022.07.01 |
---|---|
[Python/Jupyter Notebook]CSV 파일 합치기 (0) | 2022.05.09 |
[Bike Sharing Demand]비즈니스 이해 - 자전거 공유 시스템 (0) | 2022.04.27 |
[Kaggle]Capital Bike Sharing (0) | 2022.04.26 |
[Bike Sharing Demand]비즈니스 이해 - Washington D.C. Weather (0) | 2022.04.22 |