파이썬 머신러닝 완벽 가이드
파이썬 머신러닝 완벽 가이드
수강정보
(83개의 수강평)
1892명의 수강생
5개월 할부시
월 19,800원99,000원
지식공유자 : 권 철민
123회 수업 · 총 26시간 29분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급, 중급이상
blueberry 프로필

roc auc 최종 점수 도출 blueberry 1시간 전
안녕하세요 좋은 강의 정말 감사드립니다. 3. evalation  마지막 셀에 roc-auc까지 포함된 get_clf_eval 함수를 정의해주시고 코드가 끝나는데, 해당 셀의 마지막에 (다른 셀들 처럼) thresholds = [0.4 , 0.45 , 0.50 , 0.55 , 0.60] pred_proba = lr_clf.predict_proba(X_test) get_eval_by_threshold(y_test, pred_proba[:,1].reshape(-1,1), thresholds) 을 넣고 실행하면, Input contains NaN, infinity or a value too large for dtype('float64'). 이라는 에러 메시지가 뜹니다. 이것을 어떻게 해결할 수 있을까요?

0
정재욱 새벽하늘 프로필

GridSearchCV에 대한 질문 정재욱 새벽하늘 4시간 전
안녕하세요, GridSearchCV에 대해 질문 드립니다. 줄여서 Grid라 쓰겠습니다 뭔가 정리가 안되서요,,,ㅎ 1. Grid는 교차 검증과 최적 하이퍼 파라미터 튜닝을 한 번에 해주는데요, 교차 검증 시 Straitified K 폴드 방식으로 하는지 K 폴드 방식으로 하는지 어떻게 알 수 있나요? 혹시 어떻게 폴딩 했는지 볼 수 있는 속성이 있나요? ( ex. best_estimator_와 같은 함수같은..) 2. 책 p109에서 교차 검증시 학습/검증 레이블 데이터 분포를 확인 할 수 있었는데요, Grid에서도 동일하게 확인 할 수 있는 방법이 있나요? grid가 Stratified K Fold를 포함하고 있는지.. 헷갈립니다ㅠ

0
비전공자 프로필

UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-20: ordinal not in range(128) 비전공자 16시간 전
안녕하세요.  수업 잘 듣고 있습니다. 벌써 12월이네요ㅎㅎ GridSearchCV로 랜덤포레스트 하이퍼 파라미터 튜닝하는 과정에서 에러가 발생해서 문의드립니다. 책으로는 220페이지의 코드입니다. ------------------------------------------------------------------------------------------- from sklearn.model_selection import GridSearchCV params = {'n_estimators':[100],          'max_depth':[6,8,10,12],          'min_samples_leaf':[8,12,18],          'min_samples_split':[8,16,20]} rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) # n_jobs=-1 : 모든 CPU 코어를 이용해 학습 grid_cv = GridSearchCV(rf_clf, param_grid=params, cv=2, n_jobs=-1) grid_cv.fit(X_train, y_train) print('최적 하이퍼 파라미터:\n',grid_cv.best_params_) print('최고 예측 정확도:{0:.4f}'.format(grid_cv.best_score_)) ------------------------------------------------------------------------------------------ 이렇게 철민님과 동일한 코드를 입력했는데  UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-20: ordinal not in range(128) 이와 같은 에러가 생깁니다. 보니까 모델에 fit하는 과정에서 발생한 에러인데요 전체 에러 코드는 다음과 같습니다. --------------------------------------------------------------------------- UnicodeEncodeError Traceback (most recent call last) <ipython-input-15-c470a9641bfc> in <module> 8 rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) # n_jobs=-1 : 모든 CPU 코어를 이용해 학습 9 grid_cv = GridSearchCV(rf_clf, param_grid=params, cv=2, n_jobs=-1) ---> 10 grid_cv.fit(X_train, y_train) 11 12 print('최적 하이퍼 파라미터:\n',grid_cv.best_params_) C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 70 FutureWarning) 71 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)}) ---> 72 return f(**kwargs) 73 return inner_f 74 C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params) 693 verbose=self.verbose) 694 results = {} --> 695 with parallel: 696 all_candidate_params = [] 697 all_out = [] C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in __enter__(self) 728 def __enter__(self): 729 self._managed_backend = True --> 730 self._initialize_backend() 731 return self 732 C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in _initialize_backend(self) 739 try: 740 n_jobs = self._backend.configure(n_jobs=self.n_jobs, parallel=self, --> 741 **self._backend_args) 742 if self.timeout is not None and not self._backend.supports_timeout: 743 warnings.warn( C:\ProgramData\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in configure(self, n_jobs, parallel, prefer, require, idle_worker_timeout, **memmappingexecutor_args) 495 n_jobs, timeout=idle_worker_timeout, 496 env=self._prepare_worker_env(n_jobs=n_jobs), --> 497 context_id=parallel._id, **memmappingexecutor_args) 498 self.parallel = parallel 499 return n_jobs C:\ProgramData\Anaconda3\lib\site-packages\joblib\executor.py in get_memmapping_executor(n_jobs, **kwargs) 18 19 def get_memmapping_executor(n_jobs, **kwargs): ---> 20 return MemmappingExecutor.get_memmapping_executor(n_jobs, **kwargs) 21 22 C:\ProgramData\Anaconda3\lib\site-packages\joblib\executor.py in get_memmapping_executor(cls, n_jobs, timeout, initializer, initargs, env, temp_folder, context_id, **backend_args) 40 _executor_args = executor_args 41 ---> 42 manager = TemporaryResourcesManager(temp_folder) 43 44 # reducers access the temporary folder in which to store temporary C:\ProgramData\Anaconda3\lib\site-packages\joblib\_memmapping_reducer.py in __init__(self, temp_folder_root, context_id) 529 # exposes exposes too many low-level details. 530 context_id = uuid4().hex --> 531 self.set_current_context(context_id) 532 533 def set_current_context(self, context_id): C:\ProgramData\Anaconda3\lib\site-packages\joblib\_memmapping_reducer.py in set_current_context(self, context_id) 533 def set_current_context(self, context_id): 534 self._current_context_id = context_id --> 535 self.register_new_context(context_id) 536 537 def register_new_context(self, context_id): C:\ProgramData\Anaconda3\lib\site-packages\joblib\_memmapping_reducer.py in register_new_context(self, context_id) 558 new_folder_name, self._temp_folder_root 559 ) --> 560 self.register_folder_finalizer(new_folder_path, context_id) 561 self._cached_temp_folders[context_id] = new_folder_path 562 C:\ProgramData\Anaconda3\lib\site-packages\joblib\_memmapping_reducer.py in register_folder_finalizer(self, pool_subfolder, context_id) 588 # semaphores and pipes 589 pool_module_name = whichmodule(delete_folder, 'delete_folder') --> 590 resource_tracker.register(pool_subfolder, "folder") 591 592 def _cleanup(): C:\ProgramData\Anaconda3\lib\site-packages\joblib\externals\loky\backend\resource_tracker.py in register(self, name, rtype) 189 '''Register a named resource, and increment its refcount.''' 190 self.ensure_running() --> 191 self._send('REGISTER', name, rtype) 192 193 def unregister(self, name, rtype): C:\ProgramData\Anaconda3\lib\site-packages\joblib\externals\loky\backend\resource_tracker.py in _send(self, cmd, name, rtype) 202 203 def _send(self, cmd, name, rtype): --> 204 msg = '{0}:{1}:{2}\n'.format(cmd, name, rtype).encode('ascii') 205 if len(name) > 512: 206 # posix guarantees that writes to a pipe of less than PIPE_BUF UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-20: ordinal not in range(128)한글 인코딩이랑은 전혀 관련이 없는 상황인데 왜 이런 에러가 발생했는지 모르겠습니다.구글링을 해보니(https://stackoverflow.com/questions/64843631/question-about-sklearn-hyperparameter-optimization) 저와 비슷한 에러가 발생하는 사람이 있는데, 답변자는 없어서 혹시 철민님은 아실까 하여 여쭤봅니다.제 기억에는 아마 예전에 돌렸을 때는 정상 작동을 했었던 갓 같은데, 최근 다시 돌려보니 갑자기 왜 이런 문제가 발생했는지 모르겠습니다.

