본문 바로가기

Python notes118

분류 결과 평가지표, AUC(Area Under the ROC Curve)와 Gini coefficient 비교 #1. 분류 결과 평가지표인 AUC, Gini coefficient 머신러닝을 통해 분류 결과를 예측했을 때 예측한 값과 실제 값을 비교해서 예측 결과를 평가한다. 그 중에서도 결과가 0과 1 두 개의 클래스로 분류되는 경우를 평가할 때 평가지표로 ROC curve, AUC, Gini coefficient를 사용할 수 있다. 클래스가 세개 이상인 경우일지라도 이진형태로 타겟 데이터를 변환하면 (scikit learn의 OneVsRestClassifier를 사용) 0과 1,2,3을 분류해내는 성능 혹은 1과 0,2,3을 분류해내는 성능을 위의 평가지표로 평가할 수 있다. #2. AUC ? (+ROC curve) ROC curve는 Receiver Operating Characteristics curve로서.. 2022. 11. 22.
Python Errors) ValueError: endog must be in the unit interval. 에러 해결 #1. statsmodels로 Logistic Regression을 하고 있었는데 만난 또 다른 에러... ValueError: endog must be in the unit interval 에러 내용을 살펴 보니, 값에 문제가 있어서 나는 ValueError이고, endog가 단위 간격에 있어야 한다고 했다. 이게 무슨 말일까. 여튼 데이터 값 중에 문제가 있는 것 같은데 이 상태로는 fitting을 할 수 없었다. 희한한 점은 sklearn의 LogisticRegression에서는 에러가 나지 않았다. #2. 문제 해결 ! 알고보니, statsmodels의 로지스틱 회귀의 경우 타겟 클래스 값이 0과 1로만 입력이 되어야 한다고 한다. 내 데이터에서의 y값은 1과 2로 되어 있었다. 그래서 1을 0으.. 2022. 9. 16.
Python Errors) LinAlgError: Singular matrix 에러 해결 #1. statsmodels로 Logistic regression을 적합하는 중에 만난 에러이다. LinAlgError: Singular matrix LinAlgError는 뭔가 축약어 같은데 뭔지 모르겠지만, 그 뒤에 있는 Singular matrix는 찾아보니 특이행렬이라고 한다. 역행렬이 없는 행렬을 특이행렬이라고 했다. 내가 Logit 적합을 위해 입력한 X 데이터들 중에 특이행렬이 포함된 모양이다. 특이행렬에 대해서 조금 더 찾아보니 데이터 값이 0으로만 구성된 행렬을 말하는 것 같다. 과연, X 데이터들을 살펴보니 몇몇 feature들이 0으로만 구성되어 있었다. #2. 문제 해결! 데이터 사이즈를 좀 더 키워서 0과 1의 클래스가 있도록 특이행렬 feature들의 데이터를 조정하고 다시 Lo.. 2022. 9. 16.
Python errors) TypeError: No loop matching the specified signature and casting was found for ufunc add 해결 1. 클러스터 별로 어떤 특징을 가지는지 확인 하는 와중에 TypeError를 만났다. TypeError: No loop matching the specified signature and casting was found for ufunc add 정확한 해석이 되지는 않는 에러긴 하지만, 데이터 타입에 문제가 있는 듯 했고, 데이터가 사용하려는 함수와 매칭이 되지 않는 것으로 보였다. Type error 화면은 아래와 같았다. pairplot이 그려지다가 말았다. 2. 알고보니, 역시나 데이터 타입에 문제가 있었다. dsr이라는 데이터프레임에서 work_year는 데이터의 연도인데 category로 지정을 안했더니 seaborn에서 수치형 데이터로 인식하고 pairplot안에 포함을 시킨 것이었다. 그런데.. 2022. 8. 25.
Python Errors) 시계열 분해 STL의 TypeError 해결하기, TypeError: PeriodIndex given. Check the 'freq' attribute instead of using infer_freq. 1. statsmodels의 STL 함수를 사용해서 시계열 데이터 분해를 하고 있다가 아래의 에러를 만났다. TypeError: PeriodIndex given. Check the 'freq' attribute instead of using infer_freq. 에러메시지를 해석해 보면, PeriodIndex가 주어졌으니, 추측 빈도를 사용하는 대신에 '빈도' 속성을 확인해 봐라. 라고 한다. 알고보니 시계열 데이터 초기 셋팅 때 날짜 인덱스를 .to_period()로 해서 PeriodIndex로 셋팅했던 것이 기억이 났다. 2. 에러를 해결하려면? Period Index를 Datetime Index로 변경하면 된다 !! 날짜 인덱스를 기반으로 시계열 데이터의 산술적 처리를 하기 위해서는 인덱스가 꼭 D.. 2022. 8. 24.