- 
                            
                            [scikit-learn] Iris 데이터를 이용한 머신러닝_KNNAI 2020. 2. 20. 23:47scikit-learn(사이킷런) 사이킷런이란?- 파이썬을 이용한 머신러닝 라이브러리 중 하나로, 분류, 회귀, 군집화 등 다양한 머신러닝 알고리즘 함수를 제공한다.
 설치 pip install scikit-learn설치 확인 import sklearn sklearn.__version__Iris 데이터 - 사이킷런에는 내장된 데이터가 몇가지 있다.
- 그중 하나로 Iris(붓꽃)에 관한 데이터가 있다.
- 이를 이용해서 사이킷런의 사용법에 대해 공부를 해보자.
 Iris 데이터 불러오기 from sklearn.datasets import load_irisIris 데이터 확인해보기 - Iris 데이터를 변수에 할당한 후 데이터의 key와 value를 확인해보기
 iris_dataset = load_iris() print(f"iris_dataset key: {iris_dataset.keys()}")iris_dataset key: dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename']) - Iris 데이터를 자세히 알아보기 위해서 key를 이용해서 value를 확인해보자.
- 이렇게 무언가를 하기 전 데이터에 대해 자세히 알아보는 것은 중요하다.
 Iris 데이터의 value 확인해보기 print(iris_dataset['data']) print(f"shape of data: {iris_dataset['data'].shape}") print(iris_dataset['feature_names']) print(iris_dataset['target']) print(iris_dataset['target_names']) print(iris_dataset['DESCR'])사이킷런을 이용한 데이터 분리하기 from sklearn.model_selection import train_test_split train_input, test_input, train_label, test_label = train_test_split( iris_dataset['data'], iris_dataset['target'], test_size=0.25, random_state=42 )- train_test_split() 함수의 인자로
- 나누고 싶은 데이터를 넣기(데이터값, 타겟값)
- 평가 데이터의 크기 설정(test_size)
- 무작위로 데이터가 선택되는 것을 제어(random_state)
 분리된 데이터 확인하기 print(f"shape of train_input: {train_input.shape}") print(f"shape of test_input: {test_input.shape}") print(f"shape of train_label: {train_label.shape}") print(f"shape of test_label: {test_label.shape}")shape of train_input: (112, 4) 
 shape of test_input: (38, 4)
 shape of train_label: (112,)
 shape of test_label: (38,)지금까지 데이터에 대해 알아보았다. 이제 사이킷런을 이용한 지도학습을 해보자 여러 지도학습 중에서 여기서는 KNN을 사용해 봤다. K-nearest neighbor classifier(k-최근접 이웃 분류기)- 예측하고자 하는 데이터에 대해 가장 가까운 거리에 있는 데이터의 라벨과 같다고 예측하는 방법
- k 값은 예측하고자 하는 데이터와 가까운 몇 개의 데이터를 참고할 것인지를 의미한다.
 사이킷런의 KNN 불러오기 from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1)- 여기서 n_neighbors는 k 값을 의미하는 것으로 1의 값을 주었다.
 생성한 분류기에 학습 데이터를 적용하기 knn.fit(train_input, train_label)KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', 
 metric_params=None, n_jobs=None, n_neighbors=1, p=2,
 weights='uniform')평가데이터를 이용해서 결과 라벨값을 예측해보기 predict_label = knn.predict(test_input) print(predict_label)정확도 확인하기 import numpy as np print(f"test accuracy: {np.mean(predict_label == test_label)}")- 마지막으로 예측을 통해 나온 라벨값과 실제 라벨값을 비교해서 예측이 얼마나 정확히 되었는지 확인해본다.
 
 참고 텐서플로와 머신러닝으로 시작하는 자연어 처리_위키북스 책 github: https://github.com/NLP-kr/tensorflow-ml-nlp my github: https://github.com/Lagom92/TIL/blob/master/AI/scikit-learn.ipynb 'AI' 카테고리의 다른 글교차 검증(Cross validation) (0) 2020.08.21 [scikit-learn] Iris 데이터를 이용한 머신러닝_Kmeans (0) 2020.02.25 파이썬으로 xlsx 파일과 csv 파일 다루기 (0) 2019.09.18 pickle 모듈 (0) 2019.08.21 Mean squared error (0) 2019.08.21