goorm을 써서 코드를 실행해보는데 데이터 분석하는 과정에서 랜덤 포레스트를 쓸 때는 warning 메시지가 하나도 안 나왔는데 한번 XGBoost를 사용하니까 바로 WARNING: ../src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. 0.9724770642201834 /usr/local/lib/python3.9/dist-packages/xgboost/compat.py:31: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead. from pandas import MultiIndex, Int64Index /usr/local/lib/python3.9/dist-packages/xgboost/sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1]. warnings.warn(label_encoder_deprecation_msg, UserWarning) /usr/local/lib/python3.9/dist-packages/xgboost/data.py:208: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead. from pandas import MultiIndex, Int64Index 이런 워닝 코드가 뜹니다. 어떤 것이 문제일까요? 코드는 아래에 있습니다. import pandas as pd pd.set_option('display.max_columns',None) train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") # 사용자 코딩 # print(train.head()) # print(train.describe()) from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(train.drop('target',axis=1), train['target'], test_size=0.2, random_state=2022) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=2022, max_depth=5, n_estimators=400) rf.fit(X_tr,y_tr) pred = rf.predict(X_val) from xgboost import XGBClassifier xgb = XGBClassifier(random_state=2022, max_depth=5, n_estimators=400, learning_rate=0.01) xgb.fit(X_tr,y_tr) pred = xgb.predict(X_val) from sklearn.metrics import f1_score print(f1_score(y_val,pred))
안녕하세요, 매 강의마다 좋은 수업해주셔서 감사드립니다. lightgmb 뽀너스 영상도 정말 감사합니다~~ f1_score로 평가를 진행하고 싶었으나, 해당 오류가 발생하여 질문드리게 되었습니다. 제시된 데이터 set에 적합한 평가 모델을 문제에서 제시를 해주는 것인지, 제가 잘못된 코딩을 한 것 인지 확인해주시면 너무 감사드릴 것같습니다. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted'].에러 메시지를 확인하고 임의로 micro를 추가하여 옵션값을 주니까 에러 메시지 없이 평가값이 나오는점 확인하였습니다. 혹시 average setting이라는걸 세팅하는 경우는 어떤 경우인지 알려주실 수 있으신가요?? 발생 오류 : Target is multiclass but average='binary' --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-22-dbd4046600d4> in <cell line: 34>() 32 pred = model.predict(X_val) 33 ---> 34 print(f1_score(y_val,pred)) 35 36 # submit = pd.DataFrame({ 3 frames /usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py in _check_set_wise_labels(y_true, y_pred, average, labels, pos_label) 1389 if y_type == "multiclass": 1390 average_options.remove("samples") -> 1391 raise ValueError( 1392 "Target is %s but average='binary'. Please " 1393 "choose another average setting, one of %r." % (y_type, average_options) ValueError: Target is multiclass but average='binary'. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted']. *작성코드 # 라이브러리 불러오기 import pandas as pd # 데이터 불러오기 train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") target = train.pop('Segmentation') train = train.drop('ID',axis = 1) test_id = test.pop('ID') # 데이터 인코딩 train = pd.get_dummies(train) test = pd.get_dummies(test) # print(train.shape,test.shape) # 검증데이터 생성 from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split( train,target,test_size=0.2,random_state=2023 ) # 모델 생성 및 평가 from sklearn.metrics import f1_score from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state = 2023,max_depth = 5,n_estimators = 200) model.fit(X_tr,y_tr) pred = model.predict(X_val) print(f1_score(y_val,pred))
작업형2 예시문제는 X_train과 X_test의 '주구매상품' 컬럼의 카테고리 개수와 종류가 다른 경우였습니다(차집합 소형가전) 인코딩 전에 두 데이터를 concat -> 인코딩 후 -> 다시 두 개로 분리하는 것은 원핫 인코딩에만 해당되는 것일까요? 왜냐면 라벨 인코딩은 제가 concat 과정을 생략하고 모델 선택 및 예측까지 진행했을 때 딱히 에러가 발생하거나 성능에 문제가 있어보이진 않았습니다. 선생님도 강의에서 라벨 인코딩을 진행하면서 concat 과정을 거치지 않은 걸로 보이고요 object형의 카테고리 개수가 다르더라도 라벨 인코딩을 선택한다면 별도의 처리를 거치지 않아도 되는 것인지가 궁금합니다 늘 감사드립니다
히스토그램이랑 describe로 확인한 price 값 중에 굉장히 멀리떨어져있는 값이 나왔는데, 이건 이상치로 해석하는게 아닌가요?' 그리고 강의에서 r 2값이 0.077이 나왔는데. 이게 평가 지표에서 좋게 받을 수 있는건가요? R에서는 상관관계랑 *** 로 변수를 선택하는게 있었던거 같은데, 파이썬에서는 그냥 진행해야하는건가요?
안녕하세요! 모의고사풀어보기 2에서 시험 환경에 선생님이 올려주신 코드를 그대로 복사해서 print(test)를 해보면 아래와 같이 인덱스가 오름차순으로 정렬되지 않아 마지막 값에 'index':test.index를 했을 때도 선생님 화면과 다르게 나오던데, 혹시 데이터가 바뀐 걸까요..? 늘 친절히 알려주셔서 감사합니다!!
안녕하세요? 독립성 검정강의에서 문제를 꼬아서 낸다고 하면 데이터를 정제된 데이터로 바꾸는 데이터 프레임으로 만드는거 혹시 어떻게 하면 좋을지 잘 모르겠어요 ㅠㅠ df.groupby('근무지')['근무기간'].sum() 해서 합계는 다 구하겠는데, 데이터 프레임으로 만드는건 피봇 기능을 써야할것 같은데...
# 랜덤포레스트 from sklearn.ensemble import RandomForestClassifier rf=RandomForestClassifier(random_state=2023) rf.fit(X_tr,y_tr) pred=rf.predict_proba(X_val) pred=rf.predict_proba(X_test) pd.DataFrame({'ID':X_test['ID'],'Reached.on.Time_Y.N':pred[:,1]}).to_csv('dddd.csv',Index=False) 위 코드로 실행 시 , 아래 ID값에 대한 오류가 나와 오류 해석 및 해결방법 문의드립니다,, KeyError Traceback (most recent call last) /usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 3801 try: -> 3802 return self._engine.get_loc(casted_key) 3803 except KeyError as err: 4 frames pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: 'ID' The above exception was the direct cause of the following exception: KeyError Traceback (most recent call last) /usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 3802 return self._engine.get_loc(casted_key) 3803 except KeyError as err: -> 3804 raise KeyError(key) from err 3805 except TypeError: 3806 # If we have a listlike key, _check_indexing_error will raise KeyError: 'ID'
안녕하세요. 강의 잘 듣고 있습니다. csv 파일 내보낼 때 (강의) pd.DataFrame({ 'index': test.index, 'target':pred }).to_csv("____.csv", index=Faslse) < 나> reset_index()쓰고 해도 되는지 궁금합니다. # 내보내기 submit = pd.DataFrame({ 'target': pred }).reset_index().to_csv("result.csv", index = False) <나 결과> -- "Unnamed:0" ? submit = pd.DataFrame({ 'target': pred }).to_csv("result.csv") reset_index()도 안 쓰고 csv 파일 내보내기 할때.. .false도 안 쓰니 "Unnamed:0"이라는 칼럼이 생겼습니다. 얘는... result.csv에서 자동으로 만들어낸 인덱스? 인가요? submit에 넣어준 칼럼도 아닌데 왜 생기는건가요?
안녕하세요. 작업형2 모의문제1에서 평가 시 roc_auc_score를 쓸 때는 predict_proba와, roc_auc_score(y_val, pred[:,1])형태를, 나머지 평가 방법을 쓸 때는 predict와 (y_val, pred)형태를 쓰시던데요!! 문제에서 신용카드 이탈 확률을 찾는거라 predict_proba라고 생각했는데, 그냥 predict를 쓰는 것은 평가 방법 때문인가요? (일단 roc제외한 평가에는 predict를 쓰고 마지막 제출 시 proba로 다시 예측하는건지?) 수치형 컬럼 전처리에서 col=['age', 'bmi', 'children'] <-수치형 컬럼나열 from sklearn.preprocessing StandardScaler scaler=StandardScaler train[col]= scaler.fit _transform(train[col]) test[col]=scaler.transform(test[col])형태로 전처리를 하면 keyError: "None of [Index(['age', 'bmi', 'children'], dtype='object')] are in the [index]" 이런 에러가 자꾸 발생하는데 어디가 잘못된건지 궁금합니다!!
선생님 안녕하세요! 작업형 2 유형 예시문제 관련해 질문이 있습니다. ▲ '환불금액' 결측치 대체 전 ▲ '환불금액' 결측치 대체 후 '환불금액' 결측치가 기존에는 float형이었는데 중앙값으로 대체하니 object형으로 바뀌었는데, 이렇게 하는게 맞는지 궁금합니다. 그리고 다음과정인 범주형 → 수치형으로 바꿀때 '환불금액'도 바꿔야하나요? 매번 양질의 강의 제공해주셔서 감사합니다!
안녕하세요! 캐글 질문을 올려도되는지 모르겠으나,,ㅠㅠ 질문할 곳이 없어 한 가지만 여쭤보려고 합니다 https://www.kaggle.com/code/agileteam/t2-4-house-prices-regression/notebook 이 문제에서 마지막에 csv파일 만드실 때 id값을 y_test.Id로 넣으시던데요! 수험자에게 y_test데이터가 주어지는 건가요..? 그동안은 x_test데이터에서 id등을 불러와서 썼는데, 이 문제처럼 x_test데이터에 그 값이 없으면 y_test에서 불러오면 되는걸까요..? 강의와 무관한 질문 죄송합니다ㅠ