레이블이 datascience인 게시물을 표시합니다. 모든 게시물 표시
레이블이 datascience인 게시물을 표시합니다. 모든 게시물 표시

2023년 2월 26일 일요일

MinMaxScaler의 사용 0~1 -> ? ~ ?

sklearn 의 MinMaxScaler 는 0~1 사이의 값으로 Scale 변환해주는 Scaler라고 많이들 알고 있습니다.

그런데 간혹 아주 간혹 범위가 0~1사이가 아닌 특별한 값으로 변형하고자 할때가 있습니다. 예를 들어 -100~100 사이로 변환하고 싶은 경우가 있습니다.

MinMaxScaler 를 사용하고 나서 비례식으로 다시 범위를 곱하거나 빼주는 방법도 생각 해볼 수 있습니다. 연산식은 sklearn 에서 찾을 수 있습니다.

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

위와 같은 방법으로 변환이 가능도 하지만 이미 sklearn에서 준비가 되어 있습니다.

class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True, clip=False)[source]

지금 까지 아무 생각도 없이 해당 함수를 사용했었는데요. feature_range 인자로 사용이 가능합니다.

다음은 예제입니다. sample data는 sklearn 에 기본으로 있는 iris 데이터를 이용하였습니다.



기본으로 인자가 없을때 예제 0~1 사이 scaler로 동작합니다.


다음은 -100~100 범위의 MinMax Scaler 예제입니다.




2023년 2월 19일 일요일

AUC(Area Under the ROC curve) 계산하기, roc_auc_score 사용하기 주의점

AUC란

AUC(Area Under the ROC curve)란  ROC Curve(Receiver-Operating Characteristic curve)의 아래 면적을 나타내는 수치로 분류 모델(분류기)의 성능을 나타내는 지표로 사용됩니다.


ROC란

ROC curve는 1-특이도(False Positive Rate, FPR, 거짓 긍정률)와 민감도(True Positive Rate, TPR, 참 긍정률)을 각각 x축, y축에 나타낸 그래프입니다. 



TPR 계산식

sensitivityrecallhit rate, or true positive rate (TPR)

FPR 계산식

fall-out or false positive rate (FPR)


FP, FP, TN, TP 값은 모두 confusion_matrix 를 통해서 구할 수 있습니다. 

sklearn 을 통해서 계산이 가능합니다.

sklearn.metrics.roc_auc_score — scikit-learn 1.2.1 documentation

sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)[source]

그런데 여기를 인자를 보면 y_score 를 넣도록 되어 있습니다. 그래서 테스트 해보았습니다.


sklearn에서 결과가 다르게 나옵니다. document 상에 나와있는 predict_proba를 사용해줘야 제대로된 결과 값을 받을 수 있습니다.