묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
회귀(기출5회)
안녕하세요 RMSE나 어렵다면 MSE를 사용하면 된다고 하셨는데요 from sklearn.metrics import mean_squared_errordef rmse(y_true,y_pred) : 1. 사이킷 런에서 mse 를 불러왔는데 다음줄에서def rmse를 사용하는 이유가 무엇인지 모르겠습니다2. 그리고 y_true, y_pred 라는 변수를 트레인_테스트 분리 한적이 없는데 이건 어떤걸까요? mse = mean_squared_error(y_val,pred) 이 부분은 다른 한가지 방법으로 푼것과 동일하고 이해가 가는데요return mse **0.5result=rmse(y_val,pred) 3. 이건 단순 암기?;;의 영역으로 보면될까요? mse로 풀면 된다고 하셨는데 결과는 rmse로 출력하고 있는 것 같고 rmse/mse가 혼재된상태로 코드를 작성하는거같아서요print('/n rmse:',result)mse방식으로 통일된 형태(조금더 쉽게,,)로 평가하는 방법이 있을지 궁금합니다감사합니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 3 summary
안녕하세요 작업형3의 서머리에서의 결정계수라던지 용어에 대해서 정리된 파일이나 참고할 자료라 있을까요??영어랑 한글이 자꾸 헷갈려서 질문드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션14 5회 기출문제 작업형 1-2 질문
안녕하세요, 5회 작업형 1-2 질문입니다.아래와 같이, cond 변수를 만들어주고,변수들을 내림차순 정렬 해봤는데요.아래 구문 그대로 실행 시 '과체중 또는 위험체중' 조건에서 bmi가 25.0000인 row가 출력됩니다. 과체중 또는 위험체중 : Gender Height Weight Height(m) bmi 7841 Female 157.0 56.7 1.570 23.002962 5311 Female 154.2 54.7 1.542 23.004806 8467 Female 159.6 58.6 1.596 23.005509 8304 Female 159.6 58.6 1.596 23.005509 6165 Female 155.6 55.7 1.556 23.005730 ... ... ... ... ... ... 7126 Female 151.8 57.6 1.518 24.996485 9661 Female 164.2 67.4 1.642 24.998479 903 Male 172.4 74.3 1.724 24.998520 9473 Female 160.5 64.4 1.605 24.999757 5355 Female 160.0 64.0 1.600 25.000000 조건에서 25 미만으로 당연히 걸러질거라 생각했는데.리스트에 들어갔고, 실제로 정답은 맞습니다.이 경우는 무슨 경우인가요? import pandas as pd df = pd.read_csv("5-2bmi.csv") # your code df['Height(m)'] = df['Height'] / 100 df['bmi'] = df['Weight'] / (df['Height(m)'] ** 2) # print(df.info()) # print(df.head()) # 정상체중 cond1 = df['bmi'] >= 18.5 cond2 = df['bmi'] < 23 # 위험체중 cond3 = df['bmi'] >= 23 cond4 = df['bmi'] < 25 # bmi 정상 사람수 : 1986 # print((df[cond1 & cond2].sort_values('bmi', ascending=True))) a = len(df[cond1 & cond2].sort_values('bmi', ascending=True)) # print(len(df[cond1 & cond2].sort_values('bmi', ascending=True))) # bmi 위험체중 사람수 : 2130 print('과체중 또는 위험체중 :') print(df[cond3 & cond4].sort_values('bmi', ascending=True)) # ★ b = len(df[cond3 & cond4].sort_values('bmi', ascending=True)) # print(len(df[cond3 & cond4].sort_values('bmi', ascending=True))) print(int(abs(a-b))) # 144
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2유형 원핫 인코딩 수행 후
작업형 2유형 원핫인코딩 수행 후 훈련 데이터와 테스트데이터의 컬럼수가 안맞아서 컬럼 갯수가 적은 데이터 기준으로 컬럼 순서와 갯수를 맞춰주고 모델을 학습시키는데 상관 없을까요??(분류문제)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
print(int) 에러
작업 1유형에서 정수로 값 도출한 뒤에 print문으로 출력하려고 하는데 자꾸 type error가 뜹니다..시험환경에서는 print문 안 쓰면 값 도출이 안되는데 이럴땐 어떻게 해야할까요..?...import pandas as pd df = pd.read_csv("./sample_data/5-1price.csv") # your code cond = df[(df['종량제봉투종류'] == '규격봉투') & (df['종량제봉투용도'] == '음식물쓰레기')] cond2 = cond[cond['2ℓ가격'] != 0] #cond2['2ℓ가격'].unique() result = cond2['2ℓ가격'].mean() print(round(result))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
1과목 기출에서 자주나오는 내용을 2,3과목 로드맵과 같은형태로 받을 수 있을까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요물론 직접 타이핑 하는게 도움이 되지만시험직전에 보면서 안정을 취하고 싶습니다 ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
세션 종료
코드 작성하고 실행 시켰는데 세션이 다운됐어요. 왜 이런걸까요??코랩 자체에서 무료 제공하는 리소스를 모두 소진한 줄 알았는데, 다른 문제들에 대해서는 아직 잘 돌아갑니다.제가 작성한 코드도 같이 올려둘게요!import pandas as pdfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errordf1 = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/작업형2 모의문제/모의문제 2번/train.csv')# print(df1.head())# print(df1.info())# print(df1.shape)df2 = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/작업형2 모의문제/모의문제 2번/test.csv')# print(df2.head())# print(df2.info())# print(df2.shape)df1['name'] = df1['name'].fillna(df1['name'].mode()[0])df1['host_name'] = df1['host_name'].fillna(df1['name'].mode()[0])df1['last_review'] = df1['last_review'].fillna(df1['name'].mode()[0])df1['reviews_per_month'] = df1['reviews_per_month'].fillna(df1['reviews_per_month'].median())df2['name'] = df2['name'].fillna(df2['name'].mode()[0])df2['host_name'] = df2['host_name'].fillna(df2['name'].mode()[0])df2['last_review'] = df2['last_review'].fillna(df2['name'].mode()[0])df2['reviews_per_month'] = df2['reviews_per_month'].fillna(df2['reviews_per_month'].median())x = df1.drop('price', axis=1)y = df1['price']x_encoded = pd.get_dummies(x)x_train, x_valid, y_train, y_valid = train_test_split(x_encoded.drop('id', axis=1), y, test_size=0.25)md = RandomForestRegressor(n_estimators=300)md.fit(x_train, y_train)pred = md.predict(x_valid)print(mean_squared_error(y_valid, pred)) # MSEprint(mean_squared_error(y_valid, pred, squared=False)) # RMSEx_test = df2x_test_encoded = pd.get_dummies(x_test)md = RandomForestRegressor(n_estimators=300)md.fit(x_encoded.drop('id', axis=1), y)pred = md.predict_proba(x_test_encoded.drop('id', axis=1))print(pred)print(pred.shape)result = pd.DataFrame({'id' : df2['id'], 'price' : pred })result.to_csv('작업형2 모의문제 2번.csv', index=False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형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)
이상치 확인 이후!
만약 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) 위의 부분은 원래 답이고, 아래 부분은 제가 작성한 부분입니다.따로 함수를 안 만들고, 제가 작성한 방식으로 해도 괜찮은가요?