본문 바로가기

Programming/Machine Learning

iris 품종분류

목표

- 붓꽃의 꽃잎 길이, 꽃잎 너비, 꽃받침 길이, 꽃받침 너비 특징을 활용해 3가지 품종을 분류해보자.

- KNN 모델의 이웃의 숫자를 조절해보자(하이퍼파라미터 튜닝)

from sklearn.datasets import load_iris
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics

iris_data = load_iris()
iris_data

iris_data.keys()

iris_data['data']

iris_data['target']

iris_data['target_names']

print(iris_data['DESCR'])

iris_data['feature_names']

 

데이터 셋 구성하기

- 문제와 답 분리

- 훈련세트와 평가세트 분리

iris_df = pd.DataFrame(iris_data['data'], columns=iris_data['feature_names'])
iris_df.head(8)

X = iris_df
y = iris_data['target']

X_train,X_test,y_train,y_test=train_test_split(X,y,
                                              test_size=0.3,
                                              random_state = 65)
X_train

 

EDA

pd.plotting.scatter_matrix(iris_df,
                          figsize=(15,15),
                          marker='^',
                          c=y,
                          alpha = 1)

 

모델링

model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train,y_train)
pre = model.predict(X_test)
metrics.accuracy_score(pre, y_test)
model.score(X_test,y_test)

 

하이퍼파라미터 튜닝

test_list = []
train_list = []
for k in range(1,105,2):
    m = KNeighborsClassifier(n_neighbors=k)
    m.fit(X_train, y_train)
    
    test_pre = m.predict(X_test)
    test_score = metrics.accuracy_score(test_pre,y_test)
    test_list.append(test_score)
    
    train_pre = m.predict(X_train)
    train_score = metrics.accuracy_score(train_pre,y_train)
    train_list.append(train_score)
    # print(k,":",test_score)
    
plt.figure(figsize=(10,10))
plt.plot(range(1,105,2), train_list, label='train')
plt.plot(range(1,105,2), test_list, label='test')
plt.legend()
plt.show()

'Programming > Machine Learning' 카테고리의 다른 글

타이타닉 생존자 예측 분석  (0) 2020.02.17
버섯데이터 분류  (0) 2020.02.17
BMI 학습하기  (0) 2020.02.16
서울시 구별 CCTV 현황 분석  (0) 2020.02.16
Matplotlib교통사고데이터실습  (0) 2020.02.16