- 사용 데이터셋 : iris
- 사용 모델 : KNN 알고리즘
In [1]:
# 아이리스 데이터셋 로드
from sklearn.datasets import load_iris
# 데이터셋 선언
# 붓꽃의 데이터셋을 사용
iris_dataset = load_iris()
In [2]:
# 특성 확인
print("iris_dataset의 키 : {}".format(iris_dataset.keys()))
In [3]:
# 데이터셋의 정보
print(iris_dataset['DESCR'][:193]+"\n...")
In [4]:
# 특성의 값 정보 확인
print("타깃의 이름 : {}".format(iris_dataset['target_names']))
# 특성 정보 단위
print("특성의 이름 : {}".format(iris_dataset['feature_names']))
# data타입 출력
print("data의 타입 : {}".format(type(iris_dataset['data'])))
# 데이터셋 크기 확인
print("data의 크기 : {}".format(iris_dataset['data'].shape))
In [5]:
# Iris 데이터셋 첫 5행만 출력
print("data의 처음 다섯 행 : \n{}".format(iris_dataset['data'][:5]))
In [6]:
print("target의 타입 : {}".format(type(iris_dataset['target'])))
print("target의 크기 : {}".format(iris_dataset['target'].shape))
print("타깃 : \n{}".format(iris_dataset['target']))
In [7]:
from sklearn.model_selection import train_test_split
# 분류 모델을 사용하기 위한 train, test 데이터셋을 랜덤으로 추출
# x가 되는 독립변수 : ['data']
# y가 되는 종속변수 : ['target]
x_train, x_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
In [8]:
print("x_train 크기 : {}".format(x_train.shape))
print("y_train 크기 : {}".format(y_train.shape))
x_train[:5]
Out[8]:
In [9]:
print("x_test 크기 : {}".format(x_test.shape))
print("y_test 크기 : {}".format(y_test.shape))
x_test[:5]
Out[9]:
In [10]:
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import mglearn
# x_train 데이터를 사용해서 데이터프레임을 생성
# 열의 이름은 iris_dataset.feature_names에 있는 문자열을 사용
iris_dataframe = pd.DataFrame(x_train, columns=iris_dataset.feature_names)
# 상관관계 출력
pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15,15), marker='o', hist_kwds={'bins':20}, s=60, alpha=.8, cmap=mglearn.cm3)
Out[10]:
In [11]:
# KNN 분류 모델을 위한 라이브러리 선언
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
# 피팅시킬 K의 값을 5로 선언
knn = KNeighborsClassifier(n_neighbors = 5)
In [12]:
# 위에서 선언한 KNN모델에 각 train데이터셋을 피팅
knn.fit(x_train, y_train)
Out[12]:
In [13]:
# 분류를 하기 위한 임의의 새로운 데이터 선언
x_new = np.array([[5, 2.9, 1, 0.2]])
print("X_new.shape : {}".format(x_new.shape))
In [14]:
# 새로운 데이터를 이용해 예측
prediction = knn.predict(x_new)
print("예측 : {}".format(prediction))
print("예측한 타깃의 이름 : {}".format(iris_dataset['target_names'][prediction]))
In [15]:
# 랜덤으로 선언된 test 데이터셋을 이용해 예측 시작
y_pred = knn.predict(x_test)
print("테스트 셋의 대한 예측값 : \n{}".format(y_pred))
print("{}".format(y_pred.shape))
In [16]:
print("테스트 셋의 정확도 : {:.2f}".format(np.mean(y_pred == y_test)))
print("테스트 셋의 정확도 : {:.2f}".format(knn.score(x_test, y_test)))
'Python > 빅데이터분석' 카테고리의 다른 글
RandomForest (0) | 2019.06.23 |
---|---|
SVC - Support Vector Classification (0) | 2019.06.23 |
Regression, Tree (0) | 2019.06.23 |
LinearRegression, DecisionTreeRegression (0) | 2019.06.23 |
LinearRegression, Ridge, Lasso 알고리즘 (0) | 2019.05.27 |