묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의고사 풀어보기1 마지막 문제 질문입니다!
해당 문제에서 선생님은 print(df.sort_values(ascending=False).index[0])으로 바로 인덱스 첫번째 값을 뽑으셨습니다.제가 풀어 볼때는 iloc를 활용해서 풀어보고자 아래와 같은 코드를 사용했는데 오류가 났습니다. 이유가 뭘까요? ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글에 있는 타이타닉 생존률 문제
https://www.kaggle.com/code/agileteam/t2-1-titanic-simple-baseline/notebook 캐글에 있는 타이타닉 생존률 문제입니다.2-3. 범주형 라벨인코딩에서 이런 오류가 나네요..ValueError: y contains previously unseen labels: 'SOTON/O.Q. 3101311'아래는 제가 작성한 코딩입니다.. ㅠㅠ# 2. 전처리 # 2-1. drop X_train = X_train.drop(columns = ['PassengerId', 'Name']) X_test = X_test.drop(columns = ['Name']) X_test_id = X_test.pop('PassengerId') y_train = y_train.drop(columns = ['PassengerId']) # 2-2. 결측치처리 # 캐빈 drop, 에이지 mean X_train = X_train.drop(columns = ['Cabin']) X_test = X_test.drop(columns = ['Cabin']) X_train['Age'] = X_train['Age'].fillna(X_train['Age'].mean()) X_test['Age'] = X_test['Age'].fillna(X_test['Age'].mean()) # 2-3. 범주형 라벨인코딩 from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() cols = ['Sex', 'Ticket', 'Embarked'] for col in cols : X_train[col] = encoder.fit_transform(X_train[col]) X_test[col] = encoder.transform(X_test[col]) # 분리 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size = 0.2, random_state = 2022) # 학습 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_tr, y_tr) pred = model.predict(X_val)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
4-2 type 1 4 번 문제
형별로 합하기 위해 df = df.T 를 쓰셨는데 print(sum(df.sum(axis=1) > 3000)) 를 쓰면 안 될까요 ?해보니 답은 동일 했습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 합치고 분리하는 경우 질문입니다!
영상에는 원핫 인코딩만 데이터 수가 안맞는 경우 데이터를 합치고 분리하는 실습을 보여주셨습니다.라벨 인코딩의 경우도 데이터 수가 안맞는 경우 합쳤다가 라벨 인코딩 진행후 분리시키면 되는건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
test에서 결측치가 발생할 경우
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요질문 : test에서 결측치가 발생할 경우엔 행을 삭제 못하나요? test 파일의 경우 저희가 시험장에서 볼 수 있는 것은 X_test 파일이고, y_test는 저희가 볼 수 없는 파일이잖아요. 그럼 X_test의 행을 삭제하면 오류가 뜨나요? 예를 들어 X_test에서 행이 50개인데 행을 3개 삭제하면, y_test는 50개이니까 평가가 불가능하지 않을까 싶습니다. 즉, test에는 결측치가 발생하면 X_test.fillna()를 통해 대체를 할 수 있지, X_test.dropna()처럼 행을 삭제할 수 없나요? 강의 때 올려주신 예시문제나 기출문제 해설을 봐도 작업형2에는 모두 결측치가 없어서, 이렇게 질문으로 올립니다. 시험이 다가오니 사소해 보이는 질문도 확인을 받고 싶네요 ㅠㅠ 항상 감사합니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출 6회 작업형2 질문입니다
모델들을 예측하고(랜덤 포레스트, 라이트bgm 등..) 둘 중에 랜덤 포레스트로 하겠다 라고 결정하면 라이트bgm 부분을 주석터리하면 자동적으로 pred가 랜덤포레스트 값으로 들어가는걸까요..?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2에서 object 처리에 관련하여
작업형 2를 공부하던 중 분류, 회귀 상관없이 어떤 문제에선 object를 아예 drop 한 채로 문제를 풀거나, 어떤 문제에선 object를 원핫인코딩을 하던데 이런 기준이 따로 있나요,,,? 아예 drop 하지 않고 원핫인코딩 하는 것은 안 되나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 하드코딩 관련
체험환경 링크에 들어가보면, 답안을 직접 타이핑해서 제출하도록 되어있습니다. Q1. 제1유형(풀이용)에서 하드코딩을 해도, 코드를 제출하는 것이 아니니, 감점은 따로 없을까요? Q2. 구버전에서는 제1유형도 코드를 제출하는 것으로 되어있던데, 이번에 바뀐건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2회 작업형 2번 pred 질문 입니다.
from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier(random_state = 2023) model.fit(X_tr, y_tr) pred = model.predict_proba(X_val) roc_auc_score(y_val, pred[:,1])안녕하세요? 마지막 pred 에서 슬라이싱할때.. 조금 헷갈리는데요..! pred[:,1]로 하는 이유가 예측(시간에 맞춰 도착하지 않을 확률) 때문인거 같은데..!혹시 pred[:,0]을 할지 pred[:,1] 로 할지는 어떤 것을 보고 정할 수 있는지 여쭈어볼 수 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
람다 관련 질문이요 ㅠ
데이터마님에 전처리100문제 훑어보고 있어요람다식이 있어서 시험환경 문제1의 데이터로 응용해서 해보려니 안되네요 ㅠㅠ그냥 딕셔너리 형태를 넣으면 되구요...help에서는 딕셔너리 아니면 시리즈를 넣으라고 되어있는데 그래서 안되는건지... a.cyl = a.cyl.astype('object')dic = { '4' : 'N', '6' : 'a', '8' : 'b'}a['newcyl'] =a.cyl.map(dic)print(a.cyl) a['newcyl'] =a.cyl.map(lambda x: dic[x]) > Makefile:6: recipe for target 'py3_run' failedmake: *** [py3_run] Error 1Traceback (most recent call last): File "/goorm/Main.out", line 18, in <module> a['newcyl'] =a.cyl.map(lambda x: dic[x]) File "/usr/local/lib/python3.9/dist-packages/pandas/core/series.py", line 4237, in map new_values = self._map_values(arg, na_action=na_action) File "/usr/local/lib/python3.9/dist-packages/pandas/core/base.py", line 880, in mapvalues new_values = map_f(values, mapper) File "pandas/_libs/lib.pyx", line 2870, in pandas._libs.lib.map_infer File "/goorm/Main.out", line 18, in <lambda> a['newcyl'] =a.cyl.map(lambda x: dic[x])KeyError: 6 help map(arg, na_action=None) -> 'Series' method of pandas.core.series.Series instance Map values of Series according to an input mapping or function. Used for substituting each value in a Series with another value, that may be derived from a function, a ``dict`` or a :class:`Series`. Parameters ---------- arg : function, collections.abc.Mapping subclass or Series Mapping correspondence. na_action : {None, 'ignore'}, default None If 'ignore', propagate NaN values, without passing them to the mapping correspondence.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2(신버전) 풀이 질문입니다.
train_test_split한 다음에 랜덤포레스트 모델학습에서 아래와 같이 코드 설명해주셨는데요.model.fit(X_tr[cols], y_tr) pred = model.predict_proba(X_val[cols])train_test_split에서 이미 train[cols]로 train 범위가 한정되었는데 모델학습에서 X_tr과 X_val를 [cols]로 또 한정해줘야 할까요?저는 아래와 같이 모델학습에서 [cols]를 빼고 코드를 작성했는데 오류는 나지 않지만 강의와 결과값이 조금 다릅니다.from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train[cols], target, test_size=0.2, random_state=0) # 모델학습 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=2023) model.fit(X_tr, y_tr) pred = model.predict_proba(X_val)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
실행결과 복사 질문
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 다름이 아니라, 체험환경에 실행결과 창에서는 Ctrl+C가 안 되어서 마우스 오른쪽-복사로 진행했었는데, 영상을 시청하다, 실행결과 창에서 단축키를 사용해서 붙여넣기를 하시더라고요..! 혹시 수업 내용과 관련된 답은 아니지만, 알려주실 수 있을까요? 시간 단축에 도움을 받고 싶습니다 ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형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