반응형
이전 글에서 학습시킨 로지스틱 회귀 모델 인공지능의 데이터를 기반으로 작성되었습니다.
이전 글 확인하기 : https://luvris2.tistory.com/48
분류 결과표(Confusion Matrix)
- 실제값과 예측값이 일치하는지 갯수로 센 결과를 표로 나타낸 것
- 실제값은 행(row)에 표시, 예측값은 열(column)에 표시
- 0과 1의 이진 분류의 경우에는 양성(Positive)와 음성(Negative)로 표시
- 이진 분류 결과표(Binary Confusion Matrix)
이진 분류 결과표(Binary Confusion Matrix)
- 정확도(Accuracy) : 전체 건 수에서 예측 적중률
- (A+B) / TOTAL
- 정밀도(Precision) : 예측 불량 건 수에서 예측 적중률
- D / (B+D)
- 재현율(Recall) : 실사기 건 수에서 예측 적중률
- D / (C+D)
- 정밀도(Precision) : 예측 사기 건 수에서 실사기 건 수 비율
- D / (B+D)
분류결과표 라이브러리 호출
from sklearn.metrics import confusion_matrix
# 인공지능 성능 검사를 위한 라이브러리
from sklearn.metrics import accuracy_score
# 인공지능 성능 정확도 확인을 위한 라이브러리
from sklearn.metrics import classification_report
# 평가 지표를 확인 할 수 있는 라이브러리
인공지능 성능 검사, 분류 결과표 보기
<로지스틱 회귀 모델로 인공지능 학습하여 예측한 데이터>
- 분류 결과표 표시 (confusion_matrix)
- from sklearn.metrics import confusion_matrix 호출
- confusion_matrix(실제값, 예측값)
- 인공지능의 예측 정확도 계산 (accuracy_score)
- from sklearn.metrics import accuracy_score 호출
- accuracy_score(실제값, 예측값)
- 61과 23의 값은 위의 분류 결과표 참조
- 인공지능 평가 지표 보기
- from sklearn.metrics import classification_report 호출
- classification_report(실제값, 예측값)
- 정밀도(Precision), 적중률(Recall)
- 인공지능 성능 정확도에 대한 보완 평가 지표(f1-score(조화평균지표))
- 학습에 사용되었던 실제값(support)
인공지능 학습 결과 시각화 하기
- 테스트 데이터로 예측한 결과 값 그래프화
# 테스트 결과 시각화
# 아래는, 테스트 데이터로 나온 예측 결과를 나타낸 것이다. Confusion Matrix 와 같다.
from matplotlib.colors import ListedColormap
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.figure(figsize=[10,7])
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Classifier (Test set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()
- 학습에 사용된 데이터를 그래프화
# 학습 데이터 결과 시각화
from matplotlib.colors import ListedColormap
X_set, y_set = X_train, y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.figure(figsize=[10,7])
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Logistic Regression (Training set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()
- 분류 결과표 그래프화
신규 고객의 구매 여부 예측해보기
- 연봉 27500 달러, 나이 34살
1. 새로운 데이터 생성
2. 인공지능이 학습 할 수 있게 2차원 배열로 변경
3. 피처 스케일링 진행
- 주의 : 인공지능을 만들때 사용한 인코더 사용
- 결과 값이 실수형이기 때문에 형변환을 하지 않아도 됨
4. 구매 예측(예측값) 확인
- classifier : 이전 글에서 만들어두었던 로지스틱 회귀 인공지능 모델
- predict : 결과를 예측하는 함수, 즉 인공지능에게 예측값 묻기
- 결과값 0 : 구매하지 않는다고 예측
반응형