소개
게시글
질문&답변
test data를 예측할때 scaling 질문
아 넵 항상 자세한 답변 감사합니다! grid search로 light gbm을 이용할 시 eval set를 지정해주지 않으면 아예 코드가 돌지 않는 거 같습니다. 더 검색해보고 있습니다!! ㅎㅎ 질문1) "eval_set은 검증 데이터 셋을 직접 지정하는 것인데" 라고 가르쳐주셨는데 => 그렇다면 보통 grid search cv를 이용하여 분석시 만약에 제가 XGBoost를 사용한다면(scikit learn의 grid search와 호환이 잘 되는 알고리즘이라면) eval_set에 넣을 검증용 데이터는 train data에서 분리한 test data(여기서의 test data는 실제 예측하고자하는 target이 아닌 train data에서 분리된 test data) 이외의 train data에서 별도로 분리한 (validation) data 를 넣는 것인가요? (많은 분석자들이 어떤식으로 하는지 궁금합니다) 질문2) feature engineering 중 outlier들을 최대한 제거하지 않는 쪽으로 방향을 잡았고 이를 가령 평균이나 median등으로 대체하는 작업을 진행한다고 가정해보겠습니다. 여기서 대체하고자 하는 레코드의 target 값에(binary라면 0 또는 1) 따라 outlier의 target class가 1일때 혹은 target class 0일때로 나누어 값을 대체하게 된다면 더욱더 과적합의 위험성이 커지는지 궁금합니다. 위처럼 class의 따라 따로 처리해도 되는 지 그리고 실제로 많은 분석자들이 그렇게 하나요??? 분석자의 경험의 영향이 크게 작용되는 부분인 것 같아 아직까지는 전처리를 하면서 "이렇게 해도 되나?"라는 생각을 많이 하게 되여 질문을 계속 하는 것 같습니다. 죄송함다 ㅜㅜ 또한 scaling이나 이상치 처리를 어느정도 끝냈다면 (classification기반의 알고리즘 일때) feature data 간의 correlation도 성능에 큰 영향을 끼치는지 궁금합니다. regression 같은 경우에는 다중공선성 문제가 영향이 큰것으로 알고 있어서 문득 떠올랐습니다.
- 0
- 7
- 763
질문&답변
test data를 예측할때 scaling 질문
네! 답변 감사합니다!! 3. 그리고 그 뒤로 이어지는 질문은 제가 잘 이해하지 못했습니다. 1번 답변과 연관된 부분도 있는 것 같으니 다시 한번 재 정리해서 질문을 올려주시기 바랍니다. => 질문1) binary 문제의 train 데이터를 전처리 및 스케일링하는 작업 중에 예를 들어 특정 feature의 outlier들을 해당 feature의 평균값으로 대체 하려고 합니다. 이 중 train 데이터의 target data class가 1인 경의 값들만 대체해도 되는 건지 궁금합니다. 이후 test data도 같은 작업을 수행한다면 test data에는 y data가 없으니 train data에 해줬던 작업을 못하게 되는거 아닌가요? => 질문2) grid_cv = GridSearchCV(lgbm_clf, param_grid = params, scoring = "precision") grid_cv.fit(X_train, y_train, early_stopping_rounds = 100, eval_metric = "precision", eval_set = [(X_train, y_train),(X_test, y_test)]) 위에서 답변해주신 것처럼 eval set가 해당 코드에서 영향이 없다면, eval_metric = "precision", 도 영향이 없는 것인가요? scoring = "precision" 과 eval_metric의 차이를 잘 모르겠습니다. 많은 검색을 해봤지만 해당 파라미터의 대한 설명이 자세히 없어서 질문드렸습니다.
- 0
- 7
- 763
질문&답변
test data를 예측할때 scaling 질문
답변 감사합니다!! 그렇다면 만약에 binary 분류에서 train_test_split를 통해 test size를 0.3으로 데이터를 나눴다면 grid search cv를 하기 위해서는 위 0.7에 해당하는 데이터를 validation용으로 또 나누어 eval set 에 넣으면 되는 건가요? 그리고 하이퍼 파라미터 튜닝 이후, 최종으로 예측하고자하는 데이터 셋트를 통해 예측치를 뽑으면 되는 건가요? 앞서 질문드렸던 데이터 스케일링에 관해 0.3 에 해당하는 test data 가 아닌 최종 예측하고자 하는 데이터 셋트, 즉 target value가 없는 데이터셋트에도 해주는게 맞는 건가요? 신용카드 사기 분류 강의를 듣다 의문점이 생겼습니다. 해당 강의에서 class 가 1에 해당되는 feature의 outlier들을 처리하게 되는데 만약 제가 class1에 해당되는 feature의 outlier들을 해당 feature의 평균값으로 변경하였다면 그렇다면 최종으로 예측하고자 하는 데이터는 어떤 식으로 처리해야되는지 궁금합니다 만약 제가 아래와 같이 light gbm을 수행한다면 overfitting 되는 건가요?? grid_cv = GridSearchCV(lgbm_clf, param_grid = params, scoring = "precision") grid_cv.fit(X_train, y_train, early_stopping_rounds = 100, eval_metric = "precision", eval_set = [(X_train, y_train),(X_test, y_test)]) eval_set에 (X_vali, y_vali), (X_test, y_test)와 같이 넣어야 되는지 궁금합니다 또한 제가 만약 precision score를 중점으로 보고 싶다면 아래와 같이 하면 되는지... scoring과 eval_metric의 차이를 잘 모르겠습니다. 질문이 많아서 죄송합니다!! 아직 많이 헷갈리고 배우는 중입니다!! 매번 감사합니다
- 0
- 7
- 763
질문&답변
Decision Tree parameter 관련
아 답변갑사합니다!!! 궁금한게 또 있는데 앙상블 기법을 이용할때 여러개의 weak learner 를 이용한다고 설명해주셨는데, 제가 이해한게 맞나 확인차 질문남깁니다. 보팅 방식이면 weak learner 들이 서로 다른 알고리즘이여도 상관이 없는거고 랜덤 포레스트와 GBM은 weak learner를 보통 decision tree를 이용하는 것인가요? 즉 voting 방식은 다양한 알고리즘으로 학습이 가능한 반면 boosting 과 bagging은 decision tree에 기반되어 있는 것인가요? (classifiaction 내에서) 예를들어 GBM의 weak learner를 k-nn으로 사용할 수 있는 것인지 궁금합니다. 아니면 현재 아래와 같은 코드에서 GradientBoostingClassifier 패키지의 default estimator가 decision tree 인가요? 파라미터를 정할때 보팅과는 다르게 estimator를 정하는 것이 없어 갑자기 궁금했습니다. 검색도 열심히 해보면서 질문남기고 있습니다!!!!! start_time = time.time() gb_clf = GradientBoostingClassifier(random_state = 0) gb_clf.fit(X_train, y_train) gb_pred = gb_clf.predict(X_test) gb_accuracy = accuracy_score(y_test, gb_pred) print("GBM accuracy: {0:.4f}".format(gb_accuracy)) print("GBM consumed time: {0:.1f}sec".format(time.time() - start_time))
- 0
- 3
- 346
질문&답변
문법 관련 질문...
타이타닉 데이터로 강의 내용을 토대로 분석을 돌린 결과 입니다 의사결정나무는 강의 내용과 같은 accuracy를 보이지만 랜덤포레스트와 로지스틱 회귀분석에서는 정확도가 다릅니다. 혹시나해서 전처리 과정과 패키지 재설치 등을 해보았지만 역시 다른 결과를 출력하여 질문하게 되었습니다. sklearn의 패키지 버전 차이일까요? 버전이 달라도 같은 결과를 보일것으로 예상되는데... 혹은 밑의 warning이 연관되어 있는지 궁금합니다..(사진)
- 0
- 5
- 248
질문&답변
문법 관련 질문...
답변 감사합니다!! 그러면 원본 데이터 즉, x_titanic_df (x_titanic_df가 원본 데이터라는 가정하에) 를 건드리지 않고 유지하고 싶다면, 따로 train_x = x_titanic_df.copy() 처럼 따로 복사를 하고 복사된 train_x를 이용하여 원하는 작업을 하면 될까요?? 저는 함수의 반환값을 x_titanic_df에 다시 넣어주질 않았는데 x_titanic_df가 전처리 작업이 수행된 dataframe으로 바뀌어 있어서 질문을 남기게 되었습니다.
- 0
- 5
- 248
질문&답변
folium 인코딩 문제
항상 상세한 설명 감사합니다 강의 들으면서 열심히 배우고 있어요!! github도 이용해 보겠습니다.
- 1
- 7
- 524
질문&답변
folium 인코딩 문제
오!!! folium에서 한글이 잘 표현됩니다!! 감사합니다!! 해당 패키지를 설치하였을때 주피터 노트북 상에서 한글이 잘 표현되는 것이 folium을 이용한 시각화에만 제한된 것이 아니라 전체적으로 적용되는 것인가요?? 아직 깃허브는 어떻게 사용하는지 잘 모르겠어서요.. ㅎㅎ
- 1
- 7
- 524
질문&답변
반복문 데이터 구조 (리스트 원소 삭제)
num_list를 다른 변수에 복사 하면 되는 것 같은데 아직 위에선 무엇이 문제인지 잘 모르겠습니다;; ㅎㅎ (사진)
- 0
- 2
- 282
질문&답변
조건문 질문
넵 감사합니다~
- 0
- 2
- 150