728x90
머신러닝 지도 학습(Supervised Learning) Classification 분류 문제

 

# 필요한 패키지 불러오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn
import warnings
warnings.filterwarnings('ignore')

# iris 데이터 불러오기
from sklearn.datasets import load_iris
iris = load_iris()

# Description을 확인해 보자
print(iris.DESCR)

>>

# 변수에 저장하기
data = iris.data
label = iris.target
columns = iris.feature_names

# Dataframe  만들기
data = pd.DataFrame(data, columns=columns)
data.head()
>>

 
# 데이터의 크기를 확인해 보자
data.shape
>> (150, 4)

# 데이터 준비하기
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    data,
    label,
    test_size=0.2, random_state=2022) 

# Logistic Regression으로 모델을 만들어 보자.
# Logistic Regression 불러오기 - 분류 문제에 사용

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()

# 학습시키기
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)

# 이전엔 R2 결정계수였다면 여기에서는 accuracy score. 오차가 아니라 정확도를 본다.
from sklearn.metrics import accuracy_score

# 테스트용 데이터의 실제값, 예측값
print('로지스틱 회귀, 정확도: {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 로지스틱 회귀, 정확도: 0.97

97% 정확도의 모델을 만들었다.


이번엔 Support Vecor Machine으로 모델을 만들어 보자.  
 
 
 
 
# Support Vecor Machine 불러오기
from sklearn.svm import SVC
svc = SVC()

# 학습시키기
svc.fit(X_train, y_train)
y_pred = svc.predict(X_test)
print('서포트 벡터 머신, 정확도: {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 서포트 벡터 머신, 정확도: 0.97
정확도 97%의 모델을 만들었다.
# 이번엔 C값(parameter)을 줘 보자. 정확도 조절
from sklearn.svm import SVC
svc = SVC(C=100)

# 다시 학습시키기
svc.fit(X_train, y_train)
y_pred = svc.predict(X_test)
print('서포트 벡터 머신, 정확도: {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 서포트 벡터 머신, 정확도: 0.93​
93% 정확도로 위의 것보다 더 안 좋게 나왔다.

이번엔 Decision Tree로 모델을 만들어 보자.
 
# Decision Tree 불러오기
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(max_depth=5)

# 학습시키기
dt.fit(X_train, y_train)
y_pred = dt.predict(X_test)
print('결정 트리, 정확도 {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 결정 트리, 정확도 0.97

정확도 97%인 Decision Tree 모델을 만들었다.

 

 

이번엔 Random Forest로 모델을 만들어 보자.

 

# Random Forest 불러오기
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(max_depth=5)

# 학습시키기
rf.fit(X_train, y_train)
y_pred = rf.predict(X_test)
print('랜덤 포레스트, 정확도 {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 랜덤 포레스트, 정확도 0.93
 
정확도 93%인 Random Forest 모델을 만들었다.
728x90

+ Recent posts