[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] iris 데이터셋 사용 예제

inu 2020. 7. 20. 22:08
반응형

데이터 판단

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

df = sns.load_dataset('iris')
df
==결과==
     sepal_length  sepal_width  petal_length  petal_width    species
0             5.1          3.5           1.4          0.2     setosa
1             4.9          3.0           1.4          0.2     setosa
2             4.7          3.2           1.3          0.2     setosa
3             4.6          3.1           1.5          0.2     setosa
4             5.0          3.6           1.4          0.2     setosa
..            ...          ...           ...          ...        ...
145           6.7          3.0           5.2          2.3  virginica
146           6.3          2.5           5.0          1.9  virginica
147           6.5          3.0           5.2          2.0  virginica
148           6.2          3.4           5.4          2.3  virginica
149           5.9          3.0           5.1          1.8  virginica

[150 rows x 5 columns]
  • seaborn 내장에서 iris 데이터셋을 불러온다.
  • 예제를 위해 만들어진 데이터이기 때문에 퀄리티가 상당히 우수하다.
sns.pairplot(df, diag_kind='kde', hue='species')
plt.show()

  • seaborn의 pairplot 함수를 활용하면 산점도행렬을 그릴 수 있다.
  • diag_kind : 대각선 원소(x축과 y축이 겹칠 경우) 그릴 그래프
  • hue : 카테고리 구분 컬럼

데이터 정의

X = df.iloc[:, :4]
y = df.iloc[:, -1]
  • 독립변수와 종속변수를 X와 y로 나눈다.
  • 우리는 sepal_length, sepal_width, petal_length, petal_width를 기반으로 species를 분류할 것이다.

학습 데이터와 테스트 데이터 나누기

from sklearn.model_selection import train_test_split

X_tratin, X_test, y_train, y_test = train_test_split(X, y, stratify=df.species, random_state = 0)
X_tratin.shape , X_test.shape , y_train.shape, y_test.shape
  • sklearn의 train_test_split을 사용해 학습 데이터와 테스트 데이터를 나눈다.
  • stratify는 학습 데이터와 테스트 데이터에 대해 지정한 칼럼 데이터의 비율을 유지하도록 한다. 해당 코드에서는 species를 stratify로 주었으므로, 세 종류의 데이터 비율이 전체 데이터와 동일한 비율로 학습데이터와 테스트데이터에 할당된다.
  • random_state 값을 주어 주어진 데이터가 랜덤하게 배분되도록 한다.

분류기 초기화 및 학습

from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(n_neighbors=1)
model.fit(X_tratin, y_train)
  • KNeighborsClassifier함수를 사용해 n_neighbors값이 1인 모델(분류기)를 만든다.
  • 그리고 fit메소드에 학습 데이터를 넣어 학습을 진행한다.

테스트

from sklearn import metrics

pre = model.predict(X_test)
ac_score = metrics.accuracy_score(y_test, pre)
print("정답률:", ac_score)
==결과===
정답률: 0.9736842105263158
  • predict에 테스트 데이터를 넣어 결과값 pre를 얻는다.
  • 그리고 해당 값을 테스트 데이터 정답(데이터에서 얻은)과 함께 metrics.accurancy_score 메소드에 넣어 정확도를 확인한다.
반응형