학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 문제3번에 셀 실행하면 답도 나오고, 다른것도 나오는데, 무슨뜻이야? 133 <ipython-input-41-735169098>:16: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` df['f3'] = df['f3'].replace('vip',3)
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 원핫 인코딩이나 레이블 인코딩 할 때, 강의를 보면 object인 컬럼에서 카테고리(or nunique)가 같은지 비교하고 그에 따라 다르게 작업을 하는데요. 그냥 비교할 필요없이 항상 concat을 한 후에 원핫인코딩이든 레이블인코딩을 진행하면 불리한 점이 있을까요? 떄에 따라 다르게 대응하는 것보다는 기본적으로 concat을 하고 인코딩을 하는게 가장 안 헷갈리고 편한 방법 같아서 문의드립니다.
문제1-2. gender를 종속변수로 하고 나머지 변수들(age, length, diameter, height, weight)을 독립변수로 사용하는 로지스틱 회귀 모델을 적합시킨 후, 잔차 이탈도(Residual Deviance)를 계산하시오. (반올림하여 소수 둘째자리까지 계산) 인강에서는 glm으로 풀고 문제집에서는 logit으로 푸는데 그냥 glm 말고 logit으로 풀면 안되나요? 그리고 import statsmodels.api as sm 을 꼭 넣어야 하나요? 넣지 않아도 답이 나오더라구요.
강사님 안녕하세요 데이터셋을 다루는 중에 이상치가 보여서 train 데이터는 전처리했는데, 혹시 test 데이터도 이상치가 있더라도 따로 처리하지 않고 그대로 두는 게 더 나은 걸까요? 그리고 현재 데이터셋으로 모델 평가했을 때 RMSE가 778 정도 나오는데, 이 정도면 성능이 괜찮은 걸까요? train.loc[1659,'총구매액'] = 0 train.loc[3174,'총구매액'] = 0 train.loc[3488,'총구매액']= 0 train.loc[1659,'최대구매액'] = 0 # print(train[(train['총구매액']<0) | (train['최대구매액']<0)]) print(test[test['최대구매액']<0]) #2 test.loc[579,'최대구매액'] = 0 test.loc[1177,'최대구매액'] = 0 print(test[test['최대구매액']<0]) 감사합니다
# 출력을 원하실 경우 print() 함수 활용 # 예시) print(df.head()) # getcwd(), chdir() 등 작업 폴더 설정 불필요 # 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가 import pandas as pd train = pd.read _csv("data/customer_train.csv") test = pd.read _csv("data/customer_test.csv") #총 구매금액 , rmse target = train.pop("총구매액") #수치형 변수 스케일링 cols = train.select _dtypes(exclude = 'object').columns from sklearn.preprocessing import MinMaxScaler mx = MinMaxScaler() train[cols] = mx.fit _transform(train[cols]) test[cols] = mx.transform(test[cols]) ob = train.select _dtypes(include = 'object').columns from sklearn.preprocessing import LabelEncoder for col in ob: le = LabelEncoder() train[col] = le.fit _transform(train[col]) test[col] = le.transform(test[col]) #데이터 나누기 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) import lightgbm as lg model = lg.LGBMRegressor(random_state = 0) model.fit (x_tr,y_tr) pred = model.predict(x_val) from sklearn.metrics import root_mean_squared_error r = root_mean_squared_error(y_val,pred) pred = model.predict(test) s = pd.DataFrame({"pred" : pred}) s.to _csv("result.csv", index= False) df = pd.read _csv("result.csv") #758.1836860967057 800정도가 나온다고 하던데 758이 나온거면 모델 성능이 더 좋다고 하는건데 이게 이상일수도 있을까요? 750점 대가 나오니까 불안하네요 ,, 추가로 이렇게 pd.read_csv로 확인했을때 제대로 나오면 그냥 제출하면 되는거죠??
ols를 이용해서 종속변수를 예측할때는 바로 model.predict(train) 이런식으로 바로 진행했잖아요, 근데 여기서 test데이터에서 종속변수로 주어진 값을 pop하고, model.predict(test) > 0.5 이런식으로 진행하는 이유가 궁금합니다.. 복습을하다보니 헷갈려서요.. ols와 logit의 특성 차이일까요?
밑에 원핫인코더에 관해 질문을 드렸는데요. object형식 컬럼을 지정한 cols 리스트로 지정하여 인코딩을 진행하면 수치형 데이터를 버리게 되어서 위험하다고 하셨는데요. 그럼 label인코더로 사용하게 되면 이부분도 수치형 데이터를 버리게 되는거 아닌가요? for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) 그럼 label인코더를 선택할 시에는 수치형데이터에 별도로 스케일링 작업을 해줘야되는건지... 헷갈리네요^^;;