3
byeongjunkim 프로필

행렬 분해 질문 드립니다! byeongjunkim 23시간 전
안녕하십니까 선생님!  좋은 강의 감사하단 말씀 먼저 드리겠습니다~^^ 행렬분해 강의를 듣던중 궁금한 점이 생겨 질문드립니다.. 원본행렬로 부터 R = P * Q.T ,  확률적 경사 하강법을 통해서  P와 Q라는 행렬로 분해가 되는것 이해가 됩니다. 하지만  factor의 차원을 정하는것? factor의 수? 해당 슬라이드와 교재에서는 factor1, factor2,  2개의 잠재요인으로써 P(4x2) Q(2x4) 행렬로 분해를 하였는데 당연히 저차원으로 분해를 하는 것이기에 M, N보단 작을 것이겠지만  굳이 (K=2)2차원으로 행렬분해를 하는 이유가 있는지.. 실제로는 User의 수와 Item의 수가 굉장히 클텐데 이 경우에도 K의 값은  증가 하나요? 따라서  원본행렬을 구하는 것이 목표이기에  적합한 K가 있는지 궁금합니다.   딥러닝 모델 구성에서 hidden layer의 수나 Node의 수를 결정하는 것처럼 경험적인 것인지 궁금합니다.. 감사합니다!

1
lenamuto  프로필

ln[8]에서 groupby질문드립니다. lenamuto 2일 전
선생님 강의 감사합니다. 질문1) 선생님께서 ln[8]에서 의도하신 내용은 주문번호와 상품으로 일단 groupby  후에 다시 invoiceNo를 필터링해서 횟수를 알아내어 한 주문건당,  평균주문건수를 구하고 싶으셨던것 같은데 이미 groupby 를 'invoiceNo'하나만 한게 아니라 'stockCode'와 함께 해서 따로 'invoiceNo'만 필터링한다고 해도 두 컬럼 invoiceNo, 와  stockCode로이미 groupby가 되어버려서 필터링을 해도 값이 그대로 나옵니다. 선생님의 의도는  groupby('invoiceNo').count().mean()이 아닐런지요... 질문2)그리고 고객별로 몇번 주문했는지를 알려면 이 데이터의 경우 dataframe을 어떻게 다뤄야 할지 모르겠어요.즉, retail_df.groupby(['CustomerID','InvoiceDate'])하면 CustomerID InvoiceNo 12346 541431 1 12747 569397 15 554549 14 545321 12 577104 11 551992 9 538537 8 558265 8 537215 7 563949 7 581163 7 541677 5 12748 577057 154 568703 141 575117 140 Name: InvoiceNo, dtype: int64이런 결과가 나오는데 이 경우 'invoiceNo'의 컬럼만 따로 count() 하고 싶을때는 어떤 처리를 해야하는지요..즉 'customID'=12747 의 결과값이 11이 나오게 하려면요...감사합니다!!

1
tmdqkr0930 프로필

