묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형 2번
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score from sklearn.model_selection import train_test_split train = pd.read_csv("data/customer_train.csv") #3500 test = pd.read_csv("data/customer_test.csv") #2482 train['환불금액'] = train['환불금액'].fillna(0) test['환불금액'] = test['환불금액'].fillna(0) #print(train.isnull().sum().sum()) cols = ['회원ID','총구매액','최대구매액','환불금액','방문일수','방문당구매건수','주말방문비율','구매주기'] target = train.pop('성별') #용자 코딩 #print(train['성별'].value_counts()) #여2남1 train = pd.get_dummies(train) test = pd.get_dummies(test) xtr,xval,ytr,yval = train_test_split(train[cols],target,test_size = 0.2, random_state = 0) print(xtr.shape,xval.shape,ytr.shape,yval.shape) rf = RandomForestClassifier() rf.fit(xtr[cols],ytr) pred = rf.predict_proba(xval[cols]) pred = rf.predict_proba(test[cols]) submit = pd.DataFrame({'pred':pred[:,1]}) submit.to_csv('result.csv',index=False) result=pd.read_csv('result.csv') print(result.shape) print(result.head()) 강의에서처럼 마지막 제출 pred 변수 만들 때 rf.predict_proba(test) 하니까 안만들어져서 rf.predict_proba(test[cols])로 생성했는데, 맞게 코딩한건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2유형 X_train, y_train 합칠때
선생님 강의중 2회 2유형 문제 강의중 X_train 과 y_train 그리고 X_test 까지 총 데이터가 3개가 주어진 문제에서 df = pd.concat([X_train,y_train['Reached.on.Time_Y.N']], axis =1) 로 데이터를 합쳐주셨는데 이러면 검증데이터분리 부분에서 (target = df.pop('Reached.on.Time_Y.N')으로 타겟데이터를 뺐을때) X_tr, X_val, y_tr, y_val = train_test_split(df, target, test_size = 0.2, random_state = 1) 이렇게 합친 데이터를 사용해서 분리해도 문제가 없을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩/라벨인코딩 관련하여 질문드립니다.
다른 질문에 답변주신 내용에 대해서 추가 질문하려고 합니다.train에는 있는데, test에 없다면 라벨인코딩 가능test에는 있는데 train에는 없다면 데이터를 합쳐서 라벨 또는 원핫 인코딩 가능이거에 대해서 부가 질문이 있습니다.데이터를 합친다는게, Target Column Pop한다음 개수 일치시킨 다음, concat으로 합친다는 의미인거죠?(axis=0)그다음 원핫인코딩이나 라벨인코딩을 하고, 원래 Test Data의 수를 iloc나 loc로 분리해서 이후 작업을 진행하라는 의미인건가요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
시험환경에서 print 출력 결과 일부만 보일때
안녕하세요.시험 환경에서 실습해보는 중인데print해서 결과를 확인 했더니 위 이미지처럼 일부 내용만 출력되는데요 이럴때는 어떻게 해야 생략된 부분을 확인 할 수 있나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2번
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요코드1에서 train데이터의 수치형데이터 cols만 사용하는 이유는 뭔가요?cols로 안하고 전체 데이터로 돌리면 오류가 납니다.시험에서도 수치형데이터만 사용하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
roc_auc_score 관련 질문 (캐글 흡연자 예측(분류))
선생님 안녕하세요. 랜덤포레스트랑 roc_auc_score 관련 질문 드립니다. roc_auc_score는 이진분류라서 [:,1]을 해야하는 걸로 알고 있는데요train = pd.read_csv('/kaggle/input/smoker-binary-class/train.csv') test = pd.read_csv('/kaggle/input/smoker-binary-class/test.csv') train.isnull().sum() #결측치없음 # train.info() -> 전부다 float형 # print(train.shape,test.shape) (15000, 24) (10000, 23) # train.head(2) #id삭제 train = train.drop(columns = 'id') test_id = test.pop('id') y= train.pop('smoking') #train_test_split from sklearn.model_selection import train_test_split x_tr,x_val,y_tr,y_val = train_test_split(train,y,test_size = 0.2, random_state = 42) # print(x_tr.shape,x_val.shape,y_tr.shape,y_val.shape) (12000, 22) (3000, 22) (12000,) (3000,) #랜포 from sklearn.ensemble import RandomForestClassifier model= RandomForestClassifier() model.fit(x_tr,y_tr) pred = model.predict_proba(x_val)[:,1] from sklearn.metrics import roc_auc_score # print(roc_auc_score(y_val,pred)) # 0.8775897293980339 answer = model.predict_proba(test)[:,1] pd.DataFrame({'id' : test_id, 'smoking' : answer}).to_csv('12345.csv',index = False) 만약 roc_auc_score가 아닐경우 pred = model.predict(x_val) print(f1_score(y_val,pred)) answer = model.predict(test) pred = model.predict_proba(x_val)[:,1] from sklearn.metrics import roc_auc_score # print(roc_auc_score(y_val,pred)) # 0.8775897293980339 answer = model.predict_proba(test)[:,1]이렇게 pred = 하는 부분에서 [:,1] 하고 정답제출(answer) 부분역시 이렇게 동일하게 하면 되는게 맞는지 문의드립니다.만약 roc_auc_score가 아닌 경우에는 그냥 pred = predict까지만 하면 되는게 맞을까요? 그리고 train_test_split 할때는 random_state = 42(숫자 고정) 하는데model = RandomForestClassifier() 이렇게 전부다 생략을 해버리니이게 실행시킬때마다 고정이 안돼서 그런가 값이 바뀌더라고요.어느 분은 n_estimators도 하시고, random_state도 작성하시는 분이 계신데시험환경에서 ()이렇게 비워두면 큰 문제가 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
6회 작업형 1 3번문제 질문드립니다.
연도별로 총 범죄 건수(범죄유형의 총합)의 월평균 값을 구한 후 그 값이 가장 큰 연도를 찾아, 해당 연도의 총 범죄 건수의 월평균 값을 출력하시오. (반올림하여 정수로 출력)2020: 11, 2021: 9, 2022: 12, 2023: 9, 2024: 9다음은 각 해당 년도별로 존재하는 월 데이터의 갯수입니다.12개가 아니고 누락된 데이터가있더라구요df['tot'] = df.loc[:,'강력범죄':'교통범죄'].sum(axis=1) df['날짜'] = pd.to_datetime(df['날짜'],format = '%Y년 %m월') dict = df.groupby(df.날짜.dt.year)['날짜'].count() df.groupby(df.날짜.dt.year)['tot'].mean()저는 다음과 같이 코드를 작성하였는데 풀이노트북엔 / 12로 되어있더라구요,,, 뭐가 맞는건가요? mean으로하면 sum / 전체갯수 니까 값이 다른부분에 대해선 인지하고있습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2유형 평가지표 오류
작업 2유형 기출문제 4번을 풀이하는 중인데 f1_score 평가지표로 y_val predict 돌려보다가 에러가 떠서 질문 드립니다!모델링까지는 문제없이 돌아갔었는데 혹시 아래 에러창이 어디서 에러가 났다는 뜻인지 여쭤봅니다! # 라이브러리 불러오기 import pandas as pd # 데이터 불러오기 train = pd.read_csv("./sample_data/train.csv") test = pd.read_csv("./sample_data/test.csv") #데이터 확인 #train.shape, test.shape ((6665, 11), (2154, 10)) #train.head() #ID Gender Ever_Married Age Graduated Profession Work_Experience Spending_Score Family_Size Var_1 Segmentation #test.head() #ID Gender Ever_Married Age Graduated Profession Work_Experience Spending_Score Family_Size Var_1 #결측치 확인 없음, 없음 #train.isnull().sum() #test.isnull().sum() #object 확인 #train.info() Gender Ever_Married Graduated Profession Spending_Score Var_1 #test.info() 동일 #object 레이블 인코딩 from sklearn.preprocessing import LabelEncoder cols = train.select_dtypes(include='object').columns for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) #train.head() #test.head() #train.info() #test.info() #ID값 삭제 train = train.drop('ID',axis=1) #train.shape (6665, 10) test_ID = test.pop('ID') #test.shape (2154, 9) #데이터 분리 from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split( train.drop('Segmentation',axis=1), train['Segmentation'], test_size=0.2, random_state=2022 ) #train.head() #test.head() #X_tr.shape,X_val.shape,y_tr.shape,y_val.shape #((5332, 9), (1333, 9), (5332,), (1333,)) #모델링 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=2022) model.fit(X_tr,y_tr) pred = model.predict(X_val) #평가 from sklearn.metrics import f1_score f1_score(y_val,pred)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형3 2번 문제
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!안녕하세요 선생님 범주형 변수를 C()로 감싸주는 부분 관련하여 질문드립니다. model = logit("Survived ~ C(Gender) + SibSp + Parch + Fare", data=df).fit()Gender는 범주형 변수이지만 숫자가 아닌 object형이니깐 아래코드처럼 C()로 묶지 않아도 되는지 궁금합니다.model = logit("Survived ~ Gender + SibSp + Parch + Fare", data=df).fit() 회귀, 로지스틱 회귀: 범주형변수이지만 숫자인 값에만 C()분산분석: 안전하게 모두 C() 이해한 내용이 맞는지 궁금합니다. 감사합니다.질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 관련 질문
안녕하세요 선생님작업형1 관련 질문이 있어 글 남깁니다. 작업형1 풀이 시, 문제가 아래와 같을 때학교에서 교사 한 명당 맡은 학생 수가 가장 많은 학교를 찾고, 그 학교의 전체 교사 수를 구하시오. (정수 출력)교사 한 명당 맡은 학생 수가 가장 많은 학교를 찾을 때, 꼭 코드를 이용해 학교이름을 찾을 필요는 없는거죠?예를 들면 정렬을 이용해서 그냥 가장 많은 학교가 어딘지 찾고, 그걸 그대로 사용해서 (코드를 이용해 찾지않고) 그 학교의 전체 교사수를 찾아도 괜찮나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의고사 작업형1 (작업형1-1) 문제 질문 해석이 명확하지 않는데요;;
안녕하세요. 저는 다음과 같이 해석이 됩니다. 실제 시험에서도 이런 경우가 발생할 수 있을까요?앞에서 부터 50%의 데이터와 'target'컬럼이 0 값을 가진 데이터만 활용해...라는 부분이 앞에서 부터 50%의 데이터... a.iloc[89] 데이터 1개 'target'컬럼이 0값을 가진 데이터... a에서 'target'컬럼이 0인 데이터는 cond = a['target'] == 0를 만족하는 a[cond] 데이터 59개1.에서 찾은 데이터의 proline의 값 6252.에서 찾은 59개 데이터의 proline 합 65827따라서, (625+65827) / 60 = 1107.533333 에서 소수점 절사하면 1107
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
타입 3유형의 경우 3문제 이상의 답을 외워서 다음장에 입력해서 제출해야 하나요?
타입 3과 같은 경우 한문제당 3개 이상의 질문이 있고, 이것을 코드로 구한다음, 다음 장에서 1,2,3번의 답을 입력해서 제출하는 형식인데, 이 경우 시험환경에서 1,2,3번의 답을 외워서 다음 버튼을 누른후 숫자를 입력해서 제출하는 방법 외에는 없나요? 은근히 소숫점 3자리까지 검정통계량 구하기 뭐 이런 답들은 3문제의 답을 외우기가 어렵던데요 ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
이상치 확인 이후!
만약 describe로 이상치가 있는 것 같다고 하면,이상치를 그냥 나두고 진행시켜도 되나요??후기 보니 이상치를 제거했다거나, 대체했다는 내용보다는그냥 그대로 두고 진행한 사람들이 대부분인 거 같아서...아니면 그냥 없애고 진행해도 되나요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 한가지 방법으로 풀기(기출5)
작업형2 한가지 방법으로 풀기에서 기출 5번의 rmse 부분에 대한 질문입니다. # RMSE(Root Mean Squared Error) from sklearn.metrics import mean_squared_error def rmse(y_true, y_pred): mse = mean_squared_error(y_true, y_pred) return mse ** 0.5 result = rmse(y_val, pred) print('\n rmse:', result) # RMSE(Root Mean Squared Error) from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_val, pred) rmse = mse**0.5 print(rmse) 위의 부분은 원래 답이고, 아래 부분은 제가 작성한 부분입니다.따로 함수를 안 만들고, 제가 작성한 방식으로 해도 괜찮은가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
검증데이터를 안쓰면
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요만약 기출 3회 2유형에서 roc-auc 이지만 검증데이터를 안쓰면(검증과정을 생략한다면) predict_proba를 안하고 predict만 해서pred = rf.predict(test)만 해서 submit = pd.DataFrame({'pred':pred})submit.to_csv("result.csv")만 해도 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 T2-4 집 값 예측
안녕하세요캐글 집 값 예측을 풀고있는데 궁금한 점이 있습니다.결측치 값이 굉장히 많이 있는 데이터에서는 결측치 처리를 하지 않고 예측 데이터에서 아예 포함하지 않는 것이 더 낫나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
회귀 분석 (범주형 변수)
강의 복습하면서 한번 더 정리하면서 외워가는 중입니다. 섹션 8 강의에서 범주형 변수는 판다스의 pd.get_dummies(drop_first=True)로 원핫인코딩 처리한다고 강의하셨습니다. 해당 강의 복습하다 보니, 섹션 10 작업형 3번 문제풀이 하면서 범주형 변수에 C( ) 씌워서 summary 하신게 생각났고 섹션 8 강의의 범주형 변수 부분에다 한번 시도해봤습니다import pandas as pd df = pd.DataFrame({ '매출액': [300, 320, 250, 360, 315, 328, 310, 335, 326, 280, 290, 300, 315, 328, 310, 335, 300, 400, 500, 600], '광고비': [70, 75, 30, 80, 72, 77, 70, 82, 70, 80, 68, 90, 72, 77, 70, 82, 40, 20, 75, 80], '플랫폼': [15, 16, 14, 20, 19, 17, 16, 19, 15, 20, 14, 5, 16, 17, 16, 14, 30, 40, 10, 50], '투자':[100, 0, 200, 0, 10, 0, 5, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], '유형':['B','B','C','A','B','B','B','B','B','B' ,'C','B','B','B','B','B','B','A','A','A'] }) from statsmodels.formula.api import ols model = ols("매출액 ~ 광고비 + C(유형)", data=df).fit() print(model.summary())그러고 둘다 확인해보니 OLS Regression Results 결과 수치별로 비교해봤는데 같더라고요. 그럼 범주형 변수에 그냥 C( ) 씌워서 하는게 코딩이 더 간편할 거 같은데 pd.get_dummies(drop_first=True)를 사용해야 하는 뭔가 다른 이유, 혹은 C( )로 커버할 수 없는 게 있어서 그런건지 궁금합니다. 답변 부탁드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
scipy 관련 질문
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요from scipy import stats랑 from scipy.stats import chi2_contingency 두가지의 차이점이 궁금합니다어떤건 scipy고 어떤건 scipy.stats인지 모르겟어요ㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
스케일은 대부분 df 알고 있으나 train을 넣는 건 컬럼이 아니라 train 데이터 전체를 넣는 게 아닌가요?
아 ! 사이킷런에서 제공하는 스케일은 대부분 데이프프레임을 입력인 줄은 알고 있으나, train은 컬럼명 지정이 아닌 train 데이터 전체를 사용하신 게 아녔었나용?? (이전 질문)이상치에 민감하지 않도록 Rubust scaler 사용하실 때는scaler = Rubustscaler()하시고, scaler.fit_trasnform(train)scaler.transform(test) 하셨던 걸로 기억하는데왜 여기서는 scaler.fit_transform(df[['socre']])로 진행하신 걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
target = test.pop()
작업형 2에서는 target = train.pop('')으로 train데이터에서 target을 추출했는데 작업형 3의 오류율 구하는 문제에서는 target = test.pop('gender')으로 test데이터에서 target을 추출한 것 같습니다.(train에서 추출하면 오류가 발생하긴 하더라구요) 작업형 3에서는 왜 target을 test에서 추출하는 건가요?