본문 바로가기

Python/Scikit-learn7

[Python] 성능 측정 지표 :: MAE, MSE, RMSE, MAPE, MPE, MSLE 1. MAE (Mean Absolute Error) - 실제 값과 예측 값의 차이(Error)를 절대값으로 변환해 평균화 - MAE는 에러에 절대값을 취하기 때문에 에러의 크기 그대로 반영된다. 그러므로 예측 결과물의 에러가 10이 나온 것이 5로 나온 것보다 2배가 나쁜 도메인에서 쓰기 적합한 산식이다. - 에러에 따른 손실이 선형적으로 올라갈 때 적합하다. - 이상치가 많을 때 from sklearn.metrics import mean_absolute_error mean_absolute_error(y_test, y_pred) 2. MSE (Mean Squared Error) - 실제 값과 예측 값의 차이를 제곱해 평균화 - 예측값과 실제값 차이의 면적의 합 - 특이값이 존재하면 수치가 많이 늘어난다... 2020. 12. 12.
[Python] 데이터 스케일링 :: 표준화(Standardization) 데이터의 모든 특성의 범위를 같게 만들어주는 방법 교차검증을 위해 Train-Test로 분리하였을 경우 전체 데이터가 아닌 훈련 데이터에 대해서만 fit()을 적용해야한다. 1. StandardScaler - 평균 = 0 / 표준편차 = 1 - 표준화 Standardization from sklearn.preprocessing import StandardScaler # Standardization 평균 0 / 분산 1 scaler = StandardScaler() scaler = scaler.fit_transform(data) # 교차검증시 scaler.fit(X_train) X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) 2... 2020. 12. 7.
[Python] 홀드아웃 :: train_test_split 홀드아웃 - 모델의 성능을 측정하고자 할 때 학습할 때 사용한 데이터로 검증하지 않기 위해 train-test 데이터를 분리한다. - 데이터를 랜덤하게 두 분류로 분리하여 교차검증을 실시 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 100) - test_size = 테스트 사이즈의 크기 > 0.3일 경우 train:test = 7:3 Preference 2020. 9. 25.
[Python] 오분류표 Confusion Matrix :: 분류(Classification) 모형 평가 오분류표(confusion matrix) from sklearn.metrics import confusion_matrix, classification_report, accuracy_score y_pred = y_pred = model.predict(X_test) # 분류결과표 - 정답 : 행 / 예측 : 열 confusion_matrix(y_pred, y_test) # 오분류표 classification_report(y_pred, y_test) # 분류정확도 accuracy_score(y_pred, y_test) - 분류 분석 모형의 평가 실제값 \ 예측치 True False 합계 True TP(True Positive) FN(False Negative) P False FP(False Positive) .. 2020. 9. 14.
[Scikit-learn] LabelEncoder() :: Labelling 머신러닝에서 모델링을 할 때 문자로 이루어진 데이터를 숫자로 바꿔줘야할 경우가 있다. 이때 Scikit-learn의 LabelEncder를 사용하여 범주형 데이터를 손쉽게 숫자형 데이터로 labelling 할 수 있다. fruit = pd.DataFrame({'name':['apple', 'banana', 'cherry', 'durian'], 'color':['red', 'yellow', 'red', 'green']}) fruit fruit이라는 예시데이터를 생성하였다. from sklearn.preprocessing import LabelEncoder le = LabelEncoder() le.fit(fruit['name']) fruit['name'] = le.transform(fruit['name']).. 2019. 11. 20.
[Scikit-learn] ImportError: cannot import name 'CategoricalEncoder' 아무리 또박또박 써도, 재차 확인해도 해결되지 않는 cannot import name 'CategoricalEncoder' 있는 그대로 복사해와도 실행되지 않는다. https://github.com/scikit-learn/scikit-learn/issues/14402 ImportError: cannot import name 'CategoricalEncoder' from 'sklearn.preprocessing' · Issue #14402 · scikit-learn/scikit-learn Hello, This class was to be available as from 0.20. I'm on 0.21.2. github.com 이유는 간단했다. 제작자가 만들어놓고 배포/업데이트(release)하지 않아서 실.. 2019. 11. 20.
[scikit-learn] LabelEncoder / 범주형 데이터 변환 scikit-learn을 이용해 범주형 데이터를 쉽게 수치형 데이터로 바꿀 수 있다. 0과 1로 이루어진 다수의 열을 만드는 one-hot encoder와 달리 label encoder는 하나의 열에 서로 다른 숫자를 입력해준다. One-Hot Encoder 과일 딸기 1 0 0 사과 0 1 0 바나나 0 0 0 Label Encoder 과일 딸기 1 사과 2 바나나 3 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() le = le.fit(train['col']) #train['col']을 fit train['col'] = le.transform(train['col']) #train['col']에 따라 encoding test['co.. 2019. 11. 13.