묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
코드질문드립니다!
import pandas as pd train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p2/ceredit%20card/train.csv") test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p2/ceredit%20card/test.csv") # train = pd.read_csv("train.csv") # test = pd.read_csv("test.csv") train.info() train.isnull().sum() #원핫 인코딩 y_train = train.pop('Attrition_Flag') train_oh = pd.get_dummies(train) test_oh = pd.get_dummies(test) data = pd.concat([train,test],axis =0) data_oh=pd.get_dummies(data) train_oh= data_oh.iloc[:len(train)].copy() test_oh= data_oh.iloc[len(train):].copy() #인코딩 다음에 해야할일은? 검증 데이터 분할 train.shape, test.shape, y_train.shape from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(train_oh,y_train,test_size=0.2,random_state=0) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) from sklearn.ensemble import RandomForestClassifier rf=RandomForestClassifier(random_state=0) rf.fit(X_tr,y_tr) pred=rf.predict(X_val) pred_proba=rf.predict_proba(X_val) #평가 from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score # 정확도 print(accuracy_score(y_val, pred)) # 정밀도 print(precision_score(y_val, pred)) # 재현율 (민감도) print(recall_score(y_val, pred)) # F1 print(f1_score(y_val , pred)) pred=rf.predict_proba(test_oh) submit = pd.DataFrame({ 'CLIENTNUM':test['CLIENTNUM'], 'Attrition_Flag':pred[:,1] }) submit.to_csv("435706131.csv",index=False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
7회 작업형 3 질문입니다
ols를 이용해서 종속변수를 예측할때는 바로 model.predict(train) 이런식으로 바로 진행했잖아요,근데 여기서 test데이터에서 종속변수로 주어진 값을 pop하고, model.predict(test) > 0.5 이런식으로 진행하는 이유가 궁금합니다.. 복습을하다보니 헷갈려서요.. ols와 logit의 특성 차이일까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2 모의문제 1
스케일링 단계를 왜 생략한것인지 궁금합니다!실제 시험에서는 어느 문제는 스케일링을 필수로 하는지 생략해도 되는지 알려주시면 감사하겠습니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
인코딩 관해 문의
밑에 원핫인코더에 관해 질문을 드렸는데요. object형식 컬럼을 지정한 cols 리스트로 지정하여 인코딩을 진행하면 수치형 데이터를 버리게 되어서 위험하다고 하셨는데요. 그럼 label인코더로 사용하게 되면 이부분도 수치형 데이터를 버리게 되는거 아닌가요?for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col])그럼 label인코더를 선택할 시에는 수치형데이터에 별도로 스케일링 작업을 해줘야되는건지... 헷갈리네요^^;;
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코더 관해 질문 합니다.
안녕하세요. 두가지 궁금한 점이 있습니다. 데이터 전처리 단계에서 ID나 nunique 함수로 조회시 너무 많은 갯수를 가지거나 예측값과 별 상관 없어보이는 컬럼은 처음부터 drop시키고 진행해도 무방한건가요?? 처음 baseline으로 object형식 컬럼만 단순 제거, 원핫인코더, label인코더 3가지로 진행하여 가장 평가지표가 좋은 전처리를 체택하여서 제출을 하는데요. 원핫인코더 시에 train = pd.get_dummies(train) test = pd.get_dummies(test) train.head(2)이렇게 작성하는 것과 train = pd.get_dummies(train[cols]) test = pd.get_dummies(test[cols]) train.head(2)object 형식의 컬럼을 담은 리스트인 cols를 지정하는게 나은건지 잘모르겠습니다. ^^ 두가지 답변 부탁드립니다 ^^
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
인코딩 후 질문
인코딩 과정을 통해 문자형 데이터를 숫자형으로 변경하는데 그 이후에 스케일링을 진행할때 수치형 컬럼을 골라내던데 이미 다 수치형 컬럼들로 변환되어있는것이 아닌가요? 궁금합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
평가지표 관련 질문
강의를 보다 머신러닝까지 해서 제출하면 그 결과를 바탕으로 평가지표에 의해서 평가가 되는건지 아니면 제시된 평가지표를 제출전에 꼭 사용해야하는지가 헷갈립니다! 강의에서 볼때는 평가지표를 사용해서 출력해보고 더 나은 모델을 사용하는 정도 인거 같아 보였는데요! 지금 시간이 없어서 랜덤포레스트 모델만 사용하고 외우려고 하는데도 평가지표 코드를 사용해야 할까요?!
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2유형 질문입니다.
저는 EDA단계 때부터 저렇게 pop을 하는데요!그 후에 원핫을 햇거든요근데 마지막에 제출할때 보니이렇게 달라서 안되더라고요..원핫이나 라벨링 한 다음에 pop을 해야하나요??기출4 2유형 문제 풀고있습니다..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
value_counts 문의
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요타겟변수 value_counts로 어떤정보를 보려고 하는것이며 정보에따라 전처리시 달라지는게 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2 데이터 전처리
데이터 전처리 부분에서 원핫 인코딩을 진행하는데, 저는 object형 컬럼들을 따로 설정해서 원핫인코딩을 진행하였습니다. 하지만 강의에서는 따로 이런 것 없이 바로 원핫을 진행하였습니다.그런데 f1_score가 약 30%정도 점수가 차이나서 혹시 컬럼을 안지정하고 원핫을 하는게 맞는지 헷갈리네요! 항상 [작업형2]전처리 부분을 어떻게 해야할지 잘 모르겠습니다..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
이원분산분석에서 정규성, 등분산
from scipy.stats import shapiro cond_tree_A = df['종자'] == 'A' cond_tree_B = df['종자'] == 'B' cond_tree_C = df['종자'] == 'C' cond_tree_D = df['종자'] == 'D' cond_fert_1 = df['비료'] == 11 cond_fert_2 = df['비료'] == 12 cond_fert_3 = df['비료'] == 13 print(shapiro(df[cond_tree_A & cond_fert_1]['토마토수'])) print(shapiro(df[cond_tree_A & cond_fert_2]['토마토수'])) print(shapiro(df[cond_tree_A & cond_fert_3]['토마토수'])) print(shapiro(df[cond_tree_B & cond_fert_1]['토마토수'])) print(shapiro(df[cond_tree_B & cond_fert_2]['토마토수'])) print(shapiro(df[cond_tree_B & cond_fert_3]['토마토수'])) print(shapiro(df[cond_tree_C & cond_fert_1]['토마토수'])) print(shapiro(df[cond_tree_C & cond_fert_2]['토마토수'])) print(shapiro(df[cond_tree_C & cond_fert_3]['토마토수'])) print(shapiro(df[cond_tree_D & cond_fert_1]['토마토수'])) print(shapiro(df[cond_tree_D & cond_fert_2]['토마토수'])) print(shapiro(df[cond_tree_D & cond_fert_3]['토마토수'])) 단일표본검정, 대응표본검정, 독립표본검정, 일원분산분석에선 stats.shapiro() 괄호 안에 준비된 데이터에서 하나의 열만 들어갔는데,이원분산분석에서는 shapiro() 괄호 안에 df[cond_tree_A & cond_fert_1]['토마토수'] 이런식으로 들어가더라고요..제가 나름대로 이해해보려 했는데 이게 맞는지 궁금합니다. 종자, 비료 컬럼은 범주형 독립변수이기 때문에 정규성 검정을 할 수 없다.따라서 4개의 종자와 3개의 비료로부터 나올 수 있는 경우의 수(12가지) 모두에 해당하는 토마토수에 대해 정규성 검정을 한다. df[cond_tree_A & cond_fert_1]['토마토수'] 는 df에서 종자가 A이고 비료가 11에 해당하는 토마토수만 모아놓은 것이다.데이터 프레임에서 조건에 해당하는 특정 열의 데이터만 뽑아내려고 할때 df[조건]['열 이름'] 이런식으로 쓰면 된다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
stratify 설정 질문
1.분류모델에서 검증데이터 분할시 stratify 옵션은 타겟변수명 넣으면 될까요?예)train_test_split(train,target,test_size =0.2 , random_state =2022, stratify =target) 2.분류모델에서 는 평가모델에 상관없이 무조건 사용해도되는지요?제약사항이 있는지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 코드
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 이렇게 작성해도 감점 없을까요? 영상에 나온 rmse 값보다 훨씬 작습니다. (저는 rmse : 816.38 나옵니다) # 2. 탐색적 분석 / 결측치 채우기 # 환불금액# print(train.info())# print(train.head(3))# print(train.isnull().sum())# print(test.isnull().sum())a = int(train['환불금액'].mean())# print(a)train['환불금액'] = train['환불금액'].fillna(a)test['환불금액'] = test['환불금액'].fillna(a)train = train.drop('주구매상품',axis=1)test = test.drop('주구매상품',axis=1)# print(train.isnull().sum())# print(test.isnull().sum())# 3. 인코딩target = train.pop('총구매액')# print(target)train = pd.get_dummies(train)test = pd.get_dummies(test)# print(train.info())# print(test.info())# 4. 분할from sklearn.model_selection import train_test_splitx_t, x_v, y_t, y_v = train_test_split(train, target, test_size = 0.2, random_state = 0)# 5. 학습from sklearn.ensemble import RandomForestRegressormodel = RandomForestRegressor(random_state = 0)model.fit(x_t, y_t)pred = model.predict(x_v)# 6. 평가 - 816.38from sklearn.metrics import root_mean_squared_errorrmse = root_mean_squared_error(y_v, pred)print(rmse)# 7. 예측pred = model.predict(test)# 8. 제출submit = pd.DataFrame({'pred':pred})submit.to_csv("result.csv", index=False)result = pd.read_csv("result.csv")print(result)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
대응표본 t검정 질문입니다.
캐글 3유형 문제 푸는중입니다.stats.ttest_rel(df['bp_pre'], df['bp_post'], alternative='greater')stats.ttest_rel(df['bp_post'], df['bp_pre'], alternative="less") 두 코드의 결과 중통계량은 왜 다를까요? 하나는 양수 하나는 음수입니다.적은 것 보고 적다고하고, 큰 것을 크다고 하면 결과가 같다고 들었던 것 같은데 잘못 알고있는걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
오브젝트형 데이터가 많은 문제 관련
안녕하세요.오브젝트가 대부분인 데이터인데, 오브젝트를 드랍한 게 인코딩 했을 때보다 점수가 더 좋게 나오는 경우..그냥 드랍해서 모델 학습시켜도 되는 걸까요? 전에 다른 회차에서도 하나만 수치형 데이터인데 그 수치형 데이터만으로 예측한 게 점수가 더 좋게 나왔었어요..!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
체험환경에서 프린트하면 데이터프레임으로 변경시키는방법
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 선생님, 지금까지 코랩이나 주피터에서 연습할때는 프린트 없이 출력하면 데이터테이블 형태로 나와서 보기 편했는데, 체험환경은 프린트를 무조건 넣으면 시리즈로 나와서 보기 불편한데, 이걸 데이터프레임형식으로 보는 방법이 있나요...? ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
연습문제? 캐글
안녕하세요책과 강의 구매후 공부중입니다. 책에 챕터3에 연습문제가 있는데요, 해당 문제는 강사님의 깃허브에서 파일이 있더라구요. 그리고 캐글에도 다른 연습문제가 있는거 같은데.. 두 곳에서 문제를 다 풀면 좋지만, 시간 여건상 하나만 선택해야 한다고 했을때, 어느 문제를 풀어보는게 좋을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
random_state 관련 질문
예시문제 작업형 2를 풀다 생긴 질문인데요.train_test_split함수에 들어있는 random_state값이 바뀔때 마다 평가지표의 값이 눈에 띄게 달라지는데 정상인가요? 0일땐 800초반대, 1일땐 1100중반대가 나오는데, 이정도면 꽤나 차이가 나는게 아닌지요?+시험 현장에선 random_state 값을 두세개 넣어보는게 좋을까요?
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
체험환경 제2유형
강사님 말씀하신 아래 방법 외에 train = pd.get_dummies(train)test = pd.get_dummies(test)는 안되는건가요? 이것도 원핫인코딩과 동일한데 확인부탁드립니다. # [선택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)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3유형 1-3번 p-value의 경우 반올림 명시
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요p-value 값을 구할때, 반올림하거나 정수를 구하라 이런말 없으면 그냥 카이제곱검정했을 때 나온 소숫점 자리수 전부 다 입력해야하나요? 하나라도 빠지면 틀리는걸까요? 자리수 명시가 명확하지않는경우도 있나요?