묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
[캐글 작업형1, 12번 문제] 이해가 되지 않는게 있습니다.
[문제]주어진 데이터에서 상위 10개 국가의 접종률 평균과 하위 10개 국가의 접종률 평균을 구하고, 그 차이를 구해보세요 . (단, 100%가 넘는 접종률 제거, 소수 첫째자리까지 출력) import pandas as pddf = pd.read_csv('../input/covid-vaccination-vs-death/covid-vaccination-vs-death_ratio.csv') #시간에 따라 접종률이 점점 올라감df2 = df.groupby('country').max()df2 = df2.sort_values(by='ratio', ascending = False) #100%가 넘는 접종률 제거cond = df2['ratio'] <= 100df2 = df2[cond] top = df2['ratio'].head(10).mean()bottom = df2['ratio'].tail(10).mean()print(round(top - bottom,1)) 문제와 정답코드는 위와 같이 적어주셨는데, 여기서 #시간에 따라 접종률이 점점 올라감df2 = df.groupby('country').max() 이 말의 뜻과, 코드가 이해가 되지 않습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2 - 데이터 전처리에서 공식같은 게 있을까요??
작업형 2 - 데이터 전처리에서 공식같은 게 있을까요?? 이 의미는 데이터 타입이 object, int/float 섞여있을 때 수치형만 모아서 분석을 한다거나수치형+범주형 같이 모아서 분석을 한다거나 위 두 개의 경우 점수 배점 차이가 없을지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2회 기출유형(작업형2) 데이터
케글에서 다운받았는데 X_train.csv y_train.csv X_test.csv는 없고 Train.csv 파일 하나 있네요. 어떻게 된걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2 고민끝에 정리하여 질문드립니다.
안녕하세요 선생님 저는 작업형 2를 아래와 같은 매커니즘으로 푸려고 합니다.train.info()를 통해서 object 컬럼 확인→ 만약 범주형 데이터가 있다면?→ 라벨인코딩(여기서 cols = train.select_dtypes(include='object').columns 로 해서 푸려고 합니다.)→target = train.pop('타겟컬럼')train = train.drop('ID',axis=1)test_ID = test.pop('ID')→train_test_split을 통해 검증데이터 분리train_test_split(train, target, test_size=0, random_state=0)<여기서 train과 target으로만 쓰기 위해서 위에서 pop과 drop을 진행했습니다.>→모델 예측 및 검증무조건 랜덤포레스트로 진행하고 그 후에 하이퍼파라메터 튜닝으로 성능 비교해볼 생각입니다.→평가지표에 따른 성능 비교→하이퍼파라메터 튜닝 적용해보기→DataFrame 만들기→csv만들기매커니즘에 따른 코드는 다음과 같습니다. train.info() from sklearn.preprocessing import LabelEncodercols = train.select_dtypes(include='object').columnsfor col in cols:le = LabelEncoder()train[col] = le.fit_transform(train[col])test[col] = le.transform(test[col]) target = train.pop('타겟컬럼')train = train.drop('ID',axis=1)test_ID = test.pop('ID') from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0, random_state=0) from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(random_state=0, max_depth = 5, n_estimators = 500)rf.fit(X_tr,y_tr)pred = rf.predict(X_val) from sklearn.metrics import f1_scoreprint(f1_score(y_val, pred, average='macro')) pred = rf.predict(test) submit = pd.DataFrame({'ID' : test_ID,'타겟컬럼' : pred}) submit.to_csv('0000.csv', index=False)여기서 질문은1. pop과 drop을 저 단계에서 해줘도 무방한가요?cols를 라벨 인코딩에서 먼저 정의해주게 되는데 그 이후에 pop과 drop써도 무방한지 여쭤봅니다.2. 물론 어떤 데이터를 주냐에 따라 다르겠지만 위와 같은 과정으로 진행해도 점수획득에 큰 무리 없겠죠?(교차검증등등은 진행하고 싶지 않아서요)3. 범주형 데이터가 하나도 없다면? 그럴일이 없을거 같긴한대 그러면 인코딩단계만 빼고 그대로 진행하면되나용?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형3 다중선형회귀분석
원핫인코딩과 drop_first=true 를 통해 다중공선성을 줄이고 유형A가 제거된 상태인데 독립변수에 유형A를 포함하고싶으면 어떻게 해야하나요?
-
미해결빅데이터 분석기사 시험 실기(Python)
질문입니다 RandomForestClassifier
RandomForestClassifier만 적용하여 앙상블 학습하였을때 ROC_AUC_SCORE가 1.0이 나오는데,, 연습문제 동영상과 같이 0.84.... 가 나오지 않고 1.0이 나오는 이유가 뭘까요 혹시 과적합이라면 오답이라고 할 수 있을까요? 전체 소스 공유합니다. import seaborn as sns import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler from sklearn.ensemble import RandomForestClassifier df = sns.load_dataset('titanic') # 결측치 제거 df['age'] = df['age'].fillna(df.age.mean()) df['deck'] = df.deck.fillna(method='bfill') df['deck'] = df.deck.fillna(method='ffill') df['embarked'] = df.embarked.fillna('S') df['embark_town'] = df.embark_town.fillna('Southampton') df.isna().sum() from sklearn.preprocessing import LabelEncoder obj = ['sex', 'embarked', 'class', 'who', 'adult_male', 'deck', 'embark_town', 'alone'] encoder = LabelEncoder() for i in obj: df[i] = encoder.fit_transform(df[i]) category = ['pclass', 'sex', 'class', 'who', 'adult_male', 'alone'] for i in category: df[i] = df[i].astype('category') df = pd.get_dummies(df) scaler = MinMaxScaler() lst = ['age', 'fare'] scaler.fit(df[lst]) df[lst] = scaler.fit_transform(df[lst]) y = df['survived'] X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.3, stratify=y, random_state=23) ml = RandomForestClassifier() ml.fit(X_train, y_train) pred = pd.DataFrame(ml.predict_proba(X_test)) from sklearn.metrics import accuracy_score, roc_auc_score print(roc_auc_score(y_test, pred.iloc[:, 1]))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
문제 1-1 데이터 분할 관련 질문입니다.
데이터셋 분할 시에 iloc안쓰고 그냥df[:210] 이렇게 나눠도 상관 없나요.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
인코딩
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요범주형 데이터가 있으면 필수로 인코딩을 해줘야하는걸로 알고 있는데요이때 무조건 라벨인코딩으로 진행하려고 하는데 문제없는 사항인가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
5-1 제출 시 타겟값과 제출값이 다른 부분에 질문있습니다.
5-1 제출 시에 타겟은 Attrition_Flag에서 1과 0으로 기재되어있고 y_test.csv 파일을 봐도 0, 1 로 되어있던데강의에서 제출 시에는 predict_proba로 확률값을 제출하던데 왜 그렇게 제출해도 괜찮은지 잘 이해가 안 갑니다 ㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션 11 2회 기출유형(작업형2) 코드 질문
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요. 좋은 강의 감사드립니다.오류 없이 결과는 나왔습니다. 제 코드가 맞는지, 엉뚱한지 확인이 어려워 질문드립니다.맞는 풀이인가요? 고쳐야 할 부분이 어떤 부분인가요?ID 드랍하지 않고 쭉 진행했는데, 이러할 경우 문제가 되나요?roc_auc_score, submit 과정에서 pred에 [:,1]을 하면 오류가 없고, 빼면 오류가 생기는데 pred[:,1]인 이유가 헷갈립니다.랜덤포레스트에서 random_state=2024만 적어서 돌려도 되나요?질문이 장황한데 답변 주셔서 항상 감사합니다!cols = ['Warehouse_block' ,'Mode_of_Shipment','Product_importance' , 'Gender'] from sklearn.preprocessing import LabelEncoder le = LabelEncoder() for col in cols: X_train[col] = le.fit_transform(X_train[col]) X_test[col] = le.transform(X_test[col]) from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_train, y_train['Reached.on.Time_Y.N'], test_size = 0.2, random_state = 2024) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(n_estimators=160, max_depth=20, random_state=2024) rf.fit(X_train, y_train) pred = rf.predict_proba(X_test) from sklearn.metrics import roc_auc_score print(roc_auc_score(y_test, pred[:,1])) pred = rf.predict_proba(X_test) pred submit = pd.DataFrame({ 'ID': X_test['ID'], 'pred':pred[:,1] }) submit.to_csv("result.csv", index=False) import pandas as pd df = pd.read_csv("result.csv")
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 모의문제1
안녕하세요 선생님,CLIENTNUM,Attrition_Flag타겟 분류 문제에서, y가 분류니까roc_auc_score을 구할 때 predict_proba를 이용해서 구했는데 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_tr,y_tr) pred = model.predict(X_val)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))정확도 ~ f1까지는 proba를 안하고 바로 구했는데어떤 차이로 인해 얘네는 proba를 안하게 될까요 ? ㅜㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
앞으로 공부방향
선생님, 이제 한 열흘 정도 남은 상황에서강의 보면 이해는 되는데 실제로 타이핑 치려니까 머리속이 하얘지면서 어려운데, ㅠ 앞으로 남은 기간동안은 어떤 방식으로 공부를 하는게 좋을까요? 강의를 빼곡히 노션에 정리하면서 멘트나 그런것들 정리해뒀는데... 막막하네요ㅜ.ㅜ 1유형은 캐글 반복 + 2유형 기출만 반복(1~7회)3유형은 회귀분석이랑 분산분석 2개만 외워가려고요..ㅎ 갑갑하네요ㅜ.ㅜ 증말
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 작업형3 updated 2024.06 문제
문제 1-2 accuracy를 구하는 문제를 저는 다음과 같이 풀었습니다.from statsmodels.formula.api import logitmodel = logit('purchase~income', data=train).fit()target = test.pop('purchase')pred = model.predict(test) > 0.5from sklearn.metrics import accuracy_scoreprint (round(accuracy_score(target, pred),3)) 답은 0.507로 동일하게 나오는 것 같습니다.다음과 같이 풀어도 문제 없는걸까요?그리고 pred = model.predict(test) > 0.5에서 '>0.5'의 역할은 무엇인지 다시 한번 설명해 주실 수 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 문제 중 질문드립니다
답변 감사합니다!
-
미해결빅데이터분석기사 실기대비 (R 활용)
4회 작업형 2유형 문제 불러왔을 때 변수가 안보이는데요
데이터셋(엑셀)로 직접 열면 train 파일에서 segmentation변수가 보이는데read.csv하여 R에서 불러들이면 segmentation변수가 안보이네요 제공해주신 리뷰코드(메모장) 에는아래와 같이 as. factor로 바꾼걸 보면 있어야 할 변수인거같은데.. df$Gender <- as.factor(df$Gender)df$Ever_Married<- as.factor(df$Ever_Married)df$Graduated <- as.factor(df$Graduated )df$Profession<- as.factor(df$Profession)df$Spending_Score<- as.factor(df$Spending_Score)df$Var_1 <- as.factor(df$Var_1)df$Segmentation <- as.factor(df$Segmentation) 파일이 잘못된걸까요 ? 아니면 제가 이해를 못한것일까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
5회 기출 작업형1 - 1번 문제
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요cond1 = df['종량제봉투종류'] == '규격봉투' cond2 = df['종량제봉투용도'] == '음식물쓰레기' cond3 = df['2ℓ가격'] != 0 df = df[cond1 & cond2 &cond3] print(round(df['2ℓ가격'].mean()))위 작업에서 cond1,2,3를 df에 대입하지 않고 print문으로평균을 구할 수 있는 방법이 있나요??아니면 따로 방법이 없어서 df에 대입 후 2ℓ가격의 평균을 구한 건지 궁금합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업2유형 전처리&피쳐엔지니어링
안녕하십니까. 선생님 수업 잘 듣고 있는데 제가 전처리나 피처엔지니어링에서 정확한 기준을 모르겠습니다. 그냥 object타입을 모두 제거하거나 아니면 결측치가 있는 경우 어떤것은 제거하고 어떤것은 0으로 채우는데 정확한 기준이 있나요? 있다면 대략적인 기준을 알고 싶습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제2 - 4번
문제에서 자료형이 object인 칼럼을 삭제하라고 하였는데df.head()로 출력하면 'age', 'f1', 'f2', 'f5', 'views' 가 object인 칼럼을 제외한 칼럼이지만,df.info()로 출력하면 아래 사진과 같이 'age', 'f1', 'views' 만이 object인 칼럼을 제외한 칼럼으로 나옵니다.어떤게 맞는 기준인지 판단하기가 어려워 질문 드립니다.이럴 땐 어떻게 사고하고 판단하여야 할까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
피처 엔지니어링 전체 과정
피처 엔지니어링의 전체 과정에 대해서 잘 이해가 안되서 질문 드립니다.데이터 전처리를 통해 결측값과 이상값을 처리하고, 수치형 변수와 범주형 변수로 나눈 뒤 수치형 변수는 스케일링을 적용하고 범주형 변수는 인코딩을 적용하고 그 이후에 나눈 수치형 변수와 범주형 변수를 합친다.만약 수치형 변수와 범주형 변수를 합친 후 train 데이터와 test 데이터의 shape를 출력했을 때, 각각의 컬럼 수가 다르다면 인코딩을 잘못한 것이다.train데이터와 test 데이터의 shape를 출력했을 때 컬럼 수가 다르다는 걸 알게 되면 그때부턴 어떻게 해야 되나요?데이터를 다시 새로 load하고범주형 변수와 수치형 변수의 컬럼 정보를 리스트에 저장한 후 train data와 test data를 합쳐서합친 전체 data의 수치형 변수 컬럼과 범주형 변수 컬럼에 대해 각각 스케일링과 인코딩을 진행한 후 train data와 test data로 나눠줘야하는 건가요?제가 이해한 것이 맞는 건지 궁금합니다!!강의 잘 듣고 있습니다. 감사합니다!^^
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제3 - 9번 문제 (답글에 대한 답이 없어 다시 질문 드립니다.)
아래는 수업 자료에 있는 풀이부분 코드이고,from google.colab import drive drive.mount('/content/drive') import pandas as pd import numpy as np df = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/빅분기 놀이터 Dataset/members.csv') df['subscribed'] = pd.to_datetime(df['subscribed']) df['year'] = df['subscribed'].dt.year df['month'] = df['subscribed'].dt.month df['day'] = df['subscribed'].dt.day df = df.groupby('month').count() print(df.sort_values('subscribed').index[0]) ValueError Traceback (most recent call last) <ipython-input-1-2092ad4ed95e> in <cell line: 10>() 8 df = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/빅분기 놀이터 Dataset/members.csv') 9 ---> 10 df['subscribed'] = pd.to_datetime(df['subscribed']) 11 df['year'] = df['subscribed'].dt.year 12 df['month'] = df['subscribed'].dt.month 4 frames/usr/local/lib/python3.10/dist-packages/pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime() ValueError: time data "9690" doesn't match format "%Y-%m-%d", at position 21. You might want to try: - passing `format` if your strings have a consistent format; - passing `format='ISO8601'` if your strings are all ISO8601 but not necessarily in exactly the same format; - passing `format='mixed'`, and the format will be inferred for each element individually. You might want to use `dayfirst` alongside this.이는 에러 코드입니다.df['subscribed'] = pd.to_datetime(df['subscribed'])이 코드에서 발생한 에러입니다.