evaluate_regr(y_test, pred) 에 test데이터 세트와 예측 값을 넣는데, y_test의 경우 y_test[y_test < -1] 에 해당하는 값이 없기 때문에, np.log1p에 대입할 수 있지만, pred[pred < -1]에 해당하는 값은 존재하기 때문에, 예측값이 -1이보다 작은 경우에는 np.log1p에 대입할 수 없다고 생각합니다. 그래서, mean_squared_log_error를 호출하여 squared = False로 계산을 하였더니, ValueError : Mean Squared Logarithmic Error cannot be used when targets contain negative values. 라고 오류가 뜨더라구요. 결국 -1보다 작은 음수값을 대입할 수 없다는 수학적 오류 때문이겠지요... 하지만, 선생님께서 하신 RMSLE def rmsle(y, pred): log_y = np.log1p(y) log_pred = np.log1p(pred) ## log1p 랑 expm1은 하나의 쌍임. squared_error = (log_y - log_pred) ** 2 rmsle = np.sqrt(np.mean(squared_error)) return rmsle 를 활용한다면 오류가 뜨지 않는데, 제가 생각하는 방식에는 어떤 문제점이 있을까요?
안녕하십니까. 현재 완강 후 복습하고 있는 학생입니다! 5장 회귀 파트 Kaggle 보스턴 집값 예측 실습을 하던 중 궁금한 것이 생겨 질문드립니다. Kaggle에서 데이터를 받으면 train.csv와 test.csv가 있는데 처음 모델링을 진행할 때 train 데이터를 활용하여 진행했더니 test 데이터로 predict를 할 수 없었습니다. 알아본 결과 train 데이터셋으로 더미변수를 생성한 경우 test 데이터셋을 더미변수로 인코딩 했을 때 matching이 되지 않아 predict가 안되는 것 같았습니다. 따라서 train 데이터셋과 test 데이터셋을 합쳐서 새로운 데이터프레임(all_data)을 생성하여 모든 전처리 과정을 다시 진행하고 더미변수 생성 후 train 데이터셋과 test 데이터셋으로 다시 분리를 해줬습니다. 이후 재분리된 train 데이터셋을 train_test_split 으로 분할한 후 모델링을 진행하고 마지막에 all_data 에서재분리했던 test 데이터셋을 활용하여 model.predict(test) 를 통해 submission.csv 를 만들 수 있었습니다. 이런 과정을 진행하며 궁금한 점은 현업에서 만약 지금까지 수집된 데이터로 모델링을 진행했는데 예측할 데이터에 새로운 범주 혹은 기존 범주 중 새롭게 수집된 데이터가 있는 경우 처음부터 모델링을 다시 진행하는 것인지 아니면 다른 방법이 있는지 궁금합니다. 강의 들으며 정말 실력이 많이 늘었습니다. 복습이 끝나면 SQL 강의도 수강을 계획하고 있습니다. 좋은 강의 만들어주셔서 정말 감사합니다!
스태킹 모델 소개 - 기본 스태킹 3:25 즈음 예측 데이터 셋 생성시 keepdims 관련 warning이 떠서 검색해본 결과, 대충 2 dimension을 유지해야 한다는 걸로 보여서 대수롭지 않게 넘겼습니다. 그런데 스태킹 모델 소개 - 교차검증 스태킹 15:55 즈음 모델별 학습을 할 때는 한 페이지를 잡아먹을 정도로 warning 문구가 도배됩니다. 내용을 보니 Scipy 1.11.0 이후 keepdims default 값이 False이기 때문에 편의에 따라 keepdims를 True든 False든 지정해두라는 것 같은데, 어느 부분에 추가해야할지 잘 모르겠습니다. 어떻게 해결해야 할까요?
안녕하십니까 선생님 좋은 강의 수강하고 부족한 부분에 대해 강의를 여러번 돌려보고 있습니다. 다름아니라 제가 Stacking 앙상블 학습에 관심을 갖고 공부를 진행하고 있는데 sklearn에 StackingRegressor 메소드(?)를 이용한 코드를 작성해 봤습니다. 아래는 작성한 코드 중 메소드 부분입니다. Stacking = StackingRegressor(estimators=estimators, final_estimator=meta_model, cv=10) 여기서 cv=10을 이용하면 강의 예시에 나오던 stacking_input_data 함수 정의에서 n_folds를 10한것과 같은 과정으로 이루어지는건가요?
안녕하세요 맥북 에어 M1칩을 사용하고 있는 학생입니다. 다름이 아니라 brew install lightgbm, pip install lightgbm(주피터에서) 해도 이미 설치가 되있다고 뜨지만 주피터에서 import lightgbm을 하면 오류가 뜹니다 오류 내용은 OSError: dlopen(/Users/choeyuhyeon/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: '/usr/local/opt/libomp/lib/libomp.dylib' Referenced from: '/Users/choeyuhyeon/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so' Reason: tried: '/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/usr/local/lib/libomp.dylib' (no such file), '/usr/lib/libomp.dylib' (no such file) 다음과 같고 https://github.com/Microsoft/LightGBM/issues/1369 여기서 나오는 코드를 그대로 사용해봐도 똑같은 상황입니다. 어떻게 해야될까요..? 윈도우 노트북을 새로 사야되나요..
안녕하세요, 강의 내용을 Colab를 통해서 실습을 하고 있습니다. 다른 코드를 실행 할때는 별 문제가 없었지만, 산탄데르 은행 데이터셋과 사기검출 데이터셋을 실행할때 read_csv를 통해 csv파일을 읽어오면 실행 할때마다(런타임이 바뀔때 마다) read된 결과가 다른데 왜 그런지 알 수 있을까요? 사기검출 데이터의 경우 25838 rows × 31 columns 로 읽히는 경우도 있고, 39702 rows × 31 columns로 읽어지는 경우도 있습니다. 두 데이터셋다 공통적으로 Nan 값도 생기기도 하네요. 런타임을 몇번 초기화 하다보면 운좋게(?) 정상적으로 읽어지는 경우도 있습니다. 왜 실행할때마다 결과가 다르게 나오는지 궁금합니다!
안녕하세요 맥 환경에서 머신러닝 공부중입니다. 현재 맥북프로로 M1 pro칩 기반에서 작동 중에 3분 30초에 GridSearchCV 작동부분에서 아래와 같은 오류가 발생합니다. DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel(). n_jobs = -1로 설정하였을 때는 결국 timeout으로 빠져 작동 정지 됩니다. 아마 cpu환경이 M1과 다르기 때문에 생기는 오류라고 생각되어 n_jops=2, 4, 8 ,10으로 설정하여 가동을 시켰습니다. n_jops를 변경하면 값이 결과값이 나오지만, 여전히 DataConversionWarning이 나옵니다. 왜 그런지 알 수 있을까요? (사진 함께 첨부합니다.)
선생님 차원축소 부분을 공부하다가 개념이 헷갈리는 부분이 있어서 질문드립니다... 제가 이해한 바로는 차원 축소는 피처의 개수를 줄이는 것 보다는 차원 축소를 통해 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출하는게 목적인데 그러면 코드상에서 저렇게 차원축소로 fit transform 한 결과로 나오는 저 두 숫자들이 의미하는 바가 무엇인지 이해가 잘 안됩니다. 저렇게 2차원으로 차원 축소를 시켜서 나오는 2개의 피처들이 의미하는게 새로운 축? 이라고 이해해야 하나요..? 저 각각의 lda_component들이 무엇을 의미하는지가 이해가 잘 안됩니다.
아이템 기반 인접 이웃 협업 필터링 실습 내용 중 문의드립니다. 28:16에서 확인가능한 최종 9번 사용자에 대하여 보지않은 영화 중 예측평점이 높은 영화 10개를 추천해주는 결과에서 1위 Shrek은 pred_score가 0.866202로 확인됩니다. 실제 평점범위가 0보다 크며 가장 큰 값은 5인데 추천되는 영화의 예측평점이 너무 낮은건 아닌지요? pred_score가 나올 수 있는 값의 범위와 의미가 궁금합니다.
안녕하세요 선생님, 다름이 아니라 타이타닉 생존자 예측1 강의를 복습하다 코드에 에러가 생겨 질문드립니다. titanic_df['Cabin']에서 첫 번째 문자열만 가져오기 위해서 titanic_df['Cabin'].str[:1]을 실행하였으나 'PandasArray' object has no attribute '_str_getitem' 라는 에러가 나왔습니다. 해당 에러를 고치기 위해 어떻게 코드를 수정해야 하는지 혹은 어떤 다른 방법으로 조치해야 하는 지 여쭙기 위해 질문드립니다.
안녕하세요 선생님. 먼저 좋은 강의 감사합니다. 다름이 아니라, feature vectorization 부분 관련 질문이 있어 이렇게 글을 씁니다. 강의 4분 정도에 name은 CountVectorizer를 쓰고 item_description은 상대적으로 길어서 TfidfVectorizer를 쓴다고 하셨는데, 그렇다면 해당 데이터셋이 아닌 다른 데이터셋에 적용할 때도 컬럼의 길이가 상대적으로 짧으면 CountVectorizer, 상대적으로 길면 TfidfVectorizer를 써야된다고 이해를 해도 괜찮을걸까요? 감사합니다.