안녕하세요 강사님! 좋은 강의 정말 잘 듣고 있습니다. 지난 질문에도 친절하게 답변 달아주셔서 감사의 말씀 드립니다. 이번 메타프로그밍 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같은 함수를 써서 원래 데이터를 일부 삭제 시켰다가 실수가 생겨 다시 복구해야하는 상황에서도 어떻게 해야하는지 궁금합니다.
시험 회차가 증가함에 따라 제출 방법이 조금씩 달라진 것 같은데요. 유형1, 유형3의 경우, 코딩화면 제출버튼은 없어지고 별도 답안제출 화면에 정답만 입력하는게 맞는지요? 그렇다면 코딩 중간에 있는 print()문을 주석(삭제) 처리할 필요도 없는건지요? 유형2의 경우도 코딩 중간에 있는 print()문을 주석(삭제) 처리 필요 없는지요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요. 섹션10 예시문제 작업형 1번 질문있습니다.캐글에서 하던대로 하다보니 식이 강의에서 알려주시는 것에 비해 짧아졌는데요. import pandas as pddf = pd.read _csv("data/mtcars.csv") from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()df['qsec'] = scaler.fit _transform(df[['qsec']])#print(df['qsec']) cond = df['qsec'] >0.5print(sum(cond)) 이렇게 해도 9가 나오는데, 이렇게 풀어도 괜찮나요?좋은 강의 항상 감사드립니다.