왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • matplotlib
  • labelme
  • PIL
  • imageprocessing
  • numpy
  • TensorFlow
  • OpenCV
  • ComputerVision
  • 컴퓨터비전
  • 비지도학습
  • encoding='utf-8'
  • UnboundLocalError
  • maskimage
  • alibidetect
  • 영상처리
  • yolov8
  • 기상탐사
  • tune()
  • get_long_description
  • 영상처리역사
  • pip install labelme
  • unsupervised
  • pytorch
  • labelme UnocodeDecodeError
  • alibi-detection
  • 영상기술
  • 의료이미징
  • ckpt_file
  • PYTHON
  • 딥러닝

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성
인공지능/머신러닝

머신 러닝 : Logistic Regression , Confusion Matrix

머신 러닝 : Logistic Regression , Confusion Matrix
인공지능/머신러닝

머신 러닝 : Logistic Regression , Confusion Matrix

2022. 12. 2. 11:44
728x90

Logistic Regression :

분류에 사용한다. (Classification)

예) 나이대별로 이메일을 클릭해서 열지 말지를 분류해 보자.

 

이렇게 비슷하게 생긴 함수가 이미존재한다. 이름은 sigmoid function

따라서 리니어 리그레션 식을, y 값을 시그모이드에 대입해서, 일차방정식으로 만들면 다음과 같아진다.

위와 같은 식을 가진 regression 을, Logistic Regression이라 한다.

 

이제 우리는, 이를 가지고 두개의 클래스로 분류할 수 있다. ( 클릭을 한다, 안한다 두개로.)

 

 

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

우선 필요한 라이브러리들을 import 해줍니다.

데이터 프레임을 확인한 후,

 

1. NaN 확인

df.isna().sum()

2. X와 y로 분리

X=df.loc[:,'Age':'EstimatedSalary']
y=df['Purchased']

 

3. 로지스틱 리그레션은 피처스케일링을 해줘야 한다. / 모델링 과정

from sklearn.preprocessing import MinMaxScaler
scaler_X = MinMaxScaler()
X=scaler_X.fit_transform(X)

#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.25,random_state=3)

#모델링,분류의 문젱이므로 분류의 문제 해결할수 있는 인공지능으로 모델링한다

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state=3)
classifier.fit(X_train,y_train)

#성능 평가 테스트한다
y_pred = classifier.predict(X_test)

# 0과 1로 분류하는 문제
# 따라서 y_test 값도 0과 1, y_pred 값도 0과 1

# y_test의 0과 1은 행으로 셋팅하고, y_pred의 0과 1은 열로 셋팅합니다.

cm=confusion_matrix(y_test,y_pred)

 

from sklearn.metrics import accuracy_score # 정확도를 계산해주는 라이브러리 임포트
accuracy_score(y_test,y_pred)

 

from sklearn.metrics import classification_report
print(classification_report(y_test,y_pred))

 

 

아래는 테스트 데이터로 나온 예측 결과를 나타낸 것입니다.
Confusion Matrix 와 같습니다.

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()

'인공지능 > 머신러닝' 카테고리의 다른 글

머신 러닝 : KNN알고리즘 (K-Nearest Neighbor)  (0) 2022.12.02
머신 러닝 : Logistic Regression up sampling기법 imblearn.over_sampling SMOTE  (0) 2022.12.02
머신러닝 : Multiple Linear Regression  (0) 2022.12.01
머신러닝 : Linear Regression  (0) 2022.12.01
머신 러닝 : Training / Test set , 트레이닝 용 / 테스트 용 데이터 나누기 train_test_split()  (0) 2022.12.01
  • 분류에 사용한다. (Classification)
  • 이렇게 비슷하게 생긴 함수가 이미존재한다. 이름은 sigmoid function
  • 따라서 리니어 리그레션 식을, y 값을 시그모이드에 대입해서, 일차방정식으로 만들면 다음과 같아진다.
  • 이제 우리는, 이를 가지고 두개의 클래스로 분류할 수 있다. ( 클릭을 한다, 안한다 두개로.)
'인공지능/머신러닝' 카테고리의 다른 글
  • 머신 러닝 : KNN알고리즘 (K-Nearest Neighbor)
  • 머신 러닝 : Logistic Regression up sampling기법 imblearn.over_sampling SMOTE
  • 머신러닝 : Multiple Linear Regression
  • 머신러닝 : Linear Regression
왕현성
왕현성
AI 머신비전 학습일지

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.