#1.문제정의 #평가:ROC-AUC #target:'성별' 1 #최종파일:"result.csv"(컬럼 1개 pred, 1확률값) #2.라이브러리 및 데이터 불러오기 import pandas as pd train = pd.read _csv("data/customer_train.csv") test = pd.read _csv("data/customer_test.csv") #3.탐색적 데이터분석(EDA). shape head info isnull.sum. value_counts. describe target pd.set_option('display.max_columns', None) print(train.shape, test.shape) print(train.head(2)) print(test.head(2)) print( train.info ()) print( test.info ()) print(train.isnull().sum()) print(test.isnull().sum()) print(train['성별'].value_counts()) #결측치채우기 train = train.fillna(0) test = test.fillna(0) print(train.isnull().sum()) print(test.isnull().sum()) # 4.데이터전처리 - object데이터를 인코딩 df = pd.concat([train,test]) df = pd.get_dummies(df) train = df[:len(train)].copy() test = df[len(train):].copy() print(train.shape, test.shape) #5. 검증 데이터 분할 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('성별', axis=1), train['성별'], test_size=0.2, random_state=10) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) #6. 머신러닝 학습 및 평가 from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score model = RandomForestClassifier(random_state=0) model.fit (X_tr, y_tr) pred = model.predict_proba(X_val) score = roc_auc_score(y_val, pred[:,1]) print(score) # 7. 예측 및 평가 파일 생성 pred = model.predict_proba(test) submit = pd.DataFrame({'pred':pred[:,1]}) submit.to _csv("result.csv") print( pd.read _csv("result.csv")) 이렇게 했는데요. pred = model.predict_proba(test)만 작성하면 오류가 나는 이유가 뭘까요?? Makefile:6: recipe for target 'py3_run' failed make: *** [py3_run] Error 1 Traceback (most recent call last): File "/goorm/Main.out", line 64, in <module> pred = model.predict_proba(test) File "/usr/local/lib/python3.9/dist-packages/sklearn/ensemble/_forest.py", line 674, in predict_proba X = self._validate_X_predict(X) File "/usr/local/lib/python3.9/dist-packages/sklearn/ensemble/_forest.py", line 422, in validate X_predict return self.estimators_[0]._validate_X_predict(X, check_input=True) File "/usr/local/lib/python3.9/dist-packages/sklearn/tree/_classes.py", line 407, in validate X_predict X = self._validate_data(X, dtype=DTYPE, accept_sparse="csr", File "/usr/local/lib/python3.9/dist-packages/sklearn/base.py", line 421, in validate data X = check_array(X, **check_params) File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 63, in inner_f return f(*args, **kwargs) File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 720, in check_array assert all_finite(array, File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 103, in assert all_finite raise ValueError( ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
안녕하세요 선생님, 작업형3 범주형 변수 인코딩 질문드립니다. [예시문제 작업형3(신버전)]의 6:37 부분을 보면 Gender는 인코딩이 되지않아서 C로 감싸주시더라구요. 근데 [시험응시전략] 강의에서는 '회귀, 로지스틱 회귀에서 숫자이지만, 범주형 변수로 명시된 것이 있다면 C()로 감싸서 처리할 것, 범주형 변수 object 값이 문자로 있다면 알아서 바꿔준다'라고 말씀하셨어요. 이부분이 헷갈립니다. 1) [시험응시전략]에서 말씀대로라면 [예시문제 작업형3]의 Gender는 C 처리할 필요없이, 알아서 바뀌는게 아닌가요? 2) 캐글에 T3-2-example-py 을 보면, 여기서는 gender를 C로 감싸서 인코딩 해주지 않으셨더라구요. 기준이 헷갈립니다.
'age'컬럼의 이상치를 모두 더하시오! print(sum(df['age']<lower) + sum(df['age']>upper)) 컬럼의 이상치를 다 더한다는 의미를 이렇게 해석했는데,, # 이상치 age합 print(df[cond1|cond2]['age'].sum()) 왜 선생님은 '또는'이라는 조건을 사용하셨나요?
안녕하세요. 섹션12 3회 기출유형 작업형 1 강의 9:54 경에서 '하드코딩 하지말라' 라는 메시지가 나오는데, 정답이 있는 작업형 1, 3은 정답만 맞으면 만점처리 되는거 아닌가요? 하드코딩을 하거나 눈으로 세거나 혹시 채점하면서 코드문(풀이과정)까지 봐서, 답은 맞아도 풀이가 정답이 아니라면 틀릴수도 있나요...? 아래 비슷한 질문이 있는거같은데, 응시자 유의사항 보면 정답만 맞추라는 뉘앙스인데, 이번 8회 실기는 어떻게 해야하나요?
선생님! 작업형 2 문제 푸는 방식을 정해서 시험장에서 그 방식대로만 풀려고 하는데 혹시 회귀나 분류 모두 randomforest 하나만 사용해서 학습시켜 예측값을 도출해도 2유형에서 고득점 받는데 무리 없을까요? 다른 모델 식까지 외우기에는 너무 시간이 많이 걸릴거 같아서요 ㅎㅎ 혹시 랜포말고 더 추천하시는 모델이 따로 있을까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 강사님 수업 잘 듣고 있습니다! 다름이 아니라 제가 분류/회귀 문제에서 랜덤포레스트와 xgboost 두 가지 코딩을 이용하려 하는데 이번 문제의 경우 랜덤포레스트는 돌아가지만 xgboost 같은 경우는 오류가 발생하더라구요 모든 데이터에 사용 가능한 줄 알았는데 데이터마다 사용할 수 있는 모델이 한정적인가요?? from xgboost import XGBClassifier model = XGBClassifier() model.fit(X_tr, y_tr) pred = moedl.predict(X_val) 위와 같이 실행했고, 아래는 에러코드입니다! ValueError: Invalid classes inferred from unique values of `y`. Expected: [0 1 2 3], got [1 2 3 4]
안녕하세요 강사님. 작업형2 관련해서 문의 드릴게 있습니다. 작업형2에서는 하나의 학습 모델을 잡고, 여러가지 퓨처엔지니어링, 하이퍼파라미터등을 통해 성능을 끌어 올리는게 더 높은 점수를 받는 것인지, 아니면 여러 학습 모델 ex)랜덤포레스트, lightgbm, linear_model 등을 통해 가장 높은 성능을 보이는 학습 모델을 제출하는 것이 더 높은 점수를 받는 것인지 궁금합니다. 각각의 학습 모델마다 성능이 다르게 나와서, 그냥 높은 성능을 보이는 모델을 제출하면 되는걸까요? 어디에 중점을 둬야 할 지 모르겠어서 문의 남깁니다.~!! 감사합니다
좋은 영상 잘보며 열공 하고 있습니다. 질문1 . 유형2에서 결과 제출할때 pred 이란 변수를 사용하는데, 어떤 책에선 y_pred 이란 변수를 사용하기도 하더라구요. 문제를 읽었을때 변수명에 대한 설명은 없어보이는데, 정해진 변수명이 있나요? 질문2. 유형2는 성능 측정모형(mse, rmse 등)을 알려주고 있습니다. 제가 만약 분류도, 회귀도 무조건 랜덤포레스트만 사용하겠다고 하면 사실 저 성능 측명하는건 굳이 코드에 안짜도 되지요? 채점답변이 csv 파일만 적절하면 되는게 맞는지요?
전처리, 피처엔지니어링 할 때, 언제 무엇을 해야할지 헷갈립니다. 가령 데이터가 어떨 때, 어떤 것을 스케일링 해야하는지 헷갈립니다. 기출문제 풀이에서 스케일링을 한 경우도 있고, 안 한 경우도 있다보니 정리가 잘 안되는 느낌입니다. get_nc_data로 n과 c를 나눴다가 다시 concat으로 합친 경우가 있는가 하면, 어떤 회차에서는 그냥 스케일링도 없이 원핫인코딩만 해버리는 경우도 있어서, 언제 어떤 방식으로 전처리를 해야할지 감이 잘 안옵니다. 저런 기준을 잘 모르겠습니다. 또, target열을 value_counts()하는 것은 알겠는데, 어떤 회차에서는 또 이것을 pop하기도 해서, 어떨때 pop을 하는 것인지도 분간이 잘 안갑니다ㅠ 로그, 지수 수치 변환도, 수치형 데이터가 어떨 때 하고 어떨 때 안하는지 헷갈립니다.