월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
너무 궁금해서 문의드려봅니다.
안녕하세요. 책도보고 동영상도 보고 있는데 너무 궁금해서 이렇게 강의와 직접적인 관련이 없는데도 불구하고 이런 경우는 어떻게 접근해야할지 몰라서 문의드려봅니다. 문장의 예) Gildong weighs 60kg. Cheolsu weighs 70kg. Younghee weighs 49kg. 위 문장 텍스트에서 영희라는 사람의 몸무게를 구하고 싶습니다. 기존 개발방법이라면 문장으로 배열화 시켜서 for문 돌리면서 if문 사용하여 Younghee, weighs 단어가 포함된 문장배열에서 kg이 포함된 단어 또는 정규식으로 사용하든지해서 구할것입니다. 그러나 이렇게 나온 데이터가 AI영역에서는 의미가 없어 보입니다. 비정형화된 텍스트에서 특정 원하는 값을 구하고싶은데 AI 머신러닝 딥러닝의 개념으로 처리를 한다면 어떻게 접근해야할지 너무 감이 안옵니다. 정말 그냥 for문, if문 사용해서 영희의 몸무게를 뽑아내야하는건지 AI 개념에서는 어떻게 접근해야할지 작은 조언이라도 부탁드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
강의와 책 관련 질문있습니다!
안녕하세요 교수님. 이번에 머신러닝 완벽가이드 강의를 신청하여 듣고있는학생입니다. 다름이 아니라 제가 책은 구매하지 않았고 강의만 수강하고 있는 상태인데요. 책을 구매하지 않아도 강의를 듣는데 무리가 없을까요? 책이랑 병행해야 된다면 살건데, 굳이 책이랑 병행하지 않고 강의로만 커버된다면 일단 강의만 들을생각이여서요. 답변부탁드리겠습니다^^
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
one_col_df 질문
one_col_df = titanic_df[['Name']] print(one_col_df.head(3)) print("## type:",type(one_col_df)) 해당 부분 이해되지 않습니다. 설명 부탁드리겠습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
stratified-kfold
강사님, 왜 titanic에서는 k-flod를 쓰시고, stratified-kfold를 쓰지 않으셨나요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
공부방법 관련
안녕하세요 강의 잘듣고 있습니다. 머신러닝에 대한 개념이 많이 부족한지라 생각보다 시간이 걸리네요. 공부방법에 관한 질문드립니다. 혹시 코드를 하나하나 다 따라해보며 한줄한줄 다 이해하는게 나을까요 (현재 이런 방식으로 하고있습니다) 아니면 코드의 흐름 및 알고리즘 개념만 이해했으면 넘어가는게 나을까요?
- 해결됨[개정판] 파이썬 머신러닝 완벽 가이드
best_score_값과 pred값이 다른 이유
안녕하세요, 구글코랩에서 GridsearchCV를 실행하다가 궁금한 점이 생겨 질문합니다. grid_dtree.best_score_ 를 출력하면 정확도가0.975가 나오고 pred=grid_dtree.predict(X_test)에서 pred를 출력하면 0.9667이 나옵니다. refit=True옵션이 최고성능을 내는 파라미터로 재학습하는 것이니 grid_dtree를 테스트 데이터셋으로 학습 및 예측한 pred와 best_score_ 속성 값은 동일해야 하는 것 아닌지 궁금합니다. 두 값이 다른 이유는 K폴드를 실행하는 과정에서 학습데이터셋과 테스트데이터셋의 구간이 강의에서 나온 구간과는 약간 상이해서 그런듯합니다. 이것도 맞는지 알려주시면 감사하겠습니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
Kmeans 의 cluster_centers_에관하여
항상 좋은강의 감사드립니다. kmeans의 클러서터수를 3으로 한경우 cluster_centers_인자의 값은 크기가 3*4611로 [0,1]사이의 숫자가 나오는것 같은데 궁금하여 다른수강생들의 질문을 찾아보니 "cluster_centers는 군집중심의 좌표값을 알려주는 것이지, 중심과의 상대위치를 정규화된 숫자값으로 표시되는 건 아닌걸로 알고 있어서요. 좌표값이 tf-idf로 vectorization한 값이니 이번 경우에 한하여 중심과의 상대위치를 나타내는 값으로 이해하면 될까요?" 라는 수강생의 질문에 "네, cluster_centers_는 제 설명이 잘못되었군요. 말씀하신대로 군집 중심의 좌표값이 맞습니다. 말씀하신대로 중심과의 상대위치를 나타내는 값으로 이해하시면 될 것 같습니다." 라고 답해주셨던데요.. 1) 수강생의 말대로 '군집중심의 좌표값' 인건가요? 제생각에는 선생님께서 말씀하신 대로 KMeans알고리즘 적용이후 나타나는 값중의 하나인 행렬이 cluster_censters_(3*4611)인거고 클러스트 3개에 해당하는 희소행렬 안의 단어 4611개에 대하여 클러스터 0,1,2 별로 상대적인 위치(어떻게 보면 단어별로 0이라는 클러스터로 분류될 수 있을 만한 확률값 [0,1]이라서 1에 가까울수록 그럴듯하다)이런의미가 아닐런지요, 즉, 제 생각에는 선생님말씀처럼 각 클러스터별 정규화과정을 거친 값이지, 군집중심의 좌표값은 아니지 않나요? 선생님말씀처럼 4611개의 모든 단어별로 각 클러스터에 얼마나 확률적으로 가까운지에 대한 리스트인것 같은데..도와주세요
- 해결됨[개정판] 파이썬 머신러닝 완벽 가이드
2.6 사이킷런으로 수행하는 타이타닉 생존자 예측 관련해서 질문 드립니다.
import numpy as np import pandas as pd df = pd.read_csv("titanic_train.csv", index_col = 0) df x_data = df.drop(['Survived', 'Name', 'Ticket', 'Cabin', 'Embarked','SibSp','Parch','Pclass'],axis=1) x_data x_data['Sex_Con'] = x_data['Sex'].apply(lambda x: 0 if x == 'male' else 1) x_data = x_data.drop('Sex', axis=1) x_data[['Age']] = x_data[['Age']].fillna(value=x_data[['Age']].mean()) x_data x_data[['Age']].isnull().sum() x_data[['Fare']].isnull().sum() y_data = df['Survived'] y_data y_data.isnull().sum() from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier X_train, Y_train, X_test,Y_test = train_test_split(x_data, y_data, test_size=0.2, random_state=11) dt_clf = DecisionTreeClassifier(random_state=11) dt_clf.fit(X_train,Y_train) df_pred = dt_clf.predict(X_test) 이렇게 했을시 ValueError: Unknown label type: 'continuous-multioutput' 라는 에러가 나는데요 도통 어디서 나는지를 모르겠네요;;
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
강의 순서
분류 보다 회귀를 먼저 들어도 상관없을까요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
bias 질문있습니다.
안녕하세요 강사님 PolynomialFeatures() 파라미터인 include_bias 를 True 로 설정하면 그래프 오차가 상당히 크게 나오는데 언제 왜 쓰이는지 궁금합니다. import numpy as np from matplotlib import pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression m = 100 X = 6*np.random.rand(m, 1) - 3 y = 0.5 * X**2 + X +2+ np.random.randn(m, 1) poly_features = PolynomialFeatures(degree=2, include_bias=False) X_poly = poly_features.fit_transform(X) #print(X_poly) lin_reg = LinearRegression() lin_reg.fit(X_poly, y) print(lin_reg.intercept_, lin_reg.coef_) poly_features2 = PolynomialFeatures(degree=2, include_bias=True) X_poly2 = poly_features2.fit_transform(X) lin_reg2 = LinearRegression() lin_reg2.fit(X_poly2, y) print(lin_reg2.intercept_, lin_reg2.coef_) plt.plot(X, y, 'o') plt.plot(X, lin_reg.coef_[0][1]* X**2 + lin_reg.coef_[0][0]*X +lin_reg.intercept_, 'r.') plt.plot(X, lin_reg2.coef_[0][1]* X**2 + lin_reg2.coef_[0][0]*X +lin_reg2.intercept_, 'g.') plt.plot(X, np.round(model.named_steps['linear'].coef_, 2)[0][1]* X**2 + np.round(model.named_steps['linear'].coef_, 2)[0][0]*X , 'y.') plt.show() from sklearn.pipeline import Pipeline model = Pipeline([('Poly', PolynomialFeatures(degree=2, include_bias=False)), ('linear', LinearRegression())]) model = model.fit(X, y) print('회귀계수 : ', np.round(model.named_steps['linear'].coef_, 2))
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
코랩으로 csv 파일 불러오는 것 질문드립니다.
맥북에 아나콘다 설치돼 있긴한데 데스크탑, 놋북에서 공부하려면 아무래도 코랩이 편해서 코랩 사용중입니다. 여하튼.. 제가 코랩 쓰는 데 csv 파일 불러오는 것에 대해 질문드립니다. 구글 검색해보니 1. 컴퓨터에 저장돼 있는 csv 파일 불러오기 2. 구글드라이브에 있는 csv 파일 불러오기 2가지 방법이 있는데 2번 구글 드라이브에서 csv 파일 불러오는 것을 못하고 있습니당 ㅜ from google.colab import drive drive.mount('/content/drive') 요걸로 계정 액세스하고 filename = '/content/drive/Colab Notebooks/titanic_train.csv' 얘로 불러오려하는데 file notfound 에러가 뜹니당. 경로가 잘못된 것 같은데 지금 csv파일 경로가 내 드라이브 - Colab Notebooks - titanic_train.csv 요렇게 되어있는데.. 잘못된 부분이 있을까요??아님 다른 곳에서 잘못한걸까요 ㅜ 구글 드라이브에서 csv 불러오는 것 설명 부탁드립니당! 참고로 1번 컴퓨터에 있는 csv 파일은 from google.colab import files myfile = files.upload() import io import pandas as pd 이렇게 한다음 pd.read 로 csv파일 잘 불러왔습니당.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
피쳐데이터변환
선생님, 안녕하세요 : ) log, standard, minmax를 이용하여 피쳐엔지니어링을 해주실 때, 함수에 보면 fit_transform(input_data) 혹은 np.log1p(input_data)라고 되어 있습니다. input_data에는 categorical과 numerical 변수가 섞여 있는데 (질문1) numerical 변수만 엔지니어링하도록 standardscaler() minmaxscaler()가 구성되어 있는 것인가요~?? 아니면 categorical 변수도 같이 엔지니어링을 해주는 것인가요?? 혹시 같이 엔지니어링을 해준다면 그 이유는 무엇인가요?? (질문1) log의 경우에는 categorical변수도 로그값으로 변경해준 것 같은데 categorical변수는 왜 피쳐엔지니어링하는지 모르겠어서 이렇게 질문 남깁니다. 감사합니다 : )
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
adjuste r2score
선생님, 안녕하세요! 질문1) 혹시 머신러닝 regression 은 adjusted r2score을 확인하는 방법이 있을까요? 질문 2) 예측을 위해서는 r2score이 높은 것이 좋지만, 인과관계를 분석할 때는 r2score과 다중공선성 tradeoff 문제로 인해 r2score이 높은 것이 꼭 좋은 것만은 아니라고 통계학에서 배웠습니당! 혹시 머신러닝에서는 회귀분석의 주요 이유가 인과관계가 아닌 예측을 위한 것인가요~? r2score을 평가지표로 사용되며 예측 위주로 수업이 진행되어서, 통계학과 달리 머신러닝에서는 인과관계를 분석하는 것보다 예측에 중점을 두는지 궁금증이 발생하여서 이렇게 질문드립니다. 인프런을 통해 좋은 강의를 계속 업데이트 해주셔서 항상 감사드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
위스콘신 Breast Cancer 데이터 셋질문입니다.
precision recall f1-score support 0 0.80 0.98 0.88 26427 1 0.48 0.06 0.10 6732 accuracy 0.80 33159 macro avg 0.64 0.52 0.49 33159 weighted avg 0.74 0.80 0.73 33159 선생님 안녕하세요. 다름이 아니라 위스콘신 Breast Cancer 데이터 셋에서 타겟값이 0과1인데 실습에서는 1에 대한 정확도와 재현율만 나오는것 같아서요. 혹시 위처럼 0과 1 모두다 나오게 하기 위한 방법이 따로 있을까요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
3.6 피마 인디언 당뇨병 예측.ipynb 질문이요
3.6 피마 인디언 당뇨병 예측.ipynb # 피처 데이터 세트 X, 레이블 데이터 세트 y를 추출. # 맨 끝이 Outcome 컬럼으로 레이블 값임. 컬럼 위치 -1을 이용해 추출 X = diabetes_data.iloc[:, :-1]=>Pregnancies부터 Age까지 데이터를 추출한다는것같은데 만약 Pregnancies와 SkinThickness을뻬고 데이터 예측하고 싶을 때는 어떻게 해야하나요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
xgboost 실행시 적은수의 자료이용 관련
xgboost 사용시 훈련자료와 테스트셋를 사용하여 평가를 하는데 있어서 제가 가지고 있는 자료는 레이블 값이 1인 자료가 25개 레이블값이 0인 자료가 10000개가 있습니다 이런 경우에 train_test_split를 학습자료와 테스트셋으로 구분하여 실행하기에 레이블이 1인 값이 너무 적은 것 같아서 다른방법을 찾고 있습니다. 예를 들면 leave on out cross validation 방법을 xgboost적용할 수 있는지 궁금합니다. 아니면 권하는 방법이라도 알려주시면 감사하겠습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
roc auc 최종 점수 도출
안녕하세요 좋은 강의 정말 감사드립니다. 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'). 이라는 에러 메시지가 뜹니다. 이것을 어떻게 해결할 수 있을까요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
GridSearchCV에 대한 질문
안녕하세요, GridSearchCV에 대해 질문 드립니다. 줄여서 Grid라 쓰겠습니다 뭔가 정리가 안되서요,,,ㅎ 1. Grid는 교차 검증과 최적 하이퍼 파라미터 튜닝을 한 번에 해주는데요, 교차 검증 시 Straitified K 폴드 방식으로 하는지 K 폴드 방식으로 하는지 어떻게 알 수 있나요? 혹시 어떻게 폴딩 했는지 볼 수 있는 속성이 있나요? ( ex. best_estimator_와 같은 함수같은..) 2. 책 p109에서 교차 검증시 학습/검증 레이블 데이터 분포를 확인 할 수 있었는데요, Grid에서도 동일하게 확인 할 수 있는 방법이 있나요? grid가 Stratified K Fold를 포함하고 있는지.. 헷갈립니다ㅠ
- 해결됨[개정판] 파이썬 머신러닝 완벽 가이드
UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-20: ordinal not in range(128)
안녕하세요. 수업 잘 듣고 있습니다. 벌써 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) 저와 비슷한 에러가 발생하는 사람이 있는데, 답변자는 없어서 혹시 철민님은 아실까 하여 여쭤봅니다.제 기억에는 아마 예전에 돌렸을 때는 정상 작동을 했었던 갓 같은데, 최근 다시 돌려보니 갑자기 왜 이런 문제가 발생했는지 모르겠습니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
행렬 분해 질문 드립니다!
안녕하십니까 선생님! 좋은 강의 감사하단 말씀 먼저 드리겠습니다~^^ 행렬분해 강의를 듣던중 궁금한 점이 생겨 질문드립니다.. 원본행렬로 부터 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의 수를 결정하는 것처럼 경험적인 것인지 궁금합니다.. 감사합니다!