월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
희소행렬
Truncated SVD는 희소행렬로만 지원된다는게 무슨뜻가요? 희소행렬이 행렬의 값이 대부분 0인 경우를 가리킨다고 하는데, Truncated SVD는 행렬의값이 대부분 0일 경우에만 수행하나요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
피처 중요도 시각화
from xgboost import plot_importance import matplotlib.pyplot as plt %matplotlib inline fig,ax = plt.subplots(figsize=(10,12)) plot_importance(xgb_model, ax=ax) -------------------------------------------- xgboost에서 피처 중요도 시각화 부분에서 질문사항이 있습니다.(교제 p.239) 이 부분에서 마지막 ax=ax로 되는 이유가 무엇인가요? ax라는 리스트로 ax를 지정해 준 것인가요? 답변 미리 감사드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
데이터 의존성 / NMF와 SVD
수강 후 두 가지 궁금한 점이 생겨 질문 드립니다. 1. 데이터 의존성이 관련성?과 비슷한 의미인가요? 정확히 어떠한 의미인지 궁금합니다. 2. NMF와 SVD의 차이에 대해서 궁금합니다 두 가지 기법 모두 하나의 원본행렬을 분해하여 잠재 요소를 추출해 내는 것으로, NMF는 두 개의 행렬로 SVD는 세 개의 행렬로 분해한다는 것은 알겠으나 그 차이에서 발생하는 다른 점이 무엇인지 궁금합니다. 예를 들어 NMF가 아닌 SVD로 세 개의 행렬로 분해하는 것의 목적과 효과는 무엇인지, 어떠한 경우에는 NMF를 사용하고 어떠한 경우는 SVD를 사용하는 것인지 알고 싶습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
에제 소드 코드 활용법
예제 소스코드를 주피터로 열어서 공부하고 있는데 저는 주로 Spyder를 사용하고 있습니다. 주피터 노트북의 소스 코드를 복사하여 Spyder에 붙여 넣기하여 확인하고 싶은데 잘 안됩니다. 방법 좀 알려 주시면 감사하겠습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
랜덤 포레스트 오류와 관련한 질문입니다
fit하는 과정에서 문제가 생긴 것 같고 몇달 전 저와 같은 질문을 하신분이 계셨는데 그분에게 답변해주신 것을 보고 따라해보려해도 해결이 안돼서 질문 남깁니다 어떤식으로 해결해야할 지 설명해주시면 감사하겠습니다 ㅜㅜ!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] } # RandomForestClassifier 객체 생성 후 GridSearchCV 수행 rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1 ) grid_cv.fit(X_train ) print('최적 하이퍼 파라미터:\n', grid_cv.best_params_) print('최고 예측 정확도: {0:.4f}'.format(grid_cv.best_score_))--------------------------------------------------------------------------- UnicodeEncodeError Traceback (most recent call last) <ipython-input-45-a4ef1b9de222> in <module> 10 rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) 11 grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1 ) ---> 12 grid_cv.fit(X_train , y_train,encoding='UTF-8') 13 14 print('최적 하이퍼 파라미터:\n', grid_cv.best_params_) C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 61 extra_args = len(args) - len(all_args) 62 if extra_args <= 0: ---> 63 return f(*args, **kwargs) 64 65 # extra_args > 0 C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params) 777 verbose=self.verbose) 778 results = {} --> 779 with parallel: 780 all_candidate_params = [] 781 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) 738 """Build a process or thread pool and return the number of workers""" 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: C:\ProgramData\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in configure(self, n_jobs, parallel, prefer, require, idle_worker_timeout, **memmappingexecutor_args) 492 SequentialBackend(nesting_level=self.nesting_level)) 493 --> 494 self._workers = get_memmapping_executor( 495 n_jobs, timeout=idle_worker_timeout, 496 env=self._prepare_worker_env(n_jobs=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)
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
군집화 성능평가 실루엣 계수 말고는 다른 방법은 없는지 궁금합니다.
선생님께서 설명해주신 것 처럼, 실루엣계수로 군집화를 평가하는데 많은 취약점들(대용량데이터에서는 수행시간 너무 오래걸리고, 특정군집의 실루엣 계수만 유난히 높아서 다른 군집들은 클러스터링이 잘 안되었는데도 실루엣계수 전체 평균값이 높게 나오는 경우 등..)이 있어보이는데.. 실루엣계수말고 군집화를 평각하는 다른 지표가 있나요..? 현업에서는 대용량데이터를 군집화 할 때 (실루엣계수 말고) 군집화를 평가하려면, 보통 어떤 식으로 평가하는 지 궁금합니다...! (다른 방법이 없어서 현업에서도 대략적으로 실루엣계수를 통해 참고만 하는 정도인지.. 궁금하네요.)
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
질문드릴게 있습니다.
# 학습 피처 데이터세트와 테스트 피처 데이터를 DataFrame으로 로딩. 칼럼명은 feature_name 적용 X_train = pd.read_csv('./human_activity/train/X_train.txt', sep = '\s+', names = feature_name) X_test = pd.read_csv('./human_activity/test/X_test.txt', sep = '\s+', names = feature_name) print(X_train) 해당 부분에서 칼럼명을 feature_name으로 지정하는 자세한 사유를 알 고 싶습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
모르는 부분이 있어 질문 드립니다.
결정트리 실습 부분에서 def get_new_feature_name_df(old_feature_name_df): feature_dup_df = pd.DataFrame(data = old_feature_name_df.groupby('column_name').cumcount(), columns = ['dup_cnt']) feature_dup_df = feature_dup_df.reset_index() A = old_feature_name_df.reset_index() new_feature_name_df = pd.merge(old_feature_name_df.reset_index(), feature_dup_df, how = 'outer') new_feature_name_df['column_name'] = new_feature_name_df[['column_name', 'dup_cnt']].apply(lambda x : x[0]+'_'+str(x[1]) if x[1] >0 else x[0] , axis=1) new_feature_name_df = new_feature_name_df.drop(['index'], axis=1) # print(feature_dup_df) # print(A) # print(new_feature_name_df) return A get_new_feature_name_df(feature_name_df) pd.merge를 통하여 병합한다는 부분까지는 이해를 했는데, new_feature_name_df['column_name'] = new_feature_name_df[['column_name', 'dup_cnt']].apply(lambda x : x[0]+'_'+str(x[1]) if x[1] >0 else x[0] , axis=1) lambda 부분에서 전 강의를 복습하고 와도 이해가 안가 질문남깁니다. 어떻게 해석 하면 되는지 궁금합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
결정 트리 과적합
from sklearn.datasets import make_classification import matplotlib.pyplot as plt %matplotlib inline plt.title("3 Class values with 2 Features Sample data creation") # 2차원 시각화를 위해서 feature는 2개, 결정값 클래스는 3가지 유형의 classification 샘플 데이터 생성. X_features, y_labels = make_classification(n_features=2, n_redundant=0, n_informative=2, n_classes=3, n_clusters_per_class=1,random_state=0) # plot 형태로 2개의 feature로 2차원 좌표 시각화, 각 클래스값은 다른 색깔로 표시됨. plt.scatter(X_features[:, 0], X_features[:, 1], marker='o', c=y_labels, s=25, cmap='rainbow', edgecolor='k') ------------------------------------- 책 p.199에 나와있는 코드인데, 수업중에는 다루지 않아 질문 남깁니다. plt.scatter(X_features[:, 0], X_features[:, 1], marker='o', c=y_labels, s=25, cmap='rainbow', edgecolor='k')이 부분에서 1) X_features[:,0]은 0에 대한 예측 확률, X_features[:, 1]은 1에 대한 예측 확률값 인가요? 앞서 배운 predict_proba() 수행시 반환되는 ndarray값과 혼동되어 질문 남깁니다. 답변 미리 감사드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
레이블 인코딩/ 원핫인코딩
타이타닉 데이터에서 sex, embark와 같은 categorical feature을 원핫인코딩까지 하지않고 레이블인코딩까지만 하신 이유가 tree기반 모델에서는 숫자의 특성을 반영하지 않기때문인가요??? 그렇다면 tree기반 모델에서는 항상 categorical feature을 레이블인코딩까지만 해도 상관없는건가요??? 그리고 분류에서는 모든 연속형데이터는 항상 일정 범위로 나누어 categorical 데이터로 바꿔줘야 하는것인지 궁금합니다. (만약 맞다면 회귀에서는 연속형데이터를 그대로 집어넣는것인지도 알고싶습니다.)
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
boosting 모델 질문
bagging 방식의 randomforest는 bootstrap방식을 통해 여러개의 데이터셋을 복원추출하는데 boosting 방식의 xgboost나 lightgbm은 데이터셋은 하나의 데이터셋만 가지고 sequential하게 오차를 수정해나가는 방식으로 이해하면 될까요?? 질문의 포인트는 boosting방식의 모델은 하나의 데이터셋만 사용하는가 입니다
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
PCA 관련 질문
안년하세요 강사님, 6장에서 신용카드 문제에 대해서 질문이 있습니다. 책에서는 전체 피처를 6개로 줄입니다. 저는 상관관계가 높은 피처만을 차원축소하고 나머지 피처는 그대로 사용해보려고 했는데 정확도가 많이 낮아졌습니다. 기존에 상관관계가 높았던 BILL_AMT1~6까지를 축소하고 이를 원데이터에서 BILL_AMT1~6 컬럼을 드랍한 데이터프레임과 합쳐서 학습 및 평가를 수행했는데 이 과정에서 예측성능이 안좋아진 이유가 있을까요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
predict_proba(X_test)[:, 1]
# 피처 데이터 세트 X, 레이블 데이터 세트 y를 추출. # 맨 끝이 Outcome 컬럼으로 레이블 값임. 컬럼 위치 -1을 이용해 추출 X = diabetes_data.iloc[:, :-1] y = diabetes_data.iloc[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 156, stratify=y) # 로지스틱 회귀로 학습,예측 및 평가 수행. lr_clf = LogisticRegression() lr_clf.fit(X_train , y_train) pred = lr_clf.predict(X_test) # roc_auc_score 수정에 따른 추가 pred_proba = lr_clf.predict_proba(X_test)[:, 1] get_clf_eval(y_test , pred, pred_proba) -------------------------------------------- 선수 학습이 부족해서 그런지 강의를 듣고 다시 코드를 작성하는 과정에서 계속 의문점이 생겨 질문을 남깁니다. 1) pred_proba = lr_clf.predict_proba(X_test)[:, 1] 이 부분에서 왜 [:,1]로 하는 것인가요? 2) X = diabetes_data.iloc[:, :-1]는 정의했고, (X_test)[:,1]이 제가 이해한 바로는 X_test의 데이터 중에 [all rows, outcome]인데, 맞나요? train_test_split을 했을 때 X_test가 어떠한 데이터 프레임 형태를 갖는지 알지 못하여, print(X_test)를 하였고 다음과 같은 결과값이 나왔습니다. Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \ 81 2 74 0 0 0 0.0 682 0 95 64 39 105 44.6 169 3 111 90 12 78 28.4 693 7 129 68 49 125 38.5 9 8 125 96 0 0 0.0 .. ... ... ... ... ... ... 293 1 128 48 45 194 40.5 344 8 95 72 0 0 36.8 650 1 91 54 25 100 25.2 415 3 173 84 33 474 35.7 505 10 75 82 0 0 33.3 DiabetesPedigreeFunction Age 81 0.102 22 682 0.366 22 169 0.495 29 693 0.439 43 9 0.232 54 .. ... ... 293 0.613 24 344 0.485 57 650 0.234 23 415 0.258 22 505 0.263 38 [154 rows x 8 columns]제가 머신러닝에 대한 기초적 개념이 부족해서인지, 파이썬에 대한 개념이 부족해서인지, 이 부분이 이해가 가지 않습니다. 답변 기다리겠습니다. 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
로지스틱 회귀 관련 오류
안녕하세요? 항상 좋은 강의 감사드립니다. 머신러닝을 선생님 강의로 처음 입문하여 아직 익숙하지 않은 부분이 많은데, 오류가 뜰때마다 정말 당황스럽습니다.. 신용카드 사기검출 실습 주피터 노트북에서 7번째 셀의 코드를 실행하면 아래와 같은 오류 메세지가 나옵니다. 제가 선생님이 올려주신 코드를 수정하진 않았고, 강의를 들으면서 코멘트만 몇군데에 달았는데 왜 갑자기 오류가 뜨는지 모르겠네요.. 이 셀 바로 위의 셀까지는 문제없이 작동합니다. 오류메세지를 보면 decode에서 문제가 생긴것 같아서 그부분을 바꿔보거나 하려고 찾아봤지만 보이지가 않아서 결국 질문을 남깁니다. 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
clustering시 feature의 차원 질문
7장 군집화 수업시 주로 feature의 수가 2개인 cluster을 진행하셨는데 이는 단지 시각화를 통해 cluster된 모습을 보여주기 위해서 그러신건가요?? 보통은 피쳐수가 많은 데이터가 많은데 이때는 시각화는 불가능하지만 feature가 여러개인 상태에서 cluster을 진행하면 되는지 아니면 보통 pca를 통해 차원축소를 진행한 후에 cluster을 진행하는 것인지 궁금합니다. 또한 dbscan 모델에서도 군집평가를 실루엣 분석을 사용하나요??
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
최적 하이퍼 파라미터 질문
params = { 'n_estimators': [100, 500], 'learning_rate': [0.05, 0.1] } 이 부분에서 [100, 500] 100에서 500으로 변경한다는 뜻인가요? 아니면, 100과 500을 모두 넣고 최적 하이퍼 파라미터를 찾는다는 뜻인가요? 답변 미리 감사드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
cross_val_score 인자 관련 질문
cross_val_score 인자로 피처데이터와 레이블데이터가 들어가는데, 원래대로라면 우선적으로 test, train 데이터로 구분한 뒤 X_test, y_test 를 인자로 넣는게(test 데이터로 수행을 하는게) 맞는건가요? 수업 듣던 도중 갑자기 헷갈려서 질문드립니다ㅠㅠ
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
맨 처음 X 선언시 np.random.rand(100,1)에 2를 곱하는 이유가 따로 있나요?
맨 처음 X 선언시 np.random.rand(100,1)에 2를 곱하는 이유가 따로 있나요? 굳이 곱해야 하는 이유가 무엇인지 알고 싶습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
자연어 처리에서 사용자 지정어를 설정하는방법이 궁금합니다
culture shock 처럼 word_tokenizer를 쓰면 두단어를 분리하는데 하나의 단어처럼 분리하는 파라미터는 없나요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
eval_set 관련 헷갈리는 부분 질문드립니다.
xgb_clf.fit 에서 X_train과 y_train을 인자로 넣어주는데 eval_set=[(X_train, y-train)]을 넣어주는 이유가 헷갈립니다. 교차검증처럼 학습데이터와 검정데이터로 나누어주는 것인가요?