묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 정리한 내용 확인 부탁드립니다 ㅜㅜ
###데이터전처리(범주형 데이터 수 많은데 카테고리 다를 때 삭제, 비행기 문제 생각)train = train.drop(‘컬럼명’, axis=1)test = test.drop(‘컬럼명’, axis=1)결측치 채우기 (범주형)cond_o = ['범주형컬럼명1',‘컬럼명2’...]train[cond_o]=train[cond_o].fillna("X")test[cond_o]=test[cond_o].fillna("X")결측치 채우기 (수치형, 0/중앙값/최소값/평균 등 데이터에 맞게)cond_f = ['컬럼명1‘,’컬럼명2'...]train[cond_f]=train[cond_f].fillna(0)test[cond_f]=test[cond_f].fillna(0)target = train.pop(‘타겟컬럼명’) ###인코딩print(train.shape, test.shape)train = pd.get_dummies(train)test = pd.get_dummies(test)print(train.shape, test.shape) (범주형 카테고리 다르면 합쳐서 원핫인코딩 진행)print(train.shape, test.shape)concat = pd.concat([train,test])concat_dummies = pd.get_dummies(concat)n_train = len(train)train = concat_dummies[:n_train]test = concat_dummies[n_train:]print(train.shape, test.shape)###하이퍼파라미터class_weight='balanced' : 타겟 데이터 불균형일 때 사용max_depth : 3~7(분류) 7~12(회귀)n_estimators : 200~600 (100단위)learning_rate : n_estimators 와 반비례하게 사용 - 0.01~0.1 (랜덤포레스트에서 적용 안됨)이렇게 정리해서 외워도 될까요??하이퍼파라미터는 각각 어떤 상황에 사용해야 하는지 잘 모르겠습니다ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
14강 "" 사용 관련 질문
14강 18분 37초 수강중입니다.# 하나의 열에 대해 여러 집계 함수를 동시에 적용 pt = df.pivot_table( index=['구분', '크기'], values=['수량', '금액'], aggfunc={'수량': "mean", '금액': ["min", "max", "mean"]} ) pt이 부분에서,"min", "max", "mean" 같은 내장함수를 왜 "" 안에 넣어야 하는지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 제출 점수
코랩에서 lightgbm으로 학습시키고 f1-score 출력했을 때는 0.5277이 나왔는데 캐글에 제출하니까 0.3028으로 더 낮게 나오는데 왜 이런 건가요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출 마무리 방법
이제 시험도 약 10일 남았는데 지금 3유형 마지막에 회귀 분석만 들으면일단 이론이 끝나고 기출유형 공부하고자 하는데 고심끝에 8회 ~ 11회 기출에 집중하는 식으로 마무리 하고자 해요.그 문제 2~3회 회독하면 시간 다 될꺼 같은데어떤 식으로 하면 되는지 마지막 조언을 부탁합니다.
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
빅이시 작업형2 기초 - 케이스 1~3 관련 문의
안녕하세요. 빅이시 강의 수강 및 코드 관련 문의 드립니다.'추천' 파트와 달리 '기초'에는 랜덤 포레스트 모델로(만) 예측하는 코드가 구현되어 있음을 확인했습니다.기초 케이스에도 LightGBM으로도 예측하는 코드를 추가 가능하실까요?추천(1~3) 코드에서 LightGBM 부분을 추출하여 기초 코드를'# 2_1. 머신러닝 학습 및 예측(랜덤포레스트)''# 2_2. 머신러닝 학습 및 예측(LightGBM)''# 3_1. 결과 파일 생성(랜덤포레스트)''# 3_2. 결과 파일 생성(LightGBM)'이렇게 코드를 자체적으로 이식(?)하고 이원화하여 수정해보려고 했는데 재대로 한 게 맞는지 확신이 없어 문의드립니다ㅠㅜ
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터프레임 슬라이싱 인덱싱 질문2
같은 질문 다시 드려서 죄송합니다;;;;;(기출 9회의 작업형 1의 3번 문제를 풀고 있습니다.)이전 인덱싱 혹은 슬라이싱 질문에서 df[숫자]는 행 선택만 되고 열 선택은 되지 않아 df.loc와 df.iloc를 사용했었는데 9번 기출에서 unstack한 경우에는 어째서 df[숫자]로 열선택이 가능한지에 대한 질문을 드렸습니다. 답변으로 기본적으로 df[숫자]는 인덱스 기반으로한 행 선택이고 unstack에서 컬럼명이 숫자(정수)로 바뀌어서 가능했다 라고 답변을 받았었습니다.일반 df[숫자] → 행 선택 (인덱스 기반) 컬럼명이 정수인 df[숫자] → 열 선택 (컬럼명 기반)그런데 이번에 9번 기출에 혹시나 하고 df[0]을 넣었는데 이 상황에서는 왜 에러가 나는 것인가요? 참고로 df를 새로 불러오고 시도해도 오류가 났었습니다.;;; 그런데 기출 9회 작업형 3에서는 df[:140]으로 데이터 분할을 합니다.... 무슨 차이 인가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
단일표본검정, 샤피로검정, 윌콕슨검정
제일 먼저 정규성을 판단하기 위해 샤피로검정을 진행한 후, 따른다면 단일표본검정을 진행하면 되고, 따르지 않는다면 윌콕슨검정을 진행하면 된다 라고 이해하면 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
강의자료 다운로드 여부
강의 PPT 자료는 공유가 안 되는 걸까요? 파이썬을 완전 처음 접하는 거라 복습을 어떻게 해야할지가 막막해서 질문드려요!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
문제에 첨부된 예시와 실제 출력된 샘플 비교
문제에 명시되어있는 샘플pred0.170.330.11...이건 형식만 참고하면 되는거 맞을까요? 그러니까 샘플에 있는 수치들과 제가 만든 csv head() 출력했을 때의 수치도 샘플과 유사해야하는건지 궁금합니다. 또한 제출 버튼 누를 때 result.csv 만드는 코드 아래 csv가 잘 만들어졌는지 개인적으로 확인하는 코드 (head나 shape)는 냅둬도 괜찮은건가요? 아님 csv 만드는 코드가 마지막 줄에 있는 상태로 제출 버튼을 눌러야 하는 것일까요? 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫 인코딩 관련
그냥 get_dummies로 인코딩 하는것보다 위 사진과 같이 train,test 데이터를 합치고 인코딩 후 다시 분할하는게 항상 더 좋은 방법일까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
타겟 분리
결측치 처리 전에 타겟 변수를 먼저 분리한 후에 결측치 처리를 해야하나요?저번엔 결측치 처리 전에 무조건 타겟변수를 먼저 분리하라고 하셨는데,이번에는 분리를 따로 안하셔서요.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
Id 삭제
에어비엔비 가격 데이터에서 ID는 왜 삭제하는건가요? 꼭 삭제해야하는 건가요?여기 답변달린거 보니까 숫자인 경우에는 ID 삭제 안해도 된다고 하던데 ID가 숫자인데 왜 삭제하는 건가요?+) AI 답변 확인했는데, 맨 처음 전처리를 할 때 ID를 삭제할지 안할지를 어떻게 판단하는지 기준을 알고싶어요.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
roc_auc_score 질문: 작업형2 모의문제3 09분 48초
작업형2 모의문제3 09분 48초이 부분에서 .predict_proba()를 통해서 pred_proba라는 변수에 평가 결과가 저장되었는데 이때 pred_proba[:,1]로 슬라이싱하는 이유를 질문드립니다.pred_proba라는 변수는 roc_auc_score 확률값이 저장되어있는데, roc_auc_score 평가 지표는 2개의 클래스에 각각 해당될 확률인 2개의 컬럼이 있는 배열로 출력되는데 0번 컬럼이 "심장마비 확률 높음" 컬럼인지 "심장마비 확률 낮음" 의 컬럼인지 어떻게 판단해서 [:, 1]로 슬라이싱하는 걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩 코드 질문
작업형2 모의문제2 11분12초의 레이블인코딩이 아닌 원핫인코딩으로 변경하는 코드에 대해서 질문드립니다.만약 원핫인코딩으로 진행하려면 아래와 같이 코드를 작성하면 될까요? # 원핫인코딩 train = train.drop('price', axis = 1) train = pd.get_dummies(train) test = pd.get_dummies(test)그리고 원핫인코딩으로 변경하면 검증데이터 분리 과정에서 코드를 어떻게 수정해야하나요?(.pop()을 사용해서 'price' 컬럼을 따로 변수에 저장한 후에 target 부분에 넣어야할까요?)X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2, random_state = 0 )
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
map 함수 사용 필수적인가요
작업형1 - section14 를 먼저 풀었을 때 아래처럼 작성하였습니다답은 맞게 나오긴하는데 풀이에선 map을 활용하였더라고요. 따라서 써보려고 하는중인데 영 손에 익지않습니다 ㅠㅠ혹시 이후 과정에서도 map을 많이 사용한다면 최대한 외워보려고 하는데 필수적일까요 ..? import pandas as pd # df = pd.read_csv("type1_data1.csv") df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/type1_data1.csv") #print(df.shape) # 1 중복 데이터 제거 df = df.drop_duplicates() #print(df.shape) # 2 f3 변환 ## 결측치 -> 0 # print(df.isna().sum()) df['f3'] = df['f3'].fillna(0) # print(df.isna().sum()) ## silver -> 1 , gold -> 2, vip -> 3 cond1 = df['f3'] == 'silver' cond2 = df['f3'] == 'gold' cond3 = df['f3'] == 'vip' df[cond1] = 1 df[cond2] = 2 df[cond3] = 3 # 3 f3 sum() result = df['f3'].sum() print(result)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
수강 기한 연장 문의드립니다.
안녕하세요 강사님, 항상 좋은 강의 감사합니다 !다름이 아니라, 강의 수강 기한이 곧 만료되어 혹시 가능하다면 이번 시험 일정까지만 연장이 가능할지 여쭤봅니다..!(연락 가능한 메일 : hk2044@naver.com)감사합니다!
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
34강 평가지표
안녕하세요 강사님평가지표 강의중에 문득 궁금한게 생겨서요앞선 강의에서는 문자는 모두 인코딩을 통해 숫자형으로 변환했는데,갑가지 강의에서 실제값, 예측값에 문자가 있을 경우를 설명해주시니 조금 혼란스럽네요...그리고 이번 강의는 너무 빠르게 훑고 넘어가서 이해가 잘 안되는거 같습니다아래 average 부분도 언제 이걸 쓰는지 알아야 할 거 같은데... 설명없이 슥 넘어가버려서...average= micro, macro, weighted
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
103강 작업2형 전처리(레이블인코딩 부분) 오류
import pandas as pd train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/hr_train.csv") test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/hr_test.csv") # 4. 데이터 전처리 target = train.pop('target') train = train.fillna('X') test = test.fillna('X') com = pd.concat([train, test]) from sklearn.preprocessing import LabelEncoder le = LabelEncoder() cols = train.select_dtypes(include='object').columns for col in cols: # com[col] = le.fit.transform(com[col]) # n_train = len(train) # train = com[:n_train] # test = com[n_train:] # # 5. 검증 데이터 나누기 # 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) # # 6. 학습 및 평가 # from sklearn.ensemble import RandomForestClassifier # rf = RandomForestClassifier(random_state=0) # rf.fit(X_tr, y_tr) # pred = rf.predict_proba(X_val) # from sklearn.metrics import roc_auc_score # ras = roc_auc_score(y_val, pred[:,1]) # print("랜덤ras:", ras) # import lightgbm as lgb # lg = lgb.LGBMClassifier(random_state=0, verbose=-1) # lg.fit(X_tr, y_tr) # pred = lg.predict_proba(X_val) # from sklearn.metrics import roc_auc_score # ras = roc_auc_score(y_val, pred[:,1]) # print("엘지비ras:", ras) # # 7. 제출파일 생성 # pred = rf.predict_proba(test) # result = pd.DataFrame({"pred":pred[:,1]}) # result.to_csv("result.csv", index=False) **레이블인코딩 부분이 오류가 계속 나는데 어디가 잘못 됐는지 찾지를 못합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1_section14 문의
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요작업형1_section14 에서 fillna(0)을 적용한 뒤 map() 함수를 사용하면 최종 결과 값은 동일하나 df 조회 시 다시 결측값이 발생됩니다.이 경우 map() 대신 replace()를 사용하는 것이 맞는지 궁금합니다.# 값 대체 df['f3'] = df['f3'].fillna(0) dict_list = {'silver':1, 'gold':2, 'vip':3} df['f3'] = df['f3'].map(dict_list)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1_연습문제 7번 관련입니다.
20번 강의 > 7번 문제를 풀던 중, 모든 나이에 1을 더하고, cond1 cond2를 설정한 뒤 각 조건의 절댓값 차이를 result 변수에 넣고 값을 확인했습니다. 값이 783.37이 나왔습니다. 선생님께서는 정답을 263.13으로 말씀 주셨습니다. 코드가 같은데, 값이 다른 이유가 궁금합니다. 제가 쓴 코드는 아래에 첨부하였습니다. df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/type1_data1.csv") df['age'] = df['age'] +1 cond1 = (df['age']>=20) & (df['age']<30) cond2 = (df['age']>=30) & (df['age']<40) result = abs(df[cond1]['views'].mean() - df[cond2]['views'].mean()) print(result) print(round(result, 2))