묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2(신버전) 라벨인코딩 질문
트레인의 주구매지점 값이 42개, 테스트의 주구매지점 값이 41개로 값이 달라서, 어떤 값 때문에 차이가 나는지 확인해주셨습니다.트레인에는 있고, 테스트에는 없는 '소형가전' 때문이라고 찾아주시면서, 이 경우엔 전처리가 쉽고,트레인에는 없는데, 테스트에는 있으면, 전처리가 어렵다고 해주셨습니다. (인코딩 시 트레인 테스트를 합친 후 분리) Q1. 이전까지는 라벨인코딩 시 위와 같이 범주형 변수의 값들을 set함수를 통해 확인하지 않고 라벨인코딩을 진행했는데, 앞으로는 무조건 하는 것이 좋을까요? Q2. 원핫 인코딩 시에도 동일하게 위와 같은 확인절차가 필요할까요? Q3. train과 test를 합칠 땐, pd.concat(['train', 'test'], axis = 0) 함수를 쓰면 될 것 같은데, 합치고 인코딩을 마친 뒤, 분리할 때는 어떤 함수를 써야할까요?train과 test의 컬럼수를 통일한 뒤, pd.concat으로 합치려했으나 계속 오류가 뜨네요..ㅠㅠ 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
공유해주신 데이콘 문제
안녕하세요. 공유해주신 데이콘 문제 즁 분류문제를 풀어봤습니다. 이 문제에서 저는 Macro f1 평가점수가 0.37901이 나왔는데요...이게 빅분기 시험이었다면..40점 중 몇점 정도를 받았을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션6 모의고사 풀어보기 2 관련
안녕하세요! 모의고사2 관련 질문입니다. 수업에서 배운대로 pd.get_dummies로 원핫 인코딩을 했는데요.. 파일을 합쳐서 원핫인코딩을 하고나니 원래 있던 다른 수치형 컬럼들이 다 없어지고 원핫으로 만든 컬럼들만 남더라구요;;이렇게 되면 파일 다시 나누고 모델학습할떄 원핫으로 만든 컬럼들만 남아서 안될것같은데 제가 코드를 잘못친걸까요..? 전체 코드는 아래에 붙여놓았습니다. # 시험환경 세팅import pandas as pdfrom sklearn import datasetsdataset = datasets.load_breast_cancer()df = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])df['target'] = dataset['target']df.to_csv("data2.csv", index=False) from sklearn.model_selection import train_test_splittrain, test = train_test_split(df, test_size=0.2, random_state=2022)y_test = test.pop('target')train.to_csv('train.csv', index=False)test.to_csv('test.csv', index=False) # 데이터 파일 읽기 예제import pandas as pdtrain = pd.read_csv("data/customer_train.csv")test = pd.read_csv("data/customer_test.csv") #EDA# print(train.shape, test.shape) (3500, 11) (2482, 10)# print(train['성별'].value_counts()) 0 2184 1 1316# print(train.info(), test.info()) object=주구매상품, 주구매지점# print(train.isnull().sum(), test.isnull().sum()) 결측치는 환불금액 2295 / 1611# print(train['환불금액'].describe())pd.set_option('display.max_columns',None)#결측치train['환불금액'] = train['환불금액'].fillna(0)test['환불금액'] = test['환불금액'].fillna(0)# print(train.isnull().sum(), test.isnull().sum()) #파일 나누기target = train.pop('성별')# print(train.shape, target.shape)train =train.drop('회원ID', axis=1)# print(train.shape)id = test.pop('회원ID')# print(test.shape, id.shape)# print(train.shape, test.shape) #피쳐 엔지니어링#1.베이스라인 #2. 인코딩# print(train.describe(include='O'),test.describe(include='O') )# TRAIN 주구매상품에 소형가전이 추가로 있음# a = set(train['주구매지점'].unique())# b = set(test['주구매지점'].unique())# print (a-b)# print (b-a) all_df=pd.concat([train,test])cols = ['주구매상품', '주구매지점']all_df=pd.get_dummies(all_df[cols])print(all_df.head()) -> 여기서 원핫인코딩 한 이후로 원래 있던 수치형 컬럼들이 다 사라졌습니다; # print(train.columns) # from sklearn.preprocessing import LabelEncoder# for col in cols :# le = LabelEncoder()# train[col] = le.fit_transform(train[col])# test[col] = le.transform(test[col]) # print(train.head(), test.head()) # cols = ['주구매상품', '주구매지점']# cols = ['총구매액', '최대구매액', '환불금액', '방문일수', '방문당구매건수', '주말방문비율', '구매주기']# print(train.select_dtypes(exclude='object').columns) #데이터 분할# 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 =2024)# print(x_tr.shape, x_val.shape, y_tr.shape, y_val.shape) # #학습# from sklearn.ensemble import RandomForestClassifier# model = RandomForestClassifier(random_state=0)# model.fit(x_tr,y_tr)# pred = model.predict(x_val)# # print(pred)# print(pred.shape) # # #평가 f1# from sklearn.metrics import f1_score# print(f1_score(y_val, pred)) # #베이스라인 0.4460093896713615# #라벨인코딩 0.42352941176470593# #원핫인코딩
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형3 범주형 변수 관련 질문
선생님 안녕하세요!작업형3 로지스틱 회귀모형을 진행할 때범주형 데이터는 C()로 묶어서 하라고 말씀해주셨는데, 강의에서 만약 범주형 데이터인지 헷갈린다면 모두 C()로 묶어서 하라고 하셨던 것으로 기억하는데그렇게하면 에러가 뜨는데 왜일까요??# 2. # 로지스틱 회귀모형 from statsmodels.formula.api import logit # model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit() --> error # print(df.head()) model = logit('Survived ~ C(Gender) + SibSp + Parch + Fare', data=df).fit() print(model.summary()) # print(model.params['Parch']) # 답 : -0.201Warning: Maximum number of iterations has been exceeded. Current function value: inf Iterations: 35 Makefile:6: recipe for target 'py3_run' failed make: *** [py3_run] Error 1 /usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1819: RuntimeWarning: overflow encountered in exp return 1/(1+np.exp(-X)) /usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1872: RuntimeWarning: divide by zero encountered in log return np.sum(np.log(self.cdf(q*np.dot(X,params)))) Traceback (most recent call last): File "/goorm/Main.out", line 26, in <module> model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit() File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 1983, in fit bnryfit = super().fit(start_params=start_params, File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 230, in fit mlefit = super().fit(start_params=start_params, File "/usr/local/lib/python3.9/dist-packages/statsmodels/base/model.py", line 579, in fit Hinv = np.linalg.inv(-retvals['Hessian']) / nobs File "<__array_function__ internals>", line 5, in inv File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 545, in inv ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj) File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 88, in _raise_linalgerror_singular raise LinAlgError("Singular matrix") numpy.linalg.LinAlgError: Singular matrix
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
random_state 값에 따라서 값이 큰 차이가 나는 경우가 있나여 ?
안녕하세요 2유형을 공부하는 중에 train_test_split의 random_state 값에 따라서 값의 편차가 크게 차이 나는 것을 발견했습니다. # random_state = 1 : 0.8643817947300534 # random_state = 2023 : 0.7804496038326884이 정도로 차이가 나는데 테스트 값에는 크게 영항이 없는 것인가요 ? 다른 코드들은 모두 동일했습니다 ! import pandas as pd import warnings warnings.filterwarnings('ignore') train= pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/stroke_/train.csv') test= pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/stroke_/test.csv') train = train.drop('id',axis=1) test_id = test.pop('id') y_train = train.pop('stroke') # 결측치 채우기 train['bmi'] = train['bmi'].fillna(train['bmi'].mean()) test['bmi'] = test['bmi'].fillna(train['bmi'].mean()) train['age'] = train['age'].str.replace('*','').astype('int') # StandarScaler # print(train.info()) # train.nunique() cols = ['age','avg_glucose_level', 'bmi'] from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() train[cols] = scaler.fit_transform(train[cols]) test[cols] = scaler.transform(test[cols]) # LabelEncoder from sklearn.preprocessing import LabelEncoder le = LabelEncoder() train['gender'] = le.fit_transform(train[['gender']]) test['gender'] = le.fit_transform(test[['gender']]) # get_dummies train = pd.get_dummies(train) test = pd.get_dummies(test) cols = ['ever_married_No','work_type_Govt_job','Residence_type_Rural','smoking_status_Unknown'] train = train.drop(cols,axis=1) test = test.drop(cols,axis=1) from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(train,y_train,test_size=0.2,random_state=2023,stratify = y_train) from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=2023,n_estimators = 200) model.fit(X_tr,y_tr) pred_val = model.predict_proba(X_val) from sklearn.metrics import roc_auc_score roc_auc_score(y_val,pred_val[:,1]) # random_state = 1 : 0.8643817947300534 # random_state = 2023 : 0.7804496038326884
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1, 작업형3 답안제출 문의드립니다
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요 실기 답안 제출 방식이 6회->7회 변경된 것 같습니다.작업형1, 작업형3 답안 제출 방식이 혼동스러워서, 문의드립니다. 제6회 빅데이터분석기사 실기 자격검정 안내제7회 빅데이터분석기사 실기 자격검정 안내 6회에서는 별도의 (답안제출)공간이 없었기 때문에 코드 작성 구간에 print()문으로 답안을 기입했던 것으로 유추가 됩니다. 그렇다면 7회에서는 (풀이용)에 작성하는 코드는 채점에 미반영되며, 오로지 (답안제출)로만 채점반영 한다고 판단하면 될까요? 작업형1, 작업형3 코드 작성 화면에도 <제출> 버튼이 있기에, (풀이용)에 별도로 print()문 작성 및 제출해야 하는 것인지 의문이 들었습니다. 사소하지만, 정확하게 알고 넘어가지 않으면 0점 받을 수도 있는 사안이기에 질문 드립니다. 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출6회 작업형3 1번문제 질문
선생님 안녕하세요! 기출6회 작업형3에서 질문드립니다.선생님 강의 풀이에서는 ob = df['항암약'].value_counts().sort_index().to_list() ex = [0.1 * 20, 0.05 * 20, 0.15 * 20, 0.7 * 20]from scipy import stats stats.chisquare(ob, ex)이렇게 사용하셨을때 정상적으로 답안이 제출되더라고요. ob값을 제일 쉽게 구하기 위해서, df['항암약'].value_counts().sort_index() 한 뒤,나온 수를 ob값에 넣어두고 풀면 위와 같은 오류가 나오는데 어떻게 풀 수 있을까요? ㅜㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
넘파이 std,var 와 판다스 var(), std() 문의
강의에 따르면 아래와 같이case1은 서로 같고, case2도 서로 같아야 하는데 다르게 나옵니다. 뭐가 문제일까요..?df를 np.array로 받아서 판다스로 std를 구하는데 변화가 있는건가요..? a = [1,3,5,7,8,9,10,14]df = np.array(a)case1: df.std() = np.std(df,ddof=1)case2: df.std(ddof=0) = np.std(df) df.std() #3.8548np.std(df,ddof=1) #4.1209df.std(ddof=0) #3.8548np.std(df) #3.8548
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 분리할때 stratify=y 옵션을 적용하는 방법과 효과 등에 대해
분류 문제에서 학습 데이터와 검증 데이터를 분리할 때 stratify=y 옵션을 사용하는 것을 강조하는 글을 본 적이 있습니다.반드시 사용하는 것이 좋은가요?특히 실기시험에서 효용성이 있는지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 분리할때 stratify=y 옵션
데이터 분리할때 stratify=y 옵션을 강조하는 글을 본적 있습니다. 이렇게 설정하여야 하는 이유가 있나요?빅분기 실기 시험에서 어떤 효용이 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 풀이 시에 데이터 전처리
모의고사2 와 같은 작업형2 문항을 풀이할 때시험 문제에서 특별히 데이터 전처리에 대한 언급이 없다면데이터 전처리를 하지 않고 바로 데이터 분리와 학습으로 넘어가도 되는 건가요...?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3유형 logit 이랑 ols
3유형 logit 이랑 ols 가 서로 다른건가요?로지스틱, 다중 회귀분석때동일하게 데이터를 뽑아서요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2(구버전)의 X_train, X_test 주구매상품의 unique가 다른 문제
해당 데이터에서 X_train '주구매상품'의 unique는 42,X_test '주구매상품'의 unique는 41인데이렇게 unique가 다른 상태에서 데이터를 합치는 등의별도 처리 없이 바로 LabelEncoder를 써도 되는 걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
영상이랑 링크에 나오는 내용이 달라요 ㅠㅠ
영상에서 선생님이 보여주시는 예시와 링크를 타고 들어갔을때 완전히 달라서 학습하기가 너무 혼란스럽습니다..특히 작업형 2번 같은 경우에는 완전히 다른데 어떻게 해야하나요,,
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
선형회귀(ols) 사용 SSR/SST 구하기
안녕하세요, 선생님 3유형 선형회귀 문제에서 model 출력시 결정계수값은 나오는데, 혹시 결정계수를 구성하는 값인 SSR/SST, SSE의 값은 별도 model에서 호출할수 있는 값인지 문의드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3회 기출유형(작업형)
안녕하세요. 작업형2문제 시험준비를 범주형데이터는 모두 label로 인코딩하고, 모형은 randomforest를 활용하려고 합니다.강의해주신 내용은 수치형을 분리해서 작업을 하는데 만약, 제가 한 것처럼 하면 문제는 없는지 궁금합니다.(그냥 무턱대고 외워서 진행한거라서... 오류가 안난다 뿐인지, 코딩이 맞는지 확신이 없습니다.) 추가적으로, 원래는 index 이름이 없는 첫번째 열을 삭제 하고싶엇는데... 삭제를 못하겠더라구요 이럴경우 함수를 어떻게 적어야하는지 궁금합니다.import pandas as pdtrain = pd.read_csv("train.csv")test = pd.read_csv("test.csv") # print(train.shape, test.shape) # (1490, 10) (497, 9)# print(train.info(), test.info()) # object 4개# print(train.select_dtypes(include='object').columns) # 'Employment Type', 'GraduateOrNot', 'FrequentFlyer', 'EverTravelledAbroad'# print(test.select_dtypes(include='object').columns)# print(train.isnull().sum()) # 결측치x# print(test.isnull().sum()) # 결측치x # print(train['TravelInsurance'].value_counts()) # target 변수 값 확인from sklearn.preprocessing import LabelEncodercols=train.select_dtypes(include='object').columns# print(cols)for col in cols : le=LabelEncoder() train[col]=le.fit_transform(train[col]) test[col]=le.transform(test[col])from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val=train_test_split(train.drop('TravelInsurance',axis=1), train['TravelInsurance'], test_size=0.2, random_state=2023)# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) # (1192, 9) (298, 9) (1192,) (298,)from sklearn.ensemble import RandomForestClassifiermodel=RandomForestClassifier()model.fit(X_tr, y_tr)pred=model.predict_proba(X_val)# print(pred[:,1])from sklearn.metrics import roc_auc_scoreroc_auc_score(y_val, pred[:,1]) # 0.7817398927392739 검증용y_pred=model.predict_proba(test)submit=pd.DataFrame({ 'index' : test.index, 'y_pred': y_pred[:,1]})# print(submit)submit.to_csv('result.csv',index=False)print(pd.read_csv('result.csv'))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
lightgbm 관련 질문
안녕하세요 선생님!! 🙂 lightbgm을 쓰는 것도 추천해주신 글을 보고 이것도 적용해보았는데 자주 아래와 같은 워닝이 떠서 여쭤봅니다.우선 보여드리는 부분은 기출5 작업형2 문제입니다!# 평가지표 from sklearn.metrics import mean_squared_error import numpy as np def rmse(y_test, pred): return np.sqrt(mean_squared_error(y_test, pred)) # lightgbm import lightgbm as lgb model = lgb.LGBMRegressor(random_state=0, max_depth=3) model.fit(X_tr, y_tr) pred = model.predict(X_val) print(rmse(y_val, pred))그리고 다음은 워닝 코드 내용입니다. (아래보다 훨씬 길게 워닝이 뜰때도 있습니다..!)[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.000191 seconds.You can set force_row_wise=true to remove the overhead.And if memory is not enough, you can set force_col_wise=true.[LightGBM] [Info] Total Bins 384[LightGBM] [Info] Number of data points in the train set: 3195, number of used features: 8[LightGBM] [Info] Start training from score 12419.8469481119.6871943178526 워닝 아래로 출력은 잘 되긴 하나 워닝이 계속 떠서 왜그러는지 여쭤봅니다!!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 작업형 2 문의 사항
캐글 작업형 2 (T2-6. Bike-Regressor)파일까지 생성 후, 다운로드 후 submit을 누르면 아래와 같은메세지가 납니다. 이유 확인 부탁드립니다.캐글 작업형 (T 2-3 Adult census ~) 1) 라벨 인코딩 오류object 컬럼을 라벨 인코딩 진행 시 위와 같은 에러가 발생합니다. 인터넷을 찾아보니 문자열과 숫자가 혼합되어 있는지 확인하라고 하는데, Object 컬럼 ('workclass') 1개만 선택해서 해도 변환이 안되는데.. 확인 부탁드립니다.2) 원핫 인코딩 시 train, test 열 차이원핫 인코딩을 진행 후, 열 갯수가 1개 차이가 났다가,민맥스 스케일링 후 다시 52개로 맞춰졌습니다.test로 학습 후 결과 제출 시에는 52, 51 개로 결국 1개 차이가 나서 오류가 나는데요.. 이유를 알 수 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
시험환경에서 xgboost 불러올 때 에러 발생
> /usr/local/lib/python3.9/dist-packages/xgboost/compat.py:31: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead. from pandas import MultiIndex, Int64Index https://dataq.goorm.io/exam/3/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-%EC%B2%B4%ED%97%98/quiz/4 시험환경에서 xgboost 를 불러올 때 위와 같은 에러가 납니다.찾아보니 'int64index'를 사용하고 있어서 발생하는 문제고, pandas와 xgboost를 업데이트 하거나 dtype을 직접 int로 변경해서 해결하도록 안내해주네요. xgboost는 제외하고 대비해도 괜찮을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩 관련
원핫인코딩 관련하여 질문이 있습니다. cols = [ object형 컬럼들, , , ] 으로 지정한 후 어떤 문제에서는 pd.get_dummies(df[cols]) 로 되어있는 곳도 있고,pd.get_dummies(df, columns=cols)로 되어있는 곳도 있는데, 둘다 마찬가지 결과가 나오는걸까요? 추가적으로, 다중분류 부분에서 보면 숫자로되어 있는 object형 변수는 자동으로 원핫인코딩이 되지 않으므로 pd.get_dummies(df[0])으로 코딩해야 한다고 하셨는데요, 그렇다면 위의 예시에서 df, columns=cols로 했을 경우에는 숫자로 되어있는 변수는 dtype이 object형이어도 자동으로 원핫인코딩이 되지않는걸까요..?