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']
범주형 변수만 선택하여 아래와 같이 원핫인코딩했는데 타입이 모두 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)
안녕하세요 6회 작업형 3에 질문이생겨서 문의드립니다. 카이제곱 적합성검정의 경우 모든 기대빈도가 5이상일때 사용한다고 알고있었는데요 배포해주신 문제의 데이터는 보면 무증상 70% 그외 30%로 전체데이터수를 곱해 빈도로 변환해주면 [2.0, 1.0, 3.0, 14.0]입니다. 문제가 [감기약의 예상 부작용 비율과 항암약의 부작용 관찰값이 통계적으로 유의미하게 차이가 있는지 확인하려 한다. 카이 제곱 검정을 사용하여 검정 통계량을 구하시오.] 이경우 기대값에서 빈도가 5이하인 아픔: 10% 조금 아픔 5% 속 쓰림 15% 의 범주를 합쳐주고 검정을 해야하는것 아닌가요? 그냥 검정을해도 값이 나오긴하지만 이 값이 신뢰할만한 값이라고 할수있는건가요?
100만 이하의 약수가 존재하는지 확인할 때 반복문을 왜 101만까지 돌리는 건 가요? 저는 입력 받은 수까지 확인을 했었거든요... 이유가 궁금합니다! 백만보다 큰지 안 큰지 확인하기 위함인 건 알겠는데 수학적으로 이해가 좀 안 가서 질문을 드립니다. 추가적으로 알고리즘을 풀다보면 수학적인 지식이 좀 많이 부족하다고 느끼는데 어떻게 채우는 게 좋을지도 궁금합니다.. 6개월 정도 회사 다니면서 코테에만 집중해서 이직하는 게 현재 목표입니다. 제가 작성한 답안입니다. 답 도출까지는 못했습니다.
체험환경 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 LabelEncoder for 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_split x_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 RandomForestClassifier rfc = 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_score print(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) 요청사항 사용자로부터 주민등록번호를 입력받아, 성별을 '남성' 또는 '여성'으로 출력하세요. 주민등록번호 뒷자리 맨 앞자리는 성별을 나타냄 예) 800001-1231231 주민번호를 입력받으면 1을 출력하면 됨 1이면 남성, 2이면 여성을 출력하면 됨 (2) 입력코드 data = input() if data[7] == '1': print ("남성") else: print ("여성") (3) 코드결과 800001-1231231 남성 입력코드에서 data[7]이면 '-'인데, 어떻게 코드 결과가 원활하게 나올 수 있는 걸까요? 요청사항을 충족하려면, 아래와 같은 코드를 입력해야 하는 거 아닌가요?? (4) 수정코드 data1 = input() if data1.split("-")[1][0] == 1: print ("남성") else: print ("여성") 예제로 주신 코드가 오류 없이 작동하는 점이 궁금해 질문드립니다.
기출문제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])) #오류나는 이유???
선생님 코드는 이렇게 했을 때 정답 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를 하고 안하고 답 차이도 나는데, 어느게 좀 더 안전한 방식일까요? ㅜㅜ
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 일원분산 분석에서 독립변수에 문자열 처리와 상관없이 동일한 결과값을 얻었고 이에 ols가 회귀분석에서 말씀해주셨듯이 문자형 변수를 알아서 변환해주는 것으로 이해했습니다. 이원분산분석에서는 문자열 처리에 따라 결과값의 차이가 났는데 그 이유로 문자열로 되어있는 종자 변수는 ols가 알아서 변환을 해주지만 여기서는 특이하게 수치형 자료로 나와있는 비료 변수가 사실은 범주형이기 때문에 ols가 알아서 변환을 하지 못해 문자열 처리를 꼭 처리를 해줘야 하는것으로 이해하면 정확할까요? 거기에 분산분석이 연속형 변수~범주형 변수이기에 분산 분석의 경우 의도적으로 다 C() 처리를 해주는게 깔끔하다고 수업중에 말씀하신것으로 이해하면 될까요?? 감사합니다.
모델 학습 및 예측에서 roc_auc_score 가 1이 나와버려서 뭔가 이상하게 학습을 시킨 것 같은데 괜찮은건가요? 그리고 X_test 를 이용해서 predict 할 때는 타겟값인 TravelInsurance 가 없어야하는 것 아닌가요? 왜 오류가 나는지 모르겠습니다... 아래는 어떤 식으로 전처리되었는지 X_tr과 X_test 입니다!
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 강의 내용 6분 40초와 관련이 있습니다. 제가 2번 문제를 풀다가 Gender 부분을 C(Gender) 처리를 하지 않고 풀었는데 강의를 다시 보다 보니 문자열 처리를 해주는 것을 알았습니다. 근데 문자열 처리 유무와 상관없이 값이 전부 동일한 것을 보고 이렇게 질문을 드립니다. 회귀분석에서 ols가 범주형 변수가 있어도 C() 처리를 안해줘도 된다고 하셨는데 로지스틱 회귀 분석에서도 동일한지 여쭤보고 싶습니다. 왜 결과값이 문자열 처리에 상관없이 동일하게 나오는 건가요? 감사합니다.
안녕하세요, 학습 중 질문이 있어 글 작성합니다. 코드를 정확하게 이해하고자 자세하게 여쭤보겠습니다. 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의 의미를 알고싶습니다. 답변주심에 미리감사드립니다!
안녕하세요. 섹션5 [작업형2] 모의문제 및 캐글 - 2번쨰 강의 관련 질문입니다. 검증데이터 분리 시 아래와 같이 코드를 적었는데, from sklearn.model_selection import train_test_split X_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'만 있어야 하니까 위 코드가 나온게 맞는것인지요? 감사합니다.