안녕하세요. 유사한 질문을 찾아보았으나 의문이 해결되지 않아 질문드립니다. anova 테이블을 만들기 전 적합한 데이터 형태를 만들기 위해 melt 함수를 사용하시더라구요. anova 테이블을 만들 때 필요한 특정한 데이터 형태가 있는건가요? 왜 melt함수를 적용해 주어야 하는지 아직 이해하지 못해서 질문드려요. 답변 기다리겠습니다. 감사합니다.
선생님의 코딩 # LightGBM import lightgbm as lgb lg = lgb.LGBMClassifier(random_state=0, verbose=-1) lg.fit(X_tr, y_tr) pred = lg.predict(X_val) print("lightgbm") print(f1_score(y_val, pred, average='macro')) # 최종 제출 파일 (lightGBM) pred = lg.predict(test) result = pd.DataFrame({'pred':pred}) result.to_csv("result.csv", index=False) 저의 코딩 from lightgbm import LGBMClassifier lg = LGBMClassifier(random_state=0, verbose=-1) model = lg.fit(X_tr, y_tr) pred = model.predict(X_val) pred.shape f1_score(y_val,pred, average='macro') # basic # 0.9257472552209252 pred = lg.predict(test) submit = pd.DataFrame({'pred' : pred}) submit.to_csv('result.csv', index=False) pd.read_csv('result.csv') 여쭙고싶은 것은 선생님께서는 lg.fit을 어떤 변수에 넣지 않고 바로 학습시킨 뒤 그것으로 예측 및 검증을 하고 최종 test 예측까지 수행하시는데, 저는 lg.fit을 model이란 변수에 넣은뒤 예측 및 검증을하고, 최종적으로는 lg로 test 예측을 수행합니다. 혹시 이 차이에서 최종 예측성능에 차이가 생길까요?
교수님 안녕하십니까? 3회 기출유형 (작업형2)를 혼자 풀면서 심사위원분들께서 채점을 할 때, 사용자 코드를 보고 채점 코드를 변경하시는지 혹은 일괄적인 코드로 채점을 하시는지 궁금함이 생겼습니다. 궁금한 점 1) 테스트 데이터값을 예측할 때 -> pred = rf.predict_proba(test)[:,1] 로 하지 않고, -> pred = rf.predict_proba(test) 로 테스트 데이터를 예측한 이후, 아래와 같이 진행하면 심사위원분들이 유동적으로 채점 코드를 변경하시나요? test_index = test.index[:] test_index submit = pd.DataFrame({'index':test_index,'y-pred':pred[:,1]}) submit.to_csv('result.csv',index=False) pd.read_csv('result.csv') ※ 교수님이 주신 채점 코드를 아래와 같이 제 임의로 변경하면 채점이 되는것을 확인했습니다. roc_auc_score(y_test,pred) -> roc_auc_score(y_test,pred[:,1]) ※ 다만, 사용자 데이터를 보지않고 채점 코드를 일괄적으로 적용하면, 정해진 제출형식에 어긋나게 작성해서 0점을 받을까 걱정이되서 문의드립니다!
안녕하세요. 이번에 올라온 2유형 문제를 풀어보았는데요. <작성한 코드> import pandas as pd train = pd.read _csv("data/customer_train.csv") test = pd.read _csv("data/customer_test.csv") # 사용자 코딩 pd.set_option('display.max_columns', None) # 전처리 target = train.pop('총구매액') train['환불금액'] = train['환불금액'].fillna(0) test['환불금액'] = test['환불금액'].fillna(0) # [선택2] 원핫 인코딩 (카테고리가 다르면 합쳐서 진행 필요함) df = pd.concat([train, test]) df = pd.get_dummies(df) # 다시 분리 train = df.iloc[:len(train)] test = df.iloc[len(train):] 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 = 0) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) # 모델 학습 및 평가 from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() model.fit (X_tr, y_tr) pred = model.predict(X_val) from sklearn.metrics import root_mean_squared_error print("RMSE:",root_mean_squared_error(y_val, pred)) # 제출 pred = model.predict(test) submit = pd.DataFrame({'pred': pred}) submit.to _csv('result.csv', index=False) print( pd.read _csv('result.csv')) 결측치를 0으로 채우고 train,test 합쳐서 원핫인코딩 후 랜덤포레스트회귀 모델사용 RMSE 평가지표 값이 나왔는데 강사님 수치랑 너무 크게 차이가 나서요. 이렇게 많이 차이 나도 괜찮은건가요? 작을수록 좋은거이긴 하지만 강사님이랑 너무나 다른 값이 나와서 제가 작성한 코드와 화면 출력하여서 틀린부분이 있는지 문의 드립니다.
실기에서 GridSearchCV써도 되나요? 'n_estimators': [100, 200], 'max_depth' : [5, 10], 'min_samples_split': [2, 5] 만 설정했는데도 돌아가는데 꽤 오래걸리는 것 같아서요 귀찮아서 바로 refit해서 쓰고 있는데 돌려보고 나서 GridSearchCV는 주석처리하고 나온 파라미터만 써서 돌려야 할까요?