묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
from sklearn.metrics import root_mean_squared_error
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요결론부터 말씀드리면, scikit-learn 버전 1.4 이상부터는 root_mean_squared_error 함수를 직접 import해서 사용할 수 있습니다.과거에는 RMSE를 계산하기 위해 mean_squared_error를 불러와 제곱근을 취해야 했지만, 최신 버전에서는 더 직관적으로 사용할 수 있게 함수가 추가되었습니다.사용 방법 (scikit-learn 1.4 이상)아래와 같이 바로 import하여 사용하시면 됩니다. 라는데.. 시험칠 때 바로 적용 가능한가요?아니면 강의내용처럼 mse에 함수 만들어야 하나요? 유형 2 질문입니다. ㅜㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
8회 작업형2
train = train.drop('customerID', axis=1) test = test.drop('customerID', axis=1) target = train.pop('TotalCharges') train = pd.get_dummies(train) test = pd.get_dummies(test) from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor(random_state=0) rf.fit(X_tr, y_tr) pred = rf.predict(X_val) # print(pred) from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_val, pred) print(mse) pred = rf.predict(test) result = pd.DataFrame({'pred':pred}) result.to_csv('result.csv', index=False) print(pd.read_csv('result.csv')) print(pd.read_csv('result.csv').head()) print(pd.read_csv('result.csv').shape)원핫인코딩, 랜덤포레스트로 진행했는데mse 값이 1561363.7676789626크게 나오는데 이렇게 진행해도 괜찮을까요?제출파일의 pred값을 확인해보면 선생님이 하셨던 라벨인코딩, lgbm pred 예측값과는 차이가 별로 나지는 않습니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
제2유형 실기
name, ID 등 드랍해도 되는가? 풀이해주신 강의를 쭉 보면 어떤 항목은 드랍했고, 예를들어 랜포로 한번에 푸는 강의에서는드랍은 없었는데, 당장 내일 시험이라면 드랍없이 가도 괜찮을까요? 드랍안했다고해서 0점맞지는 않겠죠?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형 2
카테고리가 달라서 concat 하는게 번거로우면아래 해설로 진행하면 해결되는건가요? train, test = train.align(test, join='left', axis=1, fill_value=0)원핫인코딩: train = pd.get_dummies(train)test = pd.get_dummies(test)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의문제 작업형 2 코드 ㅠㅠㅠ 제가 작성한 코드에 어디에 문제가 있는것일까요?
import pandas as pdtrain = pd.read_csv("data/customer_train.csv")test = pd.read_csv("data/customer_test.csv")#print(train.shape, test.shape)#결측치 채우기train['환불금액']=train['환불금액'].fillna(train['환불금액'].median())test['환불금액']=test['환불금액'].fillna(test['환불금액'].median())# print(train.isnull().sum())#범주형컬럼 카테고리 수 확인하기cols=train.select_dtypes(include="O").columnsprint(cols)for col in cols: same=set(train[col].unique())==set(test[col].unique()) print(col,same)train=train.drop('회원ID',axis=1)test=test.drop('회원ID',axis=1)target=train.pop("총구매액")mid=len(train)#데이터 합치고 인코딩 후 다시 분할하기df=pd.concat([train,test],axis=0)print(df)#라벨인코딩하기from sklearn.preprocessing import LabelEncoderle=LabelEncoder()for col in cols: df[col]= le.fit_transform(df[col])# print(df.head(8))#다시 나누기train=df.iloc[:mid].copy()test=df.iloc[mid:].copy()print(train.shape, test.shape)#민맥스스케일링(추후)#train데이터 분할하기from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val=train_test_split(train,target, test_size=0.2, random_state=100)# #모델구축(1) #707.539# from sklearn.ensemble import RandomForestRegressor# model=RandomForestRegressor(random_state=100)# model.fit(X_tr, y_tr)# pred=model.predict(X_val)#모델구축(2) 705.1955import lightgbm as lgbmodel=lgb.LGBMRegressor(random_state=0, verbose=-1)model.fit(X_tr, y_tr)pred=model.predict(X_val)#성능평가RMSEfrom sklearn.metrics import root_mean_squared_errorprint(root_mean_squared_error(y_val, pred)) 성능평가한 값이 선생님 결과랑 터무니없이 차이가 많이 나네요 ㅠㅠ어디가 잘못된걸까요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 하이퍼파라미터튜닝
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요하이퍼 파라미터 튜닝을 하는데 그리드서치를 써서 해도 되나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
현재 체험환경에 있는 작업형 2번 문제 데이터는 concat해서 풀어도 되나요?
물론 범주형 카테고리가 다른것도 확인은 했지만 그래도 concat하고 분할해도 무방한가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
이진분류에서 양성이 0일 때, roc_auc_score 적용..
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 평가지표 중 roc_auc_score 학습 중에 궁금한 사항이 있어서 질문드립니다. 강의나 시나공, 기출 다 이진분류 0, 1 중 1을 양성으로 예측하는 문제가 있어서 반대로 0일 확률을 예측하고 평가하는 경우 어떻게 처리해야하는지 궁금해서요..!! rf = RandomForestClassifier(random_state = 0)rf.fit(X_tr, y_tr) 그리고 rf.classes_ 로 확인해보면 [0, 1] 일 때,y_pred_rf = rf.predict_proba(X_val) 그리고 roc_auc_score에서roc_auc_score(y_val, y_pred_rf[:, 0]) 이렇게 첫 번째 클래스(0일 확률)를 입력하면 자동으로 0을 양성으로 계산해서 모형평가가 이루어지는 건가요?아니면 pos_label = 0 이라고 지정을 하거나, 별도의 방법이 필요한가요?! 그리고 분류 클래스가 문자형(A, B)인 경우에는(rf.classes_도 [A, B])roc_auc_score(y_val, y_pred[: , 1]) 이렇게 하면 자동으로 B를 양성으로 인식하는 게 맞는지 궁금합니다 !! (이경우에도 A 확률을 평가하려면y_pred[:, 0]으로 하고 pos_label = 'A'라고 해야하는지도 ㅠㅜ) 감사합니다 :)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
피벗테이블은 필수로 알아야하나요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요피벗테이블은 필수로 알아놔야할까요? 뭔가 더헷갈려서요... 언스택만 알아도 충분할지 문의드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의고사
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요문제 아래쪽에 있는 코드를 모두 복사하라는데 그게 어딨나요..?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
클래스 불균형 질문드립니다.
기출 9회 작업2유형 풀이 코드입니다.# print(train.shape,test.shape) # (4000, 9) (1000, 8) # print(train.info(), test.info()) # float64(3), int64(2), object(4), float64(3), int64(1), object(4) # print(train.nunique(), test.nunique()) # 농업면적 4000, 비료사용량 3997, 비료잔여량 4000 # print(train.head(30)) # train = train.drop(columns = '농업면적') # test = test.drop(columns = '농업면적') # train = train.drop(columns = '비료사용량') # test = test.drop(columns = '비료사용량') # train = train.drop(columns = '비료잔여량') # test = test.drop(columns = '비료잔여량') # target = train.pop('농약검출여부') from sklearn.preprocessing import LabelEncoder le = LabelEncoder() cols = train.select_dtypes(include = 'O').columns for col in cols: train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size =0.2, random_state = 0) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state = 0, max_depth = 11, n_estimators = 200, class_weight = 'balanced') rf.fit(X_tr, y_tr) pred = rf.predict(X_val) from sklearn.metrics import f1_score, accuracy_score, recall_score print('f1 : ', round(f1_score(y_val, pred, average = 'macro'), 3)) print('acc : ', round(accuracy_score(y_val, pred), 3)) print('recall : ', round(recall_score(y_val, pred, average = 'macro'), 3))처음 학습을 진행할 때 랜덤포레스트에 class_weight 하이퍼파라미터는 적용하지 않은 상태에서 학습을 진행했고, f1 : 0.887 acc : 0.97 recall : 0.848이라는 높은 수치가 나왔습니다.GPT 확인해보니 accuracy_score 점수가 f1_score 점수보다 높으면 과적합 문제가 있을 수도 있다고해서확인을 해보니 과적합 문제는 아닌 것 같았습니다. 이후에 train['농약검출여부'].value_counts()를 해보니 클래스 불균형으로 판단을 했습니다.(농약검출여부 = (2 : 1989, 0 : 1758, 1 : 253)) 확인 후에 class_weight 하이퍼 파라미터를 추가했는데도 수치가 크게 달라지지 않더라구요.f1 : 0.856 acc : 0.945 recall : 0.887이런 경우에는 그냥 제출하는게 맞을까요 ? 지난 9회차 시험에 평가지표 수치가 높게 나오긴 했는데 만점은 받았거든요..그래도 수치가 높으면 좀 불안하네요..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
5회 기출문제 수업질문입니다
질문 여기다 드리면 되나요 샘 코드 한번만 봐주세요 오늘 강의 들어왔어요 ㅠㅠ 진작했어야했는데요 에러는 안났느데 답 수치가 달라서요import pandas as pdtrain=pd.read_csv("train.csv")test=pd.read_csv("test.csv")# print(train.info())# print(test.info()) from sklearn.preprocessing import LabelEncoderle= LabelEncoder()cols= ("model", "transmission", "fuelType")for col in cols:le.fit(train[col])train[col]= le.transform(train[col])test[col]= le.transform(test[col])from sklearn.model_selection import train_test_splitX=train.drop(columns=["fuelType", "price"])y=train["price"]X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.2, random_state=20)print(train.shape)print(test.shape)from sklearn.ensemble import RandomForestRegressorrfr=RandomForestRegressor(n_estimators=400, max_depth=30, random_state=20)rfr.fit(X_train, y_train)pred1=rfr.predict(X_test)print(pred1)from sklearn.metrics import root_mean_squared_errorrmse= root_mean_squared_error(y_test, pred1)print("rmse:", rmse)test_X=test.drop(columns=["fuelType"])pred2=rfr.predict(test_X)pd.DataFrame({"pred":pred2}).to_csv("result.csv", index=False)print(pd.read_csv("result.csv"))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
labelencoder 질문
target = train.pop('Heat_Load') cols = ['Roof','Height','Orient', 'Heat_Load'] from sklearn.preprocessing import LabelEncoder for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) 영상처럼 원핫인코딩을 진행하면 오류가 없는데 라벨인코딩 진행시 오류가 납니다 ㅠㅠ KeyError: 'Heat_Load' 이렇게 뜨는데 어떻게 해결해야 하나요?
-
미해결[2025년 최신 기출 반영] 빅데이터 분석 기사 실기 시험 100% 합격 ! 기출 문제의 패턴이 보인다 !
범주형 인코딩
범주형 인코딩을 할 때 아래 코드를 사용한다고 강의에서 말씀하셨습니다.le_product = LabelEncoder()le_store = LabelEncoder()train['주구매상품_encode'] = le_product.fit_transform(train['주구매상품'])train['주구매지점_encode'] = le_store.fit_transform(train['주구매지점'])test['주구매상품_encode'] = le_product.fit_transform(test['주구매상품'])test['주구매지점_encode'] = le_store.fit_transform(test['주구매지점']) 그런데 test 데이터에서 인코딩을 할 때 train에서와 같은 기준으로 인코딩을 해야 하니까, test에서는 fit_transform이 아니라 그냥 transform을 하는게 더 적절하지 않은지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 기출
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요작업형1의 기출을 풀고 있습니다. 저는 주로 '~~기준 ~~번째로 큰 데이터의 ~~을 구하시오'라는 문제를 풀 때 그 값을 기준으로 sort_values를 하고 그에 따라 맞는 행과 컬럼을 iloc로 답을 구하고 있습니다. 강사님과 답은 똑같은데 제 방식대로 계속 하면 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
제2유형 전처리작업
제2유형 전처리 작업할 때, 결측치 - 중앙값 또는 0 처리 / 환불금액의 경우 상식적으로 환불을 안하는 사람이 있으니 0 처리가 맞을듯 범주형(문자열) - drop 진행 안하고 그대로 원핫인코딩만 진행하려고합니다. 상관 없을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 1 문제 1-2
소비량이 5번째로 많은 국가를 하는데, 3번째로 많은 국가가 2곳입니다.그러면 3번째를 공동 3위로 처리해서 1,2,3,3,5 이렇게 보는 걸까요?? 문제의 말로만 따지면 5번째로 많은 국가니까 313 다음 국가를 써야하나 싶어서 질문드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2 유형 한가지 풀이 질문
안녕하세요 선생님, 9회차에서 50점으로 아쉽게 떨어지고 재수강중인 학생입니다다름이 아니라 작년 시험에서 기억이 잘 안나는데 제가 작업형 2 유형을원핫인코딩 - 랜덤포레스트 한가지로 통일해서 연습해서 9회차 시험에서도 그렇게 했던 기억이 있는데요물론 그 때 작업형 2 유형을 40점을 맞았지만뭔가 불안해서 한 번 이렇게 여쭤보게 되었습니다.작업형 2 유형은 그냥 원핫인코딩 - 랜덤포레스트 기준으로 평가지표에 맞게만 하면 되겠죠...? 스케일링이나 하이퍼 파라미터 사용 없이? 😥😥
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
실전에서 스켈링&파라미터 안쓰는게 낫나요?
안녕하세요 시험에서, 스케일링과 모델에있어 하이퍼파라미터 튜닝을 할 수 있다면 하는게 더 좋나 여쭤보려합니다 랜덤포레스트에서 max_depth, n_estimators같은 것들을 변경했을 때, 제가 보는 평가지표상에서는 더 좋아질지언정 과대학습으로 오히려 시험점수가 낮게나올수도 있다고 하더라고요. 하이퍼파라미터는 해서 평가지표가 더 좋아지면 하고 내는게 좋나요? 또한 후기를 찾아보니 수치형데이터들이 엄청 크게 나온다는데 이경우 스케일링을 하는게 더 효과적일까요
-
미해결[2025년 최신 기출 반영] 빅데이터 분석 기사 실기 시험 100% 합격 ! 기출 문제의 패턴이 보인다 !
원핫인코딩시 라벨링질문
원핫인코딩할때 자동으로 범주형을 bool형으로 바꾸는데 라벨인코딩은 모델학습시 test에 없는 값이 나와서 문제가 생기지만 원핫인코딩은 문제가 없는걸로 알고있습니다.train범주형을 데이터 원핫인코딩하고 test도 원핫인코딩하고 train에 있는 col만 test에서 추출하지 않고 모델을 돌려도 실제 성능에는 혹시 차이가 없을까요?