5-2 type2 문제 (에어비앤비 가격) 문제에서는 pred = model.predict(test) 를 사용하는데5-3 type3 문제 (심장마비 확률) 문제에서 랜덤포레스트를 사용할 경우에도 pred=model.predict_proba(test)를 사용하나요? 평가지표에 roc-auc가 있으면 무조건 pred=model.predict_proba(test)로 예측한 후 DF변환을 해야 하나요? 아님 다른 기준이 있나요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 작업형1 모의문제 3 하려는데 data.csv 파일이 아닌 members.csv 파일이 받아집니다. 어디서 받을 수 있나요?
정말 기초적인 것일거 같은데 데이터 수 출력할때 len과 sum을 활용하는데 어떨때는 sum으로 해야 답이 나오고 어떨때는 len으로 해야 답이 나오는데 언제 써야 하는지 정확히 이해가 안되요. 문제2) 주어진 데이터에서 결측치가 30%이상 되는 컬럼을 찾고 해당 컬럼에 결측치가 있는 데이터(행)를 삭제 함. 그리고 30% 미만, 20% 이상인 결측치가 있는 컬럼은 최빈값으로 값을 대체하고 'f3'컬럼의 'gold' 값을 가진 데이터 수를 출력하세요! import pandas as pd df = pd.read _csv('members.csv') # print(len(df)*0.3) df.isnull().sum() # f1 삭제, f3 최빈값 대체 df = df.dropna(subset=['f1']) df['f3'] = df['f3'].fillna(df['f3'].mode()[0]) df.isnull().sum() print(len(df['f3'] == 'gold')) print(sum(df['f3'] == 'gold')) 이때 len으로 하면 답이 69개가 나오고, sum으로 하면 56개가 나오는데 답은 sum으로 할때 맞더라구요.
수업에서 X_train 결측치 채울때, X_test도 같이 채우라고 설명해주시면서 예제에 오브젝트 ['workclass'] 같은 것들은 X_test ['workclass'].mode()[0] 로 X_test의 최빈값 으로 채우셨는데요 수치형 ['age] 같은 것들은 value 변수 따로 정의하면서 value = int( X_train ['age'].mean())로 X_train의 평균값 으로 채우셔서요 test데이터는 데이터 타입별 어떤 데이터로 결측치 채워야 하는지 궁금합니다.
import pandas as pd df = pd.read_csv('members.csv') q3 = df['views'].quantile(.75) q1 = df['views'].quantile(.25) IQR = q3-q1 print(IQR) 여기서 자꾸 numpy.float64 라는 오류가 뜹니다 어떻게 해야 오류가 안뜰까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 오징어게임처럼 매일 학습할 수 있는 동기를 주셔서 감사합니다! 5/25 오늘의 미션을 풀이하던중 질문이 있어 글남깁니다. 1.T1-18번 문항에 대한 질문입니다. 주말을 따로 컬럼을 생성하시면서 apply 함수를 사용하셨는데, 이 함수부분이 아직 이해가 잘 되지 않아서요ㅠ df['weekend'] = df['dayofweek'].apply(lambda x: x>=5) 이 부분을 출력하면 weekend에 bool타입으로 값이 반환이 되었는데요! lambda x : x>=5 이부분에서 dayofweek가 5이상이면 true 값으로 apply 붙이세요 (?) 라는 문법일까요 ... 저는 저 함수가 이해가 되지 않아서cond 조건을 붙여서 사용하긴했는데 .. 값은 똑같이 나오더라구요 df['dayofweek']=df['Date'].dt.dayofweek df=df.loc[df['Date'].between('2022-05-01','2022-05-31')] cond=df['dayofweek']>=5 a=df[cond]['Sales'].mean() apply함수를 필수로 알아둬야 하는 함수일까요 ?
일단 실기가 명확한 풀이과정이 없기는 하기는 하나저는 X_tr, y_tr로 accuracy_score, precision_score, recall_score, f1_score, roc_auc_score 비교한 뒤에점수가 높은것을 바탕으로 다시 train을 fit시키는게 일반적으로 더 나은 전략이 아닌가싶은데(양이 더많으니까)혹시 이게 크게 리스크가 있다거나 혹은 의미가 없다고 볼수있을까요? 강의에서는 X_tr, y_tr로만 하고 끝내길래 궁금해서 여쭤봅니다.
안녕하세요! 머신러닝 학습 중에 DT,RF,XGBOOST 모두 선생님이 하신 것과 동일하게 코드 작성하고 실행했는데 모두 결과값이 다르게 나와서요. 제가 무언가를 잘못 한 걸까요?? 이게 DT랑 RF는 결과값이 똑같이 나왔습니다. from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier() rf.fit(X_tr[cols], y_tr) pred = rf.predict_proba(X_val[cols]) pred[:10] array([[1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.]]) 이게 XGB입니다. from xgboost import XGBClassifier xgb = XGBClassifier() xgb.fit(X_tr[cols], y_tr) pred = xgb.predict_proba(X_val[cols]) pred[:10] array([[9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05], [9.999634e-01, 3.657642e-05]], dtype=float32) 그리고 이 예측데이터로 roc_auc 스코어를 뽑아내려고 하니 이런 오류가 뜨면서 안된다고 해서요. 무엇이 문제인지 궁금합니다ㅠㅠ from sklearn.metrics import roc_auc_score roc_auc_score(y_val,pred[:,1]) /usr/local/lib/python3.10/dist-packages/sklearn/metrics/_ranking.py in _binary_roc_auc_score(y_true, y_score, sample_weight, max_fpr) 337 """Binary roc auc score.""" 338 if len(np.unique(y_true)) != 2: --> 339 raise ValueError( 340 "Only one class present in y_true. ROC AUC score " 341 "is not defined in that case." ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.
기출 3회 작업형 2에서 피처엔지니어링 전 df.select _dtypes(exclude = "o").copy() .... 로 트레인 데이터와 테스트 데이터를 수치와 범주형으로 나눈 후 수치형 MinMaxScaler 범주형 원핫인코딩으로 각각 피처링을 하셨는데 이때 수치형을 보면 cols = ["A", "B"...]로 오브젝트형을 지정하셨더라구요. 피처엔지니어링때 cols =[ ] 를 별도 지정하더라도 위 데이터를 나누는 과정이 필수일까요?? 아래처럼 해도 되면 concat도 필요없을거 같아서요. 예) df.select _dtypes(exclude = "o").copy() << 이과정없이 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() cols = ['Age', 'FamilyMembers'] train[cols] = scaler.fit _transform(train[cols]) test[cols] = scaler. transform(test[cols]) from sklearn.preprocessing import LabelEncoder cols = ['Nationality'] for col in cols: le = LabelEncoder() train[col] = le.fit _transform(train[col]) test[col] = le.transfrom(test[col])
선생님! 6:05초에 logit("종속변수 ~ 독립변수 + " ) 넣어줄때요, 종속변수는 문제에서 생존여부(Survived)를 예측하고자 한다고 했기때문에 종속변수가 되는걸까요? 아니면 문제 1번에서 Gender 와 Survived 간의 독립성 검정을 한다고 했을때 문제 2번에 Gender가 독립변수인게 적혀있기 때문에 Survived 는 자동으로 종속변수가 되는걸까요? 종속변수를 어떻게 확인해야 하는지 잘 모르겠습니다!
해설에서는 reset_index 을 사용했는데 groupby 에서 as_index = False 로 사용해도 될까요? 일단 결과는 같게 나오는 것 같은데 이 둘이 원래 결과가 같게 나오는건지 궁금합니다. as_index : 그룹화된 열을 인덱스로 사용하지 않음 reset_index : 기존의 인덱스를 컬럼으로 추가하고 새로 인덱스 생성(인덱스 초기화) 이렇게 알고 있습니다. groupby 의 as_index=False 인자 df.groupby(['city', 'f2'], as_index=False).sum(numeric_only=True) reset_index 메소드 df.groupby(['city', 'f2']).sum(numeric_only=True).reset_index()