랜덤포레스트와 변수중요도(feature importance) tmdqkr0930 3일 전
선생님 안녕하세요. 랜덤포레스트의 변수 중요도와 관련한 질문입니다.  개인적으로 공부를 해봤을 때, 변수 중요도는 데이터의 차원축소를 하는 방법중 하나로 알고 있습니다. 즉, 차원축소에 변수 추출과 변인선택으로 구분되는데 그중 트리기반 알고리즘을 통한 변수 중요도는 변인 선택에 포함되어있다고 알고 있습니다. 만약 변수중요도를 기반으로 차원축소를 하고 싶을 때, 변수중요도에 따른 변수를 선택하는 기준이 있을까요? 어느 블로그에는 상위10개 또는 12개를 선택하는데 단순히 개인적 판단으로 이루어 지나요?

1
정재욱 새벽하늘 프로필

질문 있습니다. 정재욱 새벽하늘 4일 전
강조하셨던 불린 인덱스는 해당 조건에 해당하는 index값으로 데이터를 조회해서 그대로 반환하기 때문에 무조건 1차원 ndarray로 나오는거죠?

2
조영훈 프로필

추천시스템 심화 내용에 대한 레퍼런스나 참조 코드 질문입니다! 조영훈 7일 전
안녕하세요! 여름에 강사님 강의를 열심히 듣고 머신러닝 여러 모델 구현에 도움을 받은 학생입니다! 컴퓨터비전과 Kaggle advanced 강의도 구입해놓아서 방학 때 들어볼 예정입니다 ㅎㅎ  다름이 아니라 이 강의에서 다루셨던 추천 시스템에 대해 배우고 좀 더 심화적으로 협업과 컨텐츠기반 필터링을 조합한 하이브리드 추천시스템에 대해 공부해보려고 하는데요.. 제가 몇일 간 Kaggle이나 towardscience같은 공간에서 검색해보았는데 뭔가 하이브리드 추천 시스템이 종류가 너무나도 많아서 기본적으로 어떤 조합으로 먼저 연습해봐야하는지 모르겠습니다.. 그리고 혹시 추천시스템에 대한 심화내용으로 강의를 제작할 계획은 없으시겠죠..? 하하.. 강의 내용 이외의 이야기일 수 있지만 작은 조언 부탁드리겠습니다. 감사합니다

2
Hyunsung Yi 프로필

graphviz 설치 어려우신분들 Hyunsung Yi 7일 전
주피터 노트북에다가 아래처럼 입력하시고 실행하시면 설치됩니다! 저는 맥을쓰기때문에 강의에 설치방법이 잘 안나와서 2일동안 뒤지다가 겨우 설치 성공했네요... !pip install graphviz

1
lenamuto  프로필

Online-retail분석시 Frequency관련질문드립니다 lenamuto 8일 전
초기 데이터 가공시 Frequency는invoiceNo를count했고,이후 rename하면서 Frequency로 컬럼을 정했는데요. 데이터를 살펴보니 한고객이 어느날 하루에 7개의물건을 주문한것이 각 행별로 하나씩 생성되어있어서 count결과가 7이고, 다른날 각각 다른상품코드 8개를 주문하면 행이 8개가 생성되어 결과적으로 15가 됩니다 그야말로 상품을 종류별로 많이 사면 한날짜에 들어와서 100개의 상품을 산 고객과, 자주들어와서 2개씩, 3개씩 산 고객과 차이가 나지 않는데 괜찮은건가요? 제 생각에는 그 값이 Frequency라는단어적인 의미와는 맞지 않는것 같습니다. 제가 마케팅을 잘은 모르지만 한번들어와서 왕창 산고객보다는 자주 들어오는 loyalty를확인하는거라면 날짜별로groupby하는게 낳은게 아닐지요.. 히스토그램도 너무비대칭이고 좀 이상한거 같아요.. 만약 책처럼 invoiceNo를 count한다면 그건 주문건수와 관련있어서 Monetary와 종속되는 데이터같습니다  그만큼 주문을 많이 하면 총액은 늘어나는거니까요.. 선생님 좋은 의견 듣고싶습니다 항상 좋은강의감사드려요..ㅎㅎ

1
윤우섭 프로필

