묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형3 로지스틱 회귀
https://www.kaggle.com/code/agileteam/t3-2-example-py/캐글에 올려주신 문제를 보고 있는데 위랑 아래 각각 결과가 다른데 이유를 모르겠어서 문의남깁니다.로지스틱 회귀 문제의 계수문제는 logit으로 푸는게 맞는걸까요?import pandas as pd from sklearn.linear_model import LogisticRegression # 데이터 로드 df = pd.read_csv('/kaggle/input/bigdatacertificationkr/Titanic.csv') # 데이터 전처리 df['Gender'] = df['Gender'].map({'male': 0, 'female': 1}) # 로지스틱 회귀 모형 생성 및 학습 X = df[['Pclass', 'Gender', 'SibSp', 'Parch']] y = df['Survived'] model = LogisticRegression() model.fit(X, y) # parch 변수의 계수값 출력 print("Parch 변수의 계수값:", model.coef_[0][3])import pandas as pd from statsmodels.formula.api import logit df = pd.read_csv("/kaggle/input/bigdatacertificationkr/Titanic.csv") formula = "Survived ~ C(Pclass) + Gender + SibSp + Parch" model = logit(formula, data=df).fit() model.params['Parch']
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩 문의
범주형 변수만 선택하여 아래와 같이 원핫인코딩했는데 타입이 모두 bool 바꼈습니다. 왜 int로 안바뀌는지궁금합니다. 또 bool 상태로 계속 진행해도 괜찮은가요? c_cols = ['Gender', 'Ever_Married', 'Graduated', 'Profession', 'Spending_Score', 'Var_1'] train = pd.get_dummies(train,c_cols) test = pd.get_dummies(test,c_cols)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
카이제곱검정 기대빈도
안녕하세요 6회 작업형 3에 질문이생겨서 문의드립니다. 카이제곱 적합성검정의 경우 모든 기대빈도가 5이상일때 사용한다고 알고있었는데요배포해주신 문제의 데이터는 보면 무증상 70% 그외 30%로 전체데이터수를 곱해 빈도로 변환해주면 [2.0, 1.0, 3.0, 14.0]입니다.문제가 [감기약의 예상 부작용 비율과 항암약의 부작용 관찰값이 통계적으로 유의미하게 차이가 있는지 확인하려 한다. 카이 제곱 검정을 사용하여 검정 통계량을 구하시오.] 이경우 기대값에서 빈도가 5이하인 아픔: 10% 조금 아픔 5% 속 쓰림 15% 의 범주를 합쳐주고 검정을 해야하는것 아닌가요?그냥 검정을해도 값이 나오긴하지만 이 값이 신뢰할만한 값이라고 할수있는건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
6회 기출 유형 작업형2
안녕하세요, 6회 기출 유형 작업형2에서오브젝트형은 제외하고 분석하니f1_score값이 0.96이 나왔고, 선생님은 get_dummies 하니 0.9 이상으로 높은점수가 나오더라구요Q1) 오브젝트형 제외해서 높은점수 나오면 제외해도 될까요 ? Q2) 제외를 안하고 모델에 포함시킨다면 get_dummies 말고 LabelEncoder()를 사용해도 될까요 ?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
roc_auc에서 DataConversionWarning 발생
체험환경 2유형 학습중에 DataConversionWarning가 발생해서 문의드립니다. 아래와 같이 코드 작성 후에 roc_auc로 성능평가하는 과정에서 워닝이 발생했는데 이유가 무엇인가요?? # print(train.shape, test.shape) # (3500, 11) (2482, 10)# print(train.isnull().sum())# print(test.isnull().sum())train = train.fillna({'환불금액' : train['환불금액'].median()})test = test.fillna({'환불금액' : test['환불금액'].median()})# print(train.isnull().sum().sum())# print(test.isnull().sum().sum())# print(train.info())# print(test.info())# print(train.describe(include='O'))# print(test.describe(include='O'))# print(train.head())target = train.pop('성별')train = train.drop(['회원ID'], axis=1)test_id = test.pop('회원ID')# print(train.shape, test.shape) c_train = train.select_dtypes(exclude='number')n_train = train.select_dtypes(include='number')c_test = test.select_dtypes(exclude='number')n_test = test.select_dtypes(include='number')from sklearn.preprocessing import LabelEncoderfor i in c_train.columns: le = LabelEncoder() c_train[i] = le.fit_transform(c_train[[i]]) c_test[i] = le.transform(c_test[[i]])train = pd.concat([c_train, n_train], axis=1)test = pd.concat([c_test, n_test], axis=1)# print(train.head())# print(train.shape, test.shape)from sklearn.model_selection import train_test_splitx_tr, x_val, y_tr, y_val = train_test_split(train, target, random_state=2024, test_size=0.2, stratify=target)print(x_tr.shape, x_val.shape, y_tr.shape, y_val.shape)from sklearn.ensemble import RandomForestClassifierrfc = RandomForestClassifier(random_state=2024)rfc.fit(x_tr, y_tr)pred1 = rfc.predict_proba(x_val)print(pred1[:,1].shape)print(y_val.shape)from sklearn.metrics import roc_auc_scoreprint(roc_auc_score(y_val, pred1[:,1])) >>프로세스가 시작되었습니다.(입력값을 직접 입력해 주세요)> (2800, 9) (700, 9) (2800,) (700,)(700,)(700,)0.6341283030687979/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(*args, **kwargs)/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(*args, **kwargs)/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(*args, **kwargs)/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(*args, **kwargs)프로세스가 종료되었습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출4-작업형1 sum, len 관련 질문
기출문제4-작업형1 에서 데이터의 갯수를 구하는 부분에서 강의 답안에는 len 을 사용하셨는데아래와 같이 sum 사용시에는 에러가 나는 이유가 궁금합니다. print(len(df[cond1 & cond2 & cond3])) #6 데이터프레임의 행의 개수print(len(cond1 & cond2 & cond3)) #8807, true/false 경우 모두 포함print(sum(cond1 & cond2 & cond3)) #6 true만 계산print(sum(df[cond1 & cond2 & cond3])) #오류나는 이유???
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출문제 3회 작업형1-2 질문드립니다
선생님 코드는 이렇게 했을 때 정답 51이 나오는데요.df.isnull().sum() df = df.dropna() df.isnull().sum() df.iloc[:int(len(df)*0.6)] Q1 = df['f1'].quantile(0.25) print(Q1)제가 이렇게 했을 때는, 답이 55로 나오더라고요.import pandas as pd df = pd.read_csv("../input/big-data-analytics-certification/t1-data1.csv") df = df.dropna().reset_index(drop = True) df.iloc[:int(df.shape[0]*0.6)]['f1'].quantile(0.25) 행 개수를 뽑을때, df.shape[0]으로 할 수 있는 걸로 알고 있는데, 어디가 잘못된걸까요? ㅜdf.shape[0]으로 행개수 뽑고, 0.6곱한뒤 36.6->36으로 하라고 하셔서 round처리 안하고 int했는데 무슨 차이가 나는지 모르겠습니다... 그리고 reset_index를 하고 안하고 답 차이도 나는데, 어느게 좀 더 안전한 방식일까요? ㅜㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
분산분석
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요일원분산 분석에서 독립변수에 문자열 처리와 상관없이 동일한 결과값을 얻었고 이에 ols가 회귀분석에서 말씀해주셨듯이 문자형 변수를 알아서 변환해주는 것으로 이해했습니다. 이원분산분석에서는 문자열 처리에 따라 결과값의 차이가 났는데 그 이유로 문자열로 되어있는 종자 변수는 ols가 알아서 변환을 해주지만 여기서는 특이하게 수치형 자료로 나와있는 비료 변수가 사실은 범주형이기 때문에 ols가 알아서 변환을 하지 못해 문자열 처리를 꼭 처리를 해줘야 하는것으로 이해하면 정확할까요? 거기에 분산분석이 연속형 변수~범주형 변수이기에 분산 분석의 경우 의도적으로 다 C() 처리를 해주는게 깔끔하다고 수업중에 말씀하신것으로 이해하면 될까요?? 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의고사 3 - 작업형 2번 문제
모델 학습 및 예측에서 roc_auc_score 가 1이 나와버려서 뭔가 이상하게 학습을 시킨 것 같은데 괜찮은건가요? 그리고 X_test 를 이용해서 predict 할 때는 타겟값인 TravelInsurance 가 없어야하는 것 아닌가요? 왜 오류가 나는지 모르겠습니다... 아래는 어떤 식으로 전처리되었는지 X_tr과 X_test 입니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
문자열 처리에 관한 질문
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 강의 내용 6분 40초와 관련이 있습니다. 제가 2번 문제를 풀다가 Gender 부분을 C(Gender) 처리를 하지 않고 풀었는데 강의를 다시 보다 보니 문자열 처리를 해주는 것을 알았습니다. 근데 문자열 처리 유무와 상관없이 값이 전부 동일한 것을 보고 이렇게 질문을 드립니다. 회귀분석에서 ols가 범주형 변수가 있어도 C() 처리를 안해줘도 된다고 하셨는데 로지스틱 회귀 분석에서도 동일한지 여쭤보고 싶습니다. 왜 결과값이 문자열 처리에 상관없이 동일하게 나오는 건가요? 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 모의고사 1문제_drop
이 부분은 왜 해주나요??왜 해야하나요?pop이 의미하는 바가 뭔지 설명해주세요,
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 모의고사 1문제_삭제
cols을 train데이터 안에 object만 모은 데이테인데, test데이터는 cols로 모은적이 없는데,, 저렇게 cols 로 작성해서 삭제해도 되는 건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션 5 - 작업형2 모의문제 3 질문
안녕하세요, 학습 중 질문이 있어 글 작성합니다.코드를 정확하게 이해하고자 자세하게 여쭤보겠습니다.1. 강의 9:20 경 코드from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('output', axis=1), train['output'], test_size=0.15, random_state=2022) # 랜덤 포레스트 from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier() rf.fit(X_tr, y_tr) pred = rf.predict(X_val)rf.fit에는 당연히 X, y의 train 데이터가 들어가야 하겠는데.pred에 X_val이 들어가야 하는 이유는 무엇인가요? 2. 강의 22:10 경 코드pred_proba = xgb.predict_proba(test)pd.DataFrame({ 'id' : test_id, 'output' : pred_proba[:, 1]}).to_csv('0000.csv', index=False)roc_auc_score에서 pred가 아닌 pred_proba를 사용함은 이해를 했으며(output이 확률이니까),pred_proba[:, 1] 에서 :1의 의미를 알고싶습니다.답변주심에 미리감사드립니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2유형 질문있습니다!
일단 공부방법을 결과물 도출로 중심을 잡고 코딩하느라 전처리나 기본 인코딩, 스케일링만 진행해서 수행하는데 분류 문제시 정확도를 출력해보면 50퍼 근처로 출력되는데 감점요인이나 점수 획득에 문제가 있을까요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 작업형 1-6 결측치 제거
f1 컬럼의 결측치 제거 부분에서 df = df[~df['f1'].isnull()]을 사용하셨는데 이 부분이 잘 이해가 안됩니다 ㅜ 간단하게 설명해주실 수 있을까요?혹시 dropna를 사용해서 결측치만 제거를 할 수 있는 방법도 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
7회 기출유형(작업형2) 강의 질문
RMSE 구할 때,mean_squared_error(y_valid, pred, squared=False) squared=False 작성하면 출력되던데 시험장에서 이렇게 작성해도 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
5-2 type2
5-2 type2의 문제를 수치형 데이터만 선택해서 랜덤포레스트로 학습시키고 MSE로 평가했습니다.이렇게 코드를 작성해도 될까요?MSE 값이 좀 큰 것 같은데 이 방법이 아닌 다른 방법으로 풀어야 하는 걸까요? train['reviews_per_month'] = train['reviews_per_month'].fillna(0)test['reviews_per_month'] = test['reviews_per_month'].fillna(0)cols = ['id', 'host_id', 'latitude', 'longitude', 'minimum_nights', 'number_of_reviews', 'reviews_per_month', 'calculated_host_listings_count', 'availability_365']test_id = test['id']target = train.pop('price')train = train[cols]test = test[cols]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=0)import numpy as npfrom sklearn.metrics import mean_squared_errorfrom sklearn.ensemble import RandomForestRegressorrf = RandomForestRegressor()rf.fit(X_tr, y_tr)pred = rf.predict(X_val)print(mean_squared_error(y_val, pred))#60931.44110148261pred = rf.predict(test)submit = pd.DataFrame({ 'id' : test_id, 'price' : pred})submit.to_csv("submit.csv", index=False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
(섹션5) train_test_split 관련 질문
안녕하세요. 섹션5 [작업형2] 모의문제 및 캐글 - 2번쨰 강의 관련 질문입니다.검증데이터 분리 시 아래와 같이 코드를 적었는데, from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val = train_test_split(train.drop('price', axis=1), train['price'], test_size = 0.15, random_state=2022)윗 행에서 train.drop('price') 후, train['price']을 하는 이유가 뭔가요?'price'값이 타겟이기 떄문에X_tr 은 'price'가 없어야 하고,반면, X_val은 'price'만 있어야 하니까 위 코드가 나온게 맞는것인지요?감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
4회 기출 유형(작업형2)
안녕하세요!! 4회 기출 아래 사진처럼 풀어도 무방한지 궁금합니다. 추가로 xgboost 쓰고 싶었는데 오류가 뜨더라구요!!분류 1,2,3,4는 랜덤 포레스트만 사용해서 풀어야하나요??f1평가점수가 0.49인데 잘했는지 모르겠네요 ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
[캐글, 작업형3 로지스틱회귀] 이해가 되지 않습니다.!
[문제]import pandas as pdfrom statsmodels.formula.api import logitdf = pd.read_csv("/kaggle/input/bigdatacertificationkr/Titanic.csv")formula = "Survived ~ C(Pclass) + Gender + SibSp + Parch"model = logit(formula, data=df).fit()model.params 다름아니라 여기서 Pclass에 왜 앞에 C()를 하셨는지 이해가 안갑니다.! 참고로 데이터 info는 다음 아래와 같았습니다.Pclass : 'int'Gender : 'object'SibSp : 'int'Parch : 'int'