train_target=train.pop('TotalCharges') # 3. 분할 from sklearn.model_selection import train_test_split tr_x, val_x, tr_y, val_y =train_test_split(train,train_target, test_size=0.2, random_state=0) # 3. 분할 from sklearn.model_selection import train_test_split tr_x, val_x, tr_y, val_y =train_test_split(train,train['TotalCharges'], test_size=0.2, random_state=0) tr_x.head(), tr_y.head(), val_x.head(), val_y.head() 위 두가지 경우로 모델링 하여 MAE값을 산출했습니다. 아래꺼는 Linear Regression : 0.0000000000012394228 RandomForest Regressor : 1.9100924757282742306 XGB Regressor : 10.5623083675717790442 위에꺼는 Linear Regression : 914.6725879047844500747 RandomForest Regressor : 941.4584990860494144727 XGB Regressor : 1033.3863728784358499979 왜 이렇게 다른 결론이 나올까요? 해당 내용만 변경하고, 나머지 코드는 모두 동일한 상태에서 구동했습니다.
안녕하세요 저번에 평가하지 않고 랜덤포레스트 한개로만 제출한다고 했을 때에 그러면은 인코딩까지 동일하게 하고 rf.fit (X_tr, y_tr)을 rf.fit (train, target)으로 바꾸고 pred = rf.predict(X_val)을 pred = rf.predict(test)로 바꿔서 target = train.pop('농약검출여부') train = pd.get_dummies(train) test = pd.get_dummies(test) train, test = train.align(test, axis=1, join='left', fill_value=0) from sklearn.ensemble import RandomForestClassifier ------------------------------------- rf = RandomForestClassifier(random_state=0) rf.fit (train, target) pred = rf.predict(test) result = pd.DataFrame({'pred':pred}) result.to _csv('result.csv',index=False) 랜덤포레스트 기준 요런식으로 작성하면 되는지 궁금합니다. 글구 쌤께서 target = train.pop할때 항상 인코딩하기 전에 하는데 이유가 있는지 궁금합니다! 항상 이해 잘되게 가르쳐 주셔서 감사드립니다. 선생님
안녕하세요 작년에 할인할때 구매했다가, 필기를 올해 4월이 되어서야 합격하면서 해외출장으로 인해 6월 초부터 수강하다가 금주 시험을 앞두고 집안행사로 금일 접수 취소를 했습니다. 교재도 구매해서 열심히 들어보려고 했는데 11월 시험에 다시 응시하고 싶은데 사전에 책을 선공부하고 나중에 재요청드려서 남아있는 기간만이라도 재수강하고 싶습니다. 꼭 갖고 싶었던 자격증이라 필기 합격까지 3차례의 시도가 있었기에 더욱 절실합니다. 꼭 합격해서 후배나 지인분들에게 홍보 많이 할테니 기회를 주시면 감사하겠습니다.
안녕하세요. X_train, y_train을 합치고 난 다음 어떻게 하는지 모르겠습니다,, df = pd.concat([X_train, y_train['Reached.on.Time_Y.N']],axis=1) print(df.head(1)) print(df.shape, X_test.shape) target = df.pop('Reached.on.Time_Y.N') df = pd.get_dummies(df) X_test = pd.get_dummies(X_test) print(df.shape, X_test.shape) 이렇게 합치고 원핫인코딩하는게 맞나요? 또 값이 아래와 같이 나오는데, 전보다 이후의 shape가 더 크게 나오는게 맞는지 궁금합니다! (8799, 12) (2200, 11) (8799, 20) (2200, 20) -------------- q2. roc_auc = roc_auc_score(y_val, pred[:,1]) roc_auc구할 때만 pred[:,1]을 적나요? 다른 건 pred만 적는지 궁금합니다!
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 풀이 도중에 자꾸 아래와 같은 오류가 뜨더라구요 KeyError: "['customerID'] not found in axis" train = train.drop('customerID',axis=1) test= test.drop('customerID',axis =1) 질문 1]그래서 해당 컬럼(customerID)만 드롭해서 아래와 같이 푸니까 에러는 안뜨는데 이걸 드롭해도 괜찮은지 아닌지는 어떻게 판단해야하나요? 질문 2]왜 customerID는 원핫인코딩으로 해결이 안되고 오류가 뜨는 건지 궁금합니다ㅠ 질문 3] customer id를 값이 모두 유니크해도 숫자형이면 유지하지만, 문자형이라 ID는 삭제했다고 하셨는데 숫자형이면 drop없이 그냥 원핫인코딩만 해도 에러가 안뜨는 걸까요? 질문 4]이런 오류를 방지하려면 아래와 같이 train과 test를 먼저 합쳐서 인코딩한 뒤, 다시 분리해서 사용하는게 안전할까요? df_all = pd.concat([train, test]) df_all_encoded = pd.get_dummies(df_all) train_encoded = df_all_encoded.iloc[:len(train), :] test_encoded = df_all_encoded.iloc[len(train):, :]
안녕하세요. X_train, y_train을 합치고 난 다음 어떻게 하는지 모르겠습니다,, df = pd.concat([X_train, y_train['Reached.on.Time_Y.N']],axis=1) print(df.head(1)) print(df.shape, X_test.shape) target = df.pop('Reached.on.Time_Y.N') df = pd.get_dummies(df) X_test = pd.get_dummies(X_test) print(df.shape, X_test.shape) 이렇게 합치고 원핫인코딩하는게 맞나요? 또 값이 아래와 같이 나오는데, 전보다 이후의 shape가 더 크게 나오는게 맞는지 궁금합니다! (8799, 12) (2200, 11) (8799, 20) (2200, 20)
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 기출 5회 아래와 같이 풀어도 된다고 하셨는데 한가지 궁금한점이 생겨 재질문 드립니다. 질문1) 검증데이터분리를 한 것과 안한것에 대해 결과에 차이가 발생하나요? 차이가 발생한다면 어떤 이유 때문인지 알 수 있을까요? y=train.pop('price') train=pd.get_dummies(train) test=pd.get_dummies(test) from sklearn.ensemble import RandomForestRegressor rf =RandomForestRegressor(random_state=0) rf.fit (train,y) pred=rf.predict(test) submit = pd.DataFrame({'pred':pred}) submit.to _csv('result.csv', index=False)
오늘까지 수강을 들어서 섹션 10까지 수강을 완료했습니다. 이후 강의 중 필수적으로 수강해야 하는 강의가 궁금합니다. 섹션 11에 로지스틱 회귀(필수) 라고 되어있는것도 필수로 들으라는 의미 맞죠?? 선생님이 수강 할 강의 다 알려주시면 이후에는 문제 풀이만 계속 할 생각인데.. 기출문제 먼저 풀고 책에있는 예상문제 푸는게 나을지, 예상문제부터 푸는게 나을지 조언 부탁드립니다.
안녕하세요 선생님. 제가 수강을통해 배우기로는 decribe(include ='O')속성을 찍어봐서 unique개수가 맞지않으면 데이터를 합친 후 인코딩을 진행하는거로 알고있습니다. 강의중에는 평소에는 보통 그냥 train,test를 따로따로 인코딩 하시더라고요.(원핫에경우에도, 라벨인코딩일때는 train ->fit_transform, test->transform이런식으로). 저도 이 방식으로 하다가 원핫이든 라벨인코딩이든 unique개수가 같든 그냥 모두 데이터를 합친 후, 인코딩 한 후에 데이터를 다시 train과 test를 분할해 사용하고 있습니다 .(스케일링 필요할 경우에는 인코딩 후 스케일링 후 분할). 혹시 이 방법으로 계속 진행하고 시험환경에서도 그렇게 해도될지 질문드립니다. data = pd.concat([train, test], axis =0) print(data.shape) from sklearn.preprocessing import LabelEncoder cols = data.select_dtypes(include = "object").columns for col in cols: la = LabelEncoder() data[col] = la.fit_transform(data[col]) train = data[:len(train)].copy() test = data[len(train):].copy() print(train.shape, test.shape)
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 아래 코드 안 쓸경우, # 데이터를 매번 새롭게 불러오기 위해 함수로 제작 함 def get_data(): train_copy = train.copy() test_copy = test.copy() return train_copy, test_copy 아래처럼 입력하면 되나요? from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() display(train[cols].head(2)) train[cols] = scaler.fit_transform(train[cols]) test[cols] = scaler.transform(test[cols]) display(train[cols].head(2))