n_epochs 윤우섭 8일 전
SGD에서 수행 시 반복횟수 이터레이션이 정확히 무엇을 말하나요? 기억이 가물가물해서 그런데 혹시 디폴트 값이 20이면 전체데이털르 최대 20번까지 돌면서 학습하는 것인가요?? 혹시 만약 맞다면 같은 데이터를 계속학습한다면 어떤 장점이 있어서인가요? 

1
K MJ 프로필

K-means의 중심점 K MJ 8일 전
K-means 중심점을 클러스터의 개수와 같이 생성하고 시작하는데 K-means 알고리즘을 진행하는데 맨 처음에 중심점은 어떤 기준으로 생성되는 건가요?

1
정재욱 새벽하늘 프로필

만들어진 모델에 다른 데이터 적용할 때 에러가 납니다.. 정재욱 새벽하늘 8일 전
안녕하세요, 선생님 강의 잘 듣고 있습니다. AdaboostClassifier 모델을 만들고 새로운 데이터를 Test 데이터와 똑같이 전처리하여 score 함수를 썼는데요,, 아래와 같은 에러가 뜹니다. valueError: Number of featues of the model must match the input. Model n_features in 1680 and input n_features in 1270 모델을 만들고 새로운 데이터를 넣어서 그 데이터가 분류가 잘 되는지 확인하기 위해 모델을 만든다고 생각하는데요. 처음에 모든 data를 넣어서 test와 train 데이터로 나누면 그건 한정된 데이터로 모델을 만드는게 아닌가란 생각이 듭니다.. stackoverflow에 찾아봐도 데이터를 모두 합친 후에 model을 만들라고 하네요. 새로운 데이터가 나올때마다 분류를 해야 하는데 어떻게 하면 위 에러가 안뜨게 할 수 있을까요..?

5
nealzs 프로필

classification stacking 질문입니다 nealzs 10일 전
안녕하세요, 스태킹 관련 강의를 들으면서 의문점이 생겨 질문을 남깁니다. diagram으로 잘 설명해주셔서 전반적으로 cross validation stacking이 어떻게 쌓이고 학습하는지 이해를 한 것 같습니다. 1. 스태킹 모델의 base는 이진 분류인지가 궁금합니다. 즉 모든 알고리즘들이 0 또는 1의 결과를 내는 건가요? multi-label classification인 경우에도 스태킹 모델을 사용 할 수 있는 건지 궁금합니다. 2. 이어서 원본 학습데이터의 feature들은 stacking 시 어떻게 되는지 궁금합니다. [예를 들어, (개별모델1 예측치 column, 개별모델2 예측치 column, 개별모델3 예측치 column, 개별모델4 예측치 column,) 이와 같이 4개로 stacking]  meta model이 학습 하는 데이터의 feature(column)가 개별 모델의 원본 학습데이터의 예측치라면 원본 데이터의 feature들이 최종 결과값에 어떻게 반영되는지 이해가 잘 되지 않습니다. meta model의 학습 데이터는 각 모델이 결과로낸 predict proba로 구성되어 있는 건가요? 아니면 0 or 1로 구성되어 있나요? 제가 궁금한 부분을 말로 표현하기가 저도 어려운데... meta model이 학습하려는 데이터가 개별 모델의 결과값인 0 or 1의 값으로 혹은 각 feature에 따른 확률값의 데이터라면 어떻게 원본 학습 데이터의 각  feature들을 대변하는지 궁금합니다.

1
김별희 프로필

