묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
predict, get_prediction 차이가 궁금합니다
newdata 데이터 프레임 생성 후 model.predict(newdata) pred = model.get_prediction(newdata)pred.summary_frame(alpha=0.05) # 신뢰구간, 예측값 구하기 1,2번의 차이가 무엇인지 궁금합니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
rmse, mape 오류
<rmse>import numpy as npdef rmsle(y_test, y_pred): return np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred)), 2)) print(np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred)), 2))) 이렇게 입력하면 예측값은 안뜨고 power() takes from 2 to 3 positional arguments but 1 were given 라고 뜹니다 ㅠ 뭐가 문제인 건가요?<mape>import numpy as npdef mape(y_val, pred): return np.mean(np.abs((y_val - pred)/y_val))**100 print(np.mean(np.abs((y_val - pred)/y_val))**100) 이렇게 입력하면 예측값은 안뜨고 inf라고만 뜹니다. rmse와 mape 둘다 왜 예측값은 안뜨는건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 1유형 문의
https://www.kaggle.com/code/agileteam/t1-23-drop-duplicates 안녕하세요 강사님캐글에 정리해주신 1유형 문제 중 궁금한게 있어서 질문드립니다. 지문 내용 중- 결측치는 f1의 데이터 중 10번째 인덱스에 위치한 값으로 채움풀이를 보면 f1 컬럼 기준 내림차순 정렬 수행 후, 10번째 인덱스 값(10번째로 큰 값)으로 풀이 되어있습니다.문제 지문에 상위 혹은 10번째로 큰 값이라는 내용이 없어서 처음 풀이 시, 저는 주어진 데이터에서 정렬 없이 10번째 인덱스 값을 사용하여 풀이하였습니다.시험에서 위와 비슷한 유형의 문제 풀이 시 내림차순 정렬을 기본 전제로 풀이해야하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
시험환경 적응
안녕하세요. 현재 노트북으로만 진행해왔는데요.시험전에 시험환경에 적응하는게 좋다는 말을 듣긴했는데, 어디서 어떻게 적응할 수 있는지 모르겠습니다.시험환경에서 기출문제를 풀어볼 수 있는건가요?시험환경에서 어떤것이라도 해볼 수 있는 링크나 방법이 궁금합니다.1유형에서 답을 제출할때 제출하는 칸에 코드를 넣는것인지, 숫자를 넣는것인지 모르겠습니다.코드를 넣는게 맞다면, 코드가 길어지면 어떻게 해야할까요? 한줄로 이어 붙이면 될까요?케글에 있는 작업형1 모의고사2 번 문제인데, 만약에 코드가 답이라면 cond = (df['f1'].isnull())df = df[cond]result = df['f5'].median()print(result) 이렇게 붙여넣으면 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
train.pop('A') 와 train['A'] 가 어떤 차이가 있나요?
기출4회 작업형2 설명 중에서target = train.pop('Segmentation') 코드가 있는데이게 a = train['Segmentation'] 과 어떤 차이가 있나요?target이나 a 나 train 데이터프레임에서 Segmentation 컬럼을 추출하는 것은 동일하지 않나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 random_state
안녕하세요! 작업형 2에서 random_state 때문에 혼선이 오네요 ㅠㅠ 제가 잘못 이해를 한건지, 검증데이터 분리 / 모델링시 고정? 용도로 사용한다고 인지했는데, 막상 문제 풀어보니 설정값에 따라 10점 차이가 나더라구요 ㅜㅜ random_state=2022 (71점) / random_state=0 (85점)차이가 왜케 많이 나는걸까요? ㅠ 혹시 추천하시는 값이 있으실까요? # 검증 데이터 분리 from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('TravelInsurance', axis=1), train['TravelInsurance'], test_size=0.1, random_state=2022) # from sklearn.model_selection import train_test_split # X_tr, X_val, y_tr, y_val = train_test_split(train.drop('TravelInsurance', axis=1), # train['TravelInsurance'], # test_size=0.1, # random_state=0) # 모델링 from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(n_estimators=400, max_depth=9, random_state=2022) rf.fit(X_tr, y_tr) pred = rf.predict_proba(X_val)[:,1]
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형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 / 전체갯수 니까 값이 다른부분에 대해선 인지하고있습니다.