학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 강의에서는 from scipy.stats import chi2_contingency print(chi2_contingency(교차테이블명)) 이렇게 하셨는데 from scipy import stats print(stats.chi2_contingency(교차테이블명)) 이렇게 적어도 상관없나요?
안녕하세요 강사님! 좋은 강의 정말 잘 듣고 있습니다. 지난 질문에도 친절하게 답변 달아주셔서 감사의 말씀 드립니다. 이번 메타프로그밍 3.1절을 들으면서 잘 이해가 안되는 부분이 있어서 이렇게 질문글을 작성합니다. 질문은 다음과 같습니다. Q1. attach_wrapper가 return 하는 func는 누구인가? 최종적으로 그 func는 누가 받는가? def attach_wrapper(obj, func=None): if func is None: return partial(attach_wrapper, obj) setattr(obj, func.__name__, func) return func 위의 def attach_wrapper 가 @attach_wrapper(wrapper) 형태로 데코레이트하면, func=None 일 때 partial() 을 통해서 def attach_wrapper 함수 객체 본인을 return 해서 첫번째 인자인 obj 를 wrapper 로 고정시키는 것까지 이해를 했습니다. func=None 이 아니면 setattr() 을 통해, obj 가 갖고 있는 어트리뷰트 func 의 이름을 인자로 받은 func 로 값을 셋팅하는 것까지도 이해를 했습니다. 그런데 최종적으로 return 되는 게 func 라는 것이 잘 이해가 되지 않습니다. return 되는 func 를 누가 받는걸까요? func 를 유추하기까지 저의 사고 흐름은 아래와 같았습니다. @attach_wrapper(wrapper) def set_level(newlevel): nonlocal level level = newlevel def set_level 이 데코레이트 되는 내부 사정은 set_level = attach_wrapper(wrapper)(set_level) 이 될텐데요. set_level = attach_wrapper(wrapper)(set_level) 에서 attach_wrapper(wrapper) 는 partial() 을 통해 def attach_wrapper 본체가 return 되었기 때문에, 데코레이트 되는 내부 사정을 달리 표현하면 set_level = attach_wrapper(obj=wrapper, func=set_level) 라고 이해를 했습니다. 그러면.. attach_wrapper(obj=wrapper, func=set_level) 가 return 하는 게 func 인데, set_level = func 이니까.. set_level = set_level 이 되는건가요? 추가 질문 def attach_wrapper 함수에서 return func 를 주석처리 하고 실행을 해도 결과가 똑같이 나오는데 이유를 잘 모르겠습니다.. 어째서 return func 가 아무런 효용이 없었던 걸까요..? 혹시 제가 잘 못 이해한 부분이 있다면 어김없이 피드백 부탁드리겠습니다! (아래에는 출력 결과물을 첨부하였습니다.) """ # return func 주석 처리 후 결과 DEBUG:__main__:add DEBUG:__main__:Add called WARNING:__main__:Add called DEBUG:__main__:countdown CRITICAL:__main__:countdown DEBUG:__main__:countdown2 CRITICAL:__main__:countdown2 5 5 5 countdown 0.009128093719482422 countdown 0.007673978805541992 countdown2 0.0056438446044921875 countdown2 0.005079030990600586 --- # 원본 코드 실행 결과 DEBUG:__main__:add DEBUG:__main__:Add called WARNING:__main__:Add called DEBUG:__main__:countdown CRITICAL:__main__:countdown DEBUG:__main__:countdown2 CRITICAL:__main__:countdown2 5 5 5 countdown 0.007693052291870117 countdown 0.006663084030151367 countdown2 0.005110979080200195 countdown2 0.0052149295806884766 """
랜덤포레스트로 모델을 학습하고 train_test_split으로 데이터를 나누지 않은 이유는 교차검증이 그 역할을 대신해서 그런건가요?? 교차검증을 스스로 생각해내기는 어려울거 같은데 그러면 평소처럼 train_test_split으로 데이터를 나누고 잘 모르는 macro f1_score 대신에 다른 평가지표를 사용해서 제출해도 되는걸까요?? 선생님 항상 친절한 답변 감사합니다 🥹🥹
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 import pandas as pd train = pd.read_csv("data/customer_train.csv") test = pd.read_csv("data/customer_test.csv") pd.set_option('display.max_columns',None) train['환불금액'] = train['환불금액'].fillna(0) test['환불금액'] = test['환불금액'].fillna(0) cols = train.select_dtypes(exclude='object').columns target = train.pop('성별') from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier() rf.fit(train[cols], target) pred = rf.predict_proba(test[cols]) print(pred) 오류 Makefile:6: recipe for target 'py3_run' failed make: *** [py3_run] Error 1 Traceback (most recent call last): File "/goorm/Main.out", line 29, in <module> model.fit(train[cols], target) File "/usr/local/lib/python3.9/dist-packages/pandas/core/frame.py", line 3511, in getitem indexer = self.columns._get_indexer_strict(key, "columns")[1] File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexes/base.py", line 5782, in get indexer_strict self._raise_if_missing(keyarr, indexer, axis_name) File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexes/base.py", line 5845, in raise if_missing raise KeyError(f"{not_found} not in index") KeyError: "['성별'] not in index" 도와주세요 왜 select_dtypes로 쓰니까 안되나요
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 이렇게 작성해도 답은 같게 나오는데 이렇게 풀어도 될까요? import pandas as pd pd.read_csv('members.csv') df=pd.read_csv('members.csv') cut = df.select_dtypes(include='object').columns #exclude도 있다 df= df.drop(cut,axis=1) df = df.fillna(0) df.head() df = df.sum(axis = 1) sum(df > 3000)
df['date_added']= pd.to _datetime(df['date_added']) a=df['date_added']=='2018-01' b=df['country']=='United Kingdom' df[a&b] 이렇게 하면 3이 나오는데 이유가 무엇일까요? 2018-01로 필터는 되는거같은데 차이점이 있는지 궁금합니다. dt.year/month 각각 나눠줘야만 정답출력되는건지도요
선생님 어떤 문제풀이에서는 데이터에 수치, 범주형 데이터가 섞여 있어도 분리하지 않고 어떤 문제에서는 따로 분리해서 전처리 하시는데 혹시 기준이 있을까요? 그리고 만약에 범주형 데이터를 레이블인코딩으로 cols = train.select _dtypes(include = 'object') ,, for col in cols 이런식으로 셀렉트 디타입으로 반복문을 사용할 거라면 굳이 수치형, 범주형을 나눌 필요가 없는건가요??
5.1 업종 테마주 수집.ipynb 진행 과정에서 pd.concat(result.tolist()) 에서 InvalidIndexError: Reindexing only valid with uniquely valued Index objects 가 발생하는데, inplace=True를 추가 또는 다양한 방법으로 해결하려 해도 해결이 되지 않습니다. 이전 다른 분들도 같은 오류가 나서 문의를 하였는데 해결이 되었나요? 참고로, 테스트 하는 과정에서 get_item_info 함수 안의 finance_info = tables[3].iloc[:, [0, -1]] finance_info.columns = [0, 1] item_info.append(finance_info) 문장을 주석처리 하면 pd.concat(result.tolist()) 부분이 정상적으로 처리가 되고 있습니다. 원인과 해결 방법을 알려 주시면 감사하겠습니다.
y= y_train['charges'] # X_train.info() object : sex, smoker,region # X_train.isnull().sum() --> 결측값 없음 X_train.head(2) drop_col = ['id'] train_drop = X_train.drop(columns=drop_col) test_drop = X_test.drop(columns=drop_col) #원핫인코딩 X_train_dummies = pd.get_dummies(train_drop) X_test_dummies = pd.get_dummies(test_drop) #train_test_split from sklearn.model_selection import train_test_split x_tr,x_val,y_tr,y_val = train_test_split(X_train_dummies,y,test_size=0.33, random_state = 42) #랜포 from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() model.fit(x_tr,y_tr) pred = model.predict(x_val) #평가 from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error import numpy as np print("rmse", np.sqrt(mean_squared_error(y_val,pred))) print("r2_score",r2_score(y_val,pred)) print("mae", mean_absolute_error(y_val,pred)) #저장 answer = model.predict(X_test_dummies) result = pd.DataFrame({'id': X_test.id, 'charges' : answer}) result.to_csv('00000.csv', index = False) output = pd.read_csv("00000.csv") print(output.head(2)) 선생님 안녕하세요. 지금 코드 틀 외워서 하나하나 문제 풀어보고 있습니다.. 작년에 회귀문제에서 된통 당한 이후로 꼼꼼히 보고 있는데 아직 확신이 서지 않습니다 ㅠㅠ 혹시 여기서 코드 오류가 있을까요..? 더불어 T2-5의 경우 결측치도 없고, object도 별로 없어서 get_dummies로 해결했는데 T2-4처럼 결측치도 많은데다가 object도 많이 있으면 어떻게 해야할지도 잘 모르겠습니다..
현재 독립표본검정 - 단일표본검정, 대응표본검정까지 들었습니다. 문제에 '정규분포에 따른다'는 말이 없으면 shapiro 검정을 통해 정규분포를 따르는지, 아닌지부터 따져야 하는데 현재 강의의 예는 정규분포를 따르지 않는 것만 있는 것 같아서 확인 차 여쭙습니다. shapiro 검정 결과 정규분포를 따를 때에는 문제에 정규분포를 따른다고 할 때와 같이 wilcoxon이 아닌 ttest로 검정하는것 맞을까요 ?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요~ 작업형3에서 오즈비에 대해 질문드립니다. 한 단위가 아닌, 두 단위로 오즈비를 증가시킬 때는 exp( exp ( -0.3539) ) 로 하면될까요? 여기선 하나의 독립변수에 대해서만 오즈비를 구하라고 되어있는데, 만약 2 개의 독립변수에 대한 오즈비를 구하라고하면 어떻게 구하나요?? 이건 이론적으로 가능한건지 잘모르겠어서 질문드립니다.. 다시 말하면 오즈비는 하나의 독립변수에 대해서만 적용이 가능한건가요? 아니면 여러개의 독립변수를 고려하여 구할 수 있는건가요?
선생님! 2번 문제에서 결측치를 중앙값으로 바꾸기 전의 표편과 바꾼 후의 표편 차를 구하라는 문제에서 만약 결측치를 바꾸기 전 표편을 구하지 못한채로 결측치 처리를 해버렸다면 시험상황에서는 다시 원 데이터로 어떻게 돌아갈 수 있나요,,? (시험환경에서는 코랩처럼 '이전셀 실행' 기능을 쓸 수가 없는데)drop같은 함수를 써서 원래 데이터를 일부 삭제 시켰다가 실수가 생겨 다시 복구해야하는 상황에서도 어떻게 해야하는지 궁금합니다.