BayesianOptimization 과정 중에서 'module' object is not callable 오류가 발생합니다. 김별희 10일 전
from sklearn.metrics import mean_squared_error import lightgbm as lgb def lgb_eval(num_leaves,feature_fraction,bagging_fraction,max_depth,min_data_in_leaf): params = {'num_leaves':int(round(num_leaves)), 'min_data_in_leaf':min_data_in_leaf, 'objective':'regression', 'max_depth':int(round(max_depth)), 'learning_rate':0.02, "boosting":'gbdt', "feature_fraction":feature_fraction, "bagging_freq":1, "bagging_fraction": bagging_fraction, "bagging_seed":11, "metric":'rmse', "random_state":2019} print("params:", params) lgb_model = lgb(**params) lgb_model.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=30, eval_metric="rmse", verbose=100 ) best_iter = lgb_model.best_iteration_ print('best_iter:', best_iter) valid_proba = lgb_model.predict_proba(X_test, num_iteration=best_iter)[:, 1] rmse = np.sqrt(mean_squared_error(y_test, y_pred)) print('rmse:',rmse) return rmse ##################################### bayes_params = { 'num_leaves': (24, 45), 'feature_fraction':(0.5, 1), 'bagging_fraction': (0.5, 1), 'max_depth': (4, 12), 'min_data_in_leaf':(5, 50) } ################################# from bayes_opt import BayesianOptimization BO_lgb = BayesianOptimization(lgb_eval, bayes_params, random_state=0) ############################################### BO_lgb.maximize(init_points=5, n_iter=10) 안녕하세요 언제나 좋은 강의 감사합니다. 제가 lightgbm 모델을 BayesianOptimization을 통해 최적의 하이퍼 파라미터를 구하고자하는데, param이 print되는 것 까지는 진행이 되고나서,  아래 오류와 같이 'module' object is not callable 라는 안내문이 출력되엇습니다. lgb 모듈이 불러와지지 않앗다는 의미인것 같은데 import로 호출한 것과는 별개의 문제인가요? | iter | target | baggin... | featur... | max_depth | min_da... | num_le... | ------------------------------------------------------------------------------------- params: {'num_leaves': 33, 'min_data_in_leaf': 29.51974323486036, 'objective': 'regression', 'max_depth': 9, 'learning_rate': 0.02, 'boosting': 'gbdt', 'feature_fraction': 0.8575946831862098, 'bagging_freq': 1, 'bagging_fraction': 0.7744067519636624, 'bagging_seed': 11, 'metric': 'rmse', 'random_state': 2019} --------------------------------------------------------------------------- KeyError Traceback (most recent call last) E:\anaconda\lib\site-packages\bayes_opt\target_space.py in probe(self, params) 190 try: --> 191 target = self._cache[_hashable(x)] 192 except KeyError: KeyError: (0.7744067519636624, 0.8575946831862098, 8.822107008573152, 29.51974323486036, 32.896750786116996) During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) <ipython-input-103-adbdc94e6584> in <module> ----> 1 BO_lgb.maximize(init_points=5, n_iter=10) E:\anaconda\lib\site-packages\bayes_opt\bayesian_optimization.py in maximize(self, init_points, n_iter, acq, kappa, kappa_decay, kappa_decay_delay, xi, **gp_params) 183 iteration += 1 184 --> 185 self.probe(x_probe, lazy=False) 186 187 if self._bounds_transformer: E:\anaconda\lib\site-packages\bayes_opt\bayesian_optimization.py in probe(self, params, lazy) 114 self._queue.add(params) 115 else: --> 116 self._space.probe(params) 117 self.dispatch(Events.OPTIMIZATION_STEP) 118 E:\anaconda\lib\site-packages\bayes_opt\target_space.py in probe(self, params) 192 except KeyError: 193 params = dict(zip(self._keys, x)) --> 194 target = self.target_func(**params) 195 self.register(x, target) 196 return target <ipython-input-101-a7b26b7824de> in lgb_eval(num_leaves, feature_fraction, bagging_fraction, max_depth, min_data_in_leaf) 22 23 # 모델 훈련 ---> 24 lgb_model = lgb(**params) 25 lgb_model.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=30, eval_metric="rmse", verbose=100 ) 26 best_iter = lgb_model.best_iteration_ TypeError: 'module' object is not callable

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스