월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
코드 관련 질문있습니다!
안녕하세요 코드 : iris_data = iris.data 에서 .data 에 해당하는 부분은 파이썬 문법에 어디에 해당하는 부분인가요? 메서드는 ()표기가 있었는데 이거는 없어서 궁금합니다. 비슷한 예시로 numpy 알려주실때 .shape 도 궁금합니다. 자세히 알려주시면 정말 감사드리겠습니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
ROC_AUC_SCORE 관련 내용
안녕하세요. 질문 사항이 한 가지 생겨서 문의 드립니다. 새로운 개정판으로 강의를 들으면서 공부를 하고 있는데요, P.171-172 ROC_AUC_SCORE를 구하는 과정에서 타이타닉 생존자 예측 로지스틱 회귀 모델의 ROC_AUC_SCORE 값이 코드상에는 0.8987이 나오는데 책에는 0.9024로 나와 확인 필요할거 같아서 문의 드립니다. 감사합니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
[질문]다항회귀의 이해와 다항회귀를 이용한 보스턴 주택가격 예측
안녕하세요. "다항회귀의 이해와 다항회귀를 이용한 보스턴 주택가격 예측" 강의를 듣고 질문이 생겨서 글 남기게 되었습니다. 1. 학습 Data만 보고 다항회귀인지 아닌지 판단여부는 혹시 어떻게 할까요? 다항회귀는 선형회귀. 회귀에서 선형 회귀/비선형 회귀를 나누는 기준은 회귀 계수가 선형/비선형인지에 따른 것이지 독립변수의 선형/비선형 여부와는 무관하다. 라고 말씀해주시긴 했는데 좀 더 설명을 들을 수 있을까요? 2. 다항회귀의 단점은 degree에 따른 오버피팅인데, degree값의 경우 최적의 값을 찾기 위해선 다양한 값들을 통해서 최적의 파라미터를 찾는 것인지 아니면 degree값을 얻기 위한 다른 방법이 있을까요? 3. 다항회귀, degree값데 따라 피처들의 숫자는 매우 늘어남을 확인하였습니다. 그렇다면 만약 기존에 피처들이 너무 많다면(ex) 100개) 다항회귀로 접근하게 되면 피처들이 기하급수적으로 늘어나게 되고, 과적합등의 문제가 많기 때문에 이런 경우 접근을 어떻게 해야할까요? 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
결정트리 질문
안녕하세요. 결정트리 분류 구현 질문드립니다. 4분19초에 있는 그림들을 보면 규칙 노드가 있고 거기에 대한 결정 분류값이 있다고 이해했습니다. 만약 제가 결정트리기반인 모델을 가지고 사용자 특성(ex 나이, 성별, 현재 상태 등)을 가지고 다음에 할 행동을 분류한다고 했을 때, 같은 특성을 가진 사람이라 해도 다음 행동이 다를 수 있다고 생각됩니다. 이럴 때는 결정트리를 사용하면 안되는 것인가요? 음 요약하자면 입력 특징들이 같고 class가 다른 경우 사용할 수 없나요?? 해당 문제를 풀기 위해서 결정 트리로 접근하는 것은 잘못된 방향일까요? ex. input label 남자 21세 치킨먹음 -> 마실 것을 먹음 남자 21세 치킨먹음 -> 손을 씻음 이런 특성을 가지고 가장 높은 확률로 이 행동을 하겠다 하는 것을 예측하고 싶습니다! 옳바른 비교인지 모르겠지만, 뒤에서 본 사용자 행동 인식 데이터에서는 같은 입력과 다른 출력이 있는데도 사용한 것일까요?? 강사님 강의를 보고 너무 좋아서 복습용으로 책도 구매했습니다!! 좋은 강의와 책 만들어주셔서 감사드립니다!ㅎㅎ
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
ValueError: x and y must have same first dimension, but have shapes (53,) and (144,) 와 Input contains NaN, infinity or a value too large for dtype('float64'). 에러 두 가지
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 3장 평가 부분 공부하면서 두 가지 에러가 나서 문의합니다. 개념부분 설명하며 코드 작성할 때는 잘 되었는데, 당뇨병 데이터 가지고 실습 예제하는 중에는 빨갛게 표시된 부분에 해당 에러가 발생합니다. 전체 코드를 올리니 답변 부탁드립니다! ^^ # 분류의 성능 평가지표 - 이진 분류: 긍정/부정과 같은 2개의 결괏값만을 가짐(아래의 성능 지표는 이진 분류에서 특히 중요하게 강조하는 지표임) - 멀티 분류: 여러 개의 결정 클래스 값을 가짐 ## 정확도 accuracy ## 오차행렬 confusion matrix ## 정밀도, 재현율 precision, recall ## F1 score ## ROC AUC ## 1. 정확도 : 실제 데이터에서 예측 데이터가 얼마나 같은지 판단하는 지표 예측 결과가 동일한 데이터 건수/전체 예측 데이터 건수 왜곡이 발생할 수 있음 from sklearn.base import BaseEstimator class MyDummyClassifier(BaseEstimator): # 학습하지 않은 경우에도 높은 확률을 보일 수 있다! 주의!! def fit(self, X, y=None): pass def predict(self, X): pred=np.zeros((X.shape[0], 1)) for i in range(X.shape[0]): if X['Sex'].iloc[i] == 1: pred[i]=0 else: pred[i]=1 return pred import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn import preprocessing titanic_df= pd.read_csv('./train.csv') def encode_features(dataDF): features=['Cabin', 'Sex', 'Embarked'] for feature in features: le = preprocessing.LabelEncoder() le = le.fit(dataDF[feature]) dataDF[feature] = le.transform(dataDF[feature]) return dataDF titanic_df = encode_features(titanic_df) titanic_df.head() def fillna(df): df['Age'].fillna(df['Age'].mean(), inplace=True) df['Cabin'].fillna('N', inplace=True) df['Embarked'].fillna('N', inplace =True) df['Fare'].fillna(0, inplace=True) return df def drop_features(df): df.drop(['PassengerId', 'Name', 'Ticket'], axis=1, inplace=True) return df def format_features(df): df['Cabin'] = df['Cabin'].str[:1] features=['Cabin', 'Sex', 'Embarked'] for feature in features: le = LabelEncoder() le=le.fit(df[feature]) df[feature] = le.transform(df[feature]) return df def transform_features(df): df=fillna(df) df= drop_features(df) df= format_features(df) return df titanic_df = pd.read_csv('./train.csv') y_titanic_df = titanic_df['Survived'] X_titanic_df = titanic_df.drop('Survived', axis=1) X_titanic_df X_titanic_df= transform_features(X_titanic_df) X_titanic_df X_train, X_test, y_train, y_test = train_test_split(X_titanic_df, y_titanic_df, test_size=0.2, random_state=0) myclf= MyDummyClassifier() myclf.fit(X_train, y_train) mypredictions= myclf.predict(X_test) print(accuracy_score(y_test, mypredictions)) from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.base import BaseEstimator from sklearn.metrics import accuracy_score import numpy as np import pandas as pd class MyFakeClassifier(BaseEstimator): def fit(self, X, y): pass def predict(self, X): return np.zeros((len(X), 1), dtype=bool) digits= load_digits() y=(digits.target==7).astype(int)#True라면 astype(int)로 1로 변환, 아니면 False니 0으로 변환 X_train, X_test, y_train, y_test = train_test_split(digits.data, y, random_state=11) print(y_test.shape) print(pd.Series(y_test).value_counts()) fakeclf= MyFakeClassifier() fakeclf.fit(X_train, y_train) fakepred= fakeclf.predict(X_test) print(accuracy_score(y_test, fakepred)) # 따라서 불균형한 lableSets에서는 평가수치로 사용돼서는 안 된다!!!! # 2. 오차행렬 confusion matrix - 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지 함께 보여주는 지표다 - 이진 분류의 예측 오류 얼마인지? + 어떠한 유형의 예측 오류가 발생하고 있는지? - TN FP - FN TP ## 정확도 * (TN+ TP)/(TN+FP+FN+TP) * 불균형한 레이블 세트에서는 * 매우 적은 수의 결과값에 positive를 설정해 1값을 부여하고, 그렇지 않은 경우는 negative로 0값을 부여하는 경우가 많다. ## 정밀도 * TP / (FP+TP) * 예측을 Positive로 한 대상 중 예측과 실제 값이 Positive로 일치한 데이터의 비율 * Positive 예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표 * 양성 예측도 * 언제 중요한가? 실제 nagative 데이터를 positive데이터로 판단하면 안되는 경우 (가짠데 진짜라고 판단하면 안되는 경우) * FP 낮추는 데 초점을 둔다!!!!!! ## 재현율 recalls * TP/(FN+TP) * 실제값이 Positive인 대상 중 * 예측과 실제 값이 Positive로 일치한 데이터의 비율 * 민감도 Sensitivity 또는 TPR True positive rate * 언제 중요하는가? 실제 positive 양성 데이터를 nagative로 잘못 판단하면 안되는 경우 (진짠데 가짜라고 판단하면 안되는 경우) * FN 낮추는데 초점을 둔다!!!!!!!! ### Trade-off - 분류의 결정 임곗값 Threshold를 조정해 정밀도 또는 재현율의 수치를 높일 수 있다. - 그런데 이들은 상호 보완적인 평가 지표라서 어느 한쪽을 강제로 높이면, 다른 하나의 수치는 떨어진다. # 정확도 from sklearn.metrics import confusion_matrix confusion_matrix(y_test, fakepred) # 정밀도, 재현율 from sklearn.metrics import accuracy_score, precision_score, recall_score, confusion_matrix def get_clf_eval(y_test, pred): confusion= confusion_matrix(y_test, pred) accuracy= accuracy_score(y_test, pred) precision= precision_score(y_test, pred) recall= recall_score(y_test, pred) print(confusion) print(f"정확도:{accuracy}, 정밀도:{precision}, 재현율:{recall}") import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression titanic_df = pd.read_csv('./train.csv') y_titanic_df = titanic_df['Survived'] X_titanic_df = titanic_df.drop('Survived', axis=1) X_titanic_df = transform_features(X_titanic_df) X_train, X_test, y_train, y_test = train_test_split(X_titanic_df, y_titanic_df, test_size= 0.20, random_state = 11) lr_clf= LogisticRegression() lr_clf.fit(X_train, y_train) pred = lr_clf.predict(X_test) print(y_test.shape) print(pred.shape) get_clf_eval(y_test, pred) # trade-off # predict_proba() 반환결과: 예측 확률 결과 # predict() 반환 결과: 예측 결과 클래스값 pred_proba = lr_clf.predict_proba(X_test) pred = lr_clf.predict(X_test) print(pred_proba.shape) print(pred_proba[:3]) pred_proba_result = np.concatenate([pred_proba, pred.reshape(-1, 1)], axis=1) print(pred_proba_result[:3]) from sklearn.preprocessing import Binarizer X=[[1, -1, 2], [2,1,4], [2,2,-2]] binarizer= Binarizer(threshold=1.1) print(binarizer.fit_transform(X)) custom_threshold= 0.5 pred_proba_1 = pred_proba[:, 1].reshape(-1,1) binarizer = Binarizer(threshold=custom_threshold).fit(pred_proba_1) custom_predict = binarizer.transform(pred_proba_1) get_clf_eval(y_test, custom_predict) custom_threshold= 0.3 pred_proba_1 = pred_proba[:, 1].reshape(-1,1) binarizer = Binarizer(threshold=custom_threshold).fit(pred_proba_1) custom_predict = binarizer.transform(pred_proba_1) get_clf_eval(y_test, custom_predict) # 잘모르겠는 부분 임곗값에 따라 정밀도와 재현율이 달라지는 이유?가 잘 이해가 안됨! thresholds= [0.4, 0.5, 0.6, 0.7] def get_eval_by_threshold(y_test, pred_proba_c1, thresholds): for custom_threshold in thresholds: binarizer= Binarizer(threshold = custom_threshold).fit(pred_proba_c1) custom_predict= binarizer.transform(pred_proba_c1) print(custom_threshold) get_clf_eval(y_test, custom_predict) get_eval_by_threshold(y_test, pred_proba[:, 1].reshape(-1,1), thresholds) # precision_recall_curve() from sklearn.metrics import precision_recall_curve pred_proba_class1 = lr_clf.predict_proba(X_test)[:,1] precisions, recalls, thresholds = precision_recall_curve(y_test, pred_proba_class1) print(thresholds.shape) thr_index = np.arange(0, thresholds.shape[0], 15) print(thr_index) print(np.round(thresholds[thr_index], 2)) print(f"정밀도{np.round(precisions[thr_index], 3)}") print(f"재현율{np.round(recalls[thr_index], 3)}") import matplotlib.pyplot as plt import matplotlib.ticker as ticker %matplotlib inline def precision_recall_curve_plot(y_test, pred_proba_c1): precision, recalls, threshold = precision_recall_curve(y_test, pred_proba_c1) plt.figure(figsize=(8,6)) threshold_boundary = threshold.shape[0] plt.plot(thresholds, precisions[0:threshold_boundary], linestyle='--', label='precision') plt.plot(thresholds, recalls[0:threshold_boundary], label='recall') start, end = plt.xlim() plt.xticks(np.round(np.arange(start, end, 0.1),2)) plt.xlabel('Threshold value') plt.ylabel('Precision and recall value') plt.legend() plt.grid() plt.show() precision_recall_curve_plot(y_test, lr_clf.predict_proba(X_test)[:, 1]) # F1 스코어 - F1 score는 정밀도와 재현율을 결합한 지표로서 둘이 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐 #F1 score from sklearn.metrics import f1_score f1 = f1_score(y_test, pred) print(f1) def get_clf_eval(y_test, pred): confusion = confusion_matrix(y_test, pred) accuracy = accuracy_score(y_test, pred) precision= precision_score(y_test, pred) recall = recall_score(y_test, pred) f1= f1_score(y_test, pred) print(confusion) print(accuracy, precision, recall, f1) 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) # ROC곡선 - 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표 - Receiver Operation characteristic curve 수신자 판단 곡선 - FPR False Positive Rate 이 변할 때, TPR 재현율=민감도 True Positive Rate이 어떻게 변하는지 나타내는 곡선 - TPR <-> TNR 특이성 Specificity True Negative Rate, - FPR= 1-TNR, 1-특이성 from sklearn.metrics import roc_curve pred_proba_class1 = lr_clf.predict_proba(X_test)[:,1] fprs, tprs, thresholds = roc_curve(y_test, pred_proba_class1) print(thresholds) #thresholds[0]은 max예측확률+1로 임의 설정된다. 이를 제외하기 위해 np.arange는 1부터 시작한다. thr_index=np.arange(1, thresholds.shape[0],5) print(thr_index) print(np.round(thresholds[thr_index],2)) def roc_curve_plot(y_test, pred_proba_c1): fprs, tprs, thrsholds = roc_curve(y_test, pred_proba_c1) plt.plot(fprs, tprs, label = 'ROC') plt.plot([0,1], [0,1], 'k--', label='Random') start, end= plt.xlim() plt.xticks(np.round(np.arange(start, end, 0.1),2)) plt.xlim(0,1) plt.ylim(0,1) plt.xlabel('FPR(1-Sensitivity)') plt.ylabel('TPR(recall)') plt.legend() roc_curve_plot(y_test, pred_proba[:,1]) # AUC - ROC 곡선 자체는 FPR과 TPR의 변화 값을 보는 데 이용하며 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC값으로 결정한다. AUC 값은 ROC 곡선 밑의 면적을 구한 것으로 일반적으로 1에 가까울 수록 좋은 수치다. -Area Under Curve - AUC 수치가 커지려면 FPR이 작은 상태에서 얼마나 큰 TPR을 얻을 수 있느냐가 관건이다. 직사각형에 가까운 곡선! from sklearn.metrics import roc_auc_score pred_proba = lr_clf.predict_proba(X_test)[:,1] roc_score = roc_auc_score(y_test, pred_proba) print(roc_score) def get_clf_eval(y_test, pred=None, pred_proba= None): confusion = confusion_matrix(y_test, pred) accuracy = accuracy_score(y_test, pred) precision= precision_score(y_test, pred) recall = recall_score(y_test, pred) f1= f1_score(y_test, pred) roc_auc= roc_auc_score(y_test, pred_proba) print(confusion) print(accuracy, precision, recall, f1, roc_auc) get_clf_eval(y_test, pred, pred_proba) #prediction about pima inidans diabetes #inline: 브라우저 내부(inline)에 바로 그려지도록 해주는 코드 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score from sklearn.metrics import f1_score, confusion_matrix, precision_recall_curve, roc_curve from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression diabetes_data = pd.read_csv('diabetes.csv') print(diabetes_data['Outcome'].value_counts()) diabetes_data.head(3) diabetes_data.info() X= diabetes_data.iloc[:, :-1] X y= diabetes_data.iloc[:, -1] y X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 156, stratify=y) #stratify(층을 이룬다) : 지정한 Data의 비율을 유지한다. 예를 들어, Label Set인 Y가 25%의 0과 75%의 1로 이루어진 Binary Set일 때, # stratify=Y로 설정하면 나누어진 데이터셋들도 0과 1을 각각 25%, 75%로 유지한 채 분할된다. lr_clf = LogisticRegression() lr_clf.fit(X_train, y_train) pred = lr_clf.predict(X_test) pred_proba = lr_clf.predict_proba(X_test)[:, 1] get_clf_eval(y_test, pred, pred_proba) pred_proba_c1 = lr_clf.predict_proba(X_test)[:, -1] print(pred_proba_c1.shape) print(y_test.shape) precision_recall_curve_plot(y_test, pred_proba_c1) ValueError: x and y must have same first dimension, but have shapes (53,) and (144, diabetes_data.describe() # bins 파라미터는 히스토그램의 가로축 구간의 개수를 지정 # cumulative는 누적히스토그램 plt.hist(diabetes_data['Glucose'], cumulative=False, bins=10) plt.hist(diabetes_data['Glucose'], bins=15) zero_features = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI'] total_count = diabetes_data['Glucose'].count() for feature in zero_features: zero_count = diabetes_data[diabetes_data[feature]==0][feature].count() print(feature) print(zero_count) print(f'{feature}은 0인 데이터 계수가 {zero_count}이므로 퍼센트는 {100*zero_count/total_count}') mean_zero_features=diabetes_data[zero_features].mean() mean_zero_features diabetes_data[zero_features]= diabetes_data[zero_features].replace(0, mean_zero_features) diabetes_data[zero_features].head(10) X=diabetes_data.iloc[:, :-1] y = diabetes_data.iloc[:, -1] scaler=StandardScaler() X_scaled = scaler.fit_transform(X) X_train, X_test, y_train, y_test = train_test_split(X_scaled, 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) pred_proba = lr_clf.predict_proba(X_test)[:, 1] get_clf_eval(y_test, pred, pred_proba) precision_recall_curve_plot(y_test, pred_proba) ValueError: x and y must have same first dimension, but have shapes (53,) and (144,) thresholds=[0.3, 0.33, 0.36, 0.39, 0.42, 0.45] pred_proba = lr_clf.predict_proba(X_test) def get_eval_by_threshold(y_test, pred_proba_c1, thresholds): for custom_threshold in thresholds: binarizer= Binarizer(threshold = custom_threshold).fit(pred_proba_c1) custom_predict= binarizer.transform(pred_proba_c1) print(custom_threshold) get_clf_eval(y_test, custom_predict) 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'). binarizer=Binarizer(threshold=0.48) pred_th_048=binarizer.fit_transform(pred_proba[:, 1].reshape(-1,1)) get_clf_eval(y_test, pred_th_048, pred_proba[:, 1])
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
GridSearchCV 관련 내용문의
안녕하세요. 개정판 책의 내용 중 GridSearchCV에 대해 공부를 하다가 궁금한 점이 생겨 질문 남깁니다. cross_val_score() API는 cross_validation을 할때 Stratified KFold를 사용한다고 말씀해주셨는데, GridSearchCV의 파라미터인 cv에 KFold나 StratifiedKFold를 사용하지 않고 단순 폴딩 개수만 지정한다면 어떤 방식으로 cross_validation을 수행하는지 궁금합니다. 또 하나 질문으로는 cv=KFold or StratifidedKFold를 사용해도 괜찮은지와 유의사항이 있는지도 궁금합니다. 항상 좋은 강의 및 자료에 감사합니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
GridSearchCV 관련 내용문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 개정판 책의 GridSearchCV에 대해서 공부를 하다가 궁금한 점이 생겨 문의 드립니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
혹시 책E북으로는 출간이 안될까요!?
안녕하세요! 해외에서 수강 신청한 학생입니다..^^ 일단 대뜸 강의부터 결제를 했는데... 외국이다보니 도무지 책을 구할 방법이 없네요..ㅠㅠㅠ 혹시 E북으로 출간된거나 온라인교재는 없을까요? 감사합니다..^^
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
StratifiedKFold 에서 iloc 사용 문의드립니다.
안녕하세요, 강의 잘 듣고 있습니다. StratifiedKFold 실습 코드의 아래 부분에서 iloc은 위치 기반 인덱싱이라고 알고 있는데 train_index, test_index가 들어가도 문제 없이 동작하는 이유가 궁금합니다. for train_index, test_index in skf.split(iris_df, iris_df['label']): n_iter += 1 label_train= iris_df['label'].iloc[train_index] label_test= iris_df['label'].iloc[test_index]
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
scale pos weight
안녕하세요. 강의 1분 50초쯤 말씀해주신 scale pos weight가 무엇인지 간략하게라도 혹시 설명해주실 수 있을까요?? 좋은 강의 감사드립니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
스케일링 질문
안녕하세요. 학습할 때 스케일링을 해서 넣는 것 까진 이해했습니다! 제가 궁금한건 학습한 모델을 실 서버에 띄워서 예측 을 한다고 했을 때 입니다. 예를 들어 이미지 같은 경우 이미지 픽셀이 0~255이니까 신경을 쓰지 않아도 될 것 같습니다(MinMaxScaler인 경우 기준이 동일하다고 생각이 됩니다!) StandardScalaer나 이미지가 아닌 MinMaxScaler인 경우 새로운 값이 들어 왔을때 스케일링을 어떻게 하나요? 학습했을 떄 사용한 scaler를 그대로 사용해야 되는 것 아닌가요?? 방법이 따로 있는 것일까요?? 아니면 데이터가 많다고 해도 메모리에 다올려서 Scalar만 매번 따로 다시 계산을 하는건가요?? 좋은 강의 감사드립니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
배깅 질문드립니다!
안녕하세요 강의 1:31분에서 서브세트 #1~N을 100K로 나누시던데 전체가 100K이고 서브세트에 100K로 넣으면 같은 데이터셋으로 전체가 학습하는거 아닌가요...? 항상 좋은 강의 감사드립니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
TF-IDF 질문
안녕하세요. TF-IDF 질문 드립니다! 강의 11분56초 에 나오는 내용 보면 언어 특성상 문장에서 자주 사용될 수 밖에 없는 단어까지 높은 값을 부여한다고 했는데 만약 TF-iDF 벡터화를 사용해서 text classification을 한다고 하면 class에 따라 자주 사용될 수 밖에 없는 단어들이 있을 것이라고 생각됩니다 예를 들어 자동차 사람을 구분한다고 하면 입력되는 문장에서 자동차 라는 키워드가 많이 추출될 것이라 예상됩니다! 이럴 떄는 TF-IDF 벡터화를 사용하지 않고 Count 벡터화를 사용하는게 좋은게 맞나요?? 좋은 강의 감사드립니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
원-핫 인코딩에 대해 질문합니다.
원핫인코딩 파트에서 OneHotEncoder와 pd.get_dummies 방법을 알려주셨습니다. 보았을 때 두 방법이 전자는 최종적으로 ndarray 형태를 반환하고, 후자는 DataFrame 형태를 반환한다는 것 외에는 큰 차이가 없어보입니다. 혹시 두 방법 모두 추후에 머신러닝 알고리즘에 적용하였을 때 문제가 없는 것일까요 ? 그리고 두 방법의 차이점이 있는지 여쭤보고 싶습니다. 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
status_ok 관련질문
안녕하세요. 선생님. hyperopt 패키지 관련하여 궁금한 점이 있어서 질문드립니다. hyperopt 패키지에서 status_ok라는 모듈을 import 하시던데 혹시 해당 모듈의 역할이 무엇인지 궁금합니다. 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
추천 시스템 추가 질문
안녕하세요. 데이터를 보니까 궁금증이 생겼습니다! 데이터를 보니까 시간 데이터가 있던데, 만약 평점이 아니라 영화를 추천한다고 했을 때, 사용자가 보는 순서까지 포함해서 추천을 하려고 하면 어떻게 해야하나요?? 예를 들어 사용자 A 1번째 2번쨰 3번째 4번쨰 a b c d 사용자 B 1번째 2번쨰 3번째 4번쨰 a c b e 이렇게 되어 있고 사용자 C는 1번째 2번쨰 3번째 4번쨰 a b c ? 이렇게 되어있다면 d를 추천하게요 하고싶습니다! 물론 전에 배운 컨텐츠 기반이나 협업으로도 가능해 보이지만 제가 이해하기로는 순서를 포함한 정보를 할 때는 다른 방식으로 사용하는 것 같아서요! 감사합니다!
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
K-fold 교차 검증 질문드립니다.
강의 내에서 교차 검증을 설명해주실 때 크게 학습 데이터 세트와 테스트 데이터 세트로 데이터를 분할하고, 그 중에서도 학습 데이터 세트를 분할하여 학습 데이터 세트와 검증 데이터 세트로 사용한다고 배웠습니다. 하지만 뒤에 실습에서 전체 데이터셋을 학습용과 검증용 테스트로 나누어 교차검증을 수행하였습니다. 이 부분은 설명의 편의를 위해 하신 것일까요?
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
컨텐츠 기반 필터링
안녕하세요. 컨텐츠 기반 필터링을 보면 서버에서 올려 구현하다고하면 메모리에 해당 정보들을 메모리에 올려서 해야되는건가요?? 서버에서 사용한다면 새벽 n시에 메모리에 있는 업데이트를 한다던가(cron job처럼) 하는 작업이 있는걸까요?? 아니면 이런 정보를 위한 DB가 따로 있나요?? 감사합니다.
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
feature의 개수가 많을 때
데이터프레임으로 변환시 columns명을 직접 입력하셨는데 만약에 feature값이 너무 많을 경우는 어떻게 해야하나요 ?? 그리고 원핫인코딩된 데이터도 군집화가 가능한것이 맞나요 ??
- 미해결[개정판] 파이썬 머신러닝 완벽 가이드
예측값에 대한 설명
예측값에 대한 설명 부분에서, 100개의 데이터 X(1, 2, ... 100)이 있다면 예측값(y_pred)은 w0+X(1)w1, w0+X(2)w1, ... w0+X(100)w1 이 되어야하는것 아닌가요?