관리 메뉴

DeseoDeSeo

[Machine Learning] iris_knn분류실습 본문

Python

[Machine Learning] iris_knn분류실습

deseodeseo 2023. 8. 28. 17:38

목표설정

- 붓꽃의 꽃잎의 길이/너비, 꽃받침의 길이/너비 특정 활용해서 3가지 품종을 분류하는 모델을 만들어보자.

- knn 모델의 이웃의 숫자를 조절해보자.

(k개수를 조절 => 하이퍼 파라미터 튜닝)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier# 분류
from sklearn.metrics import accuracy_score # 정확도 측정
# train, test를 분리하는 도구
from sklearn.model_selection import train_test_split

 

< 데이터 불러오기 >

붓꽃 데이터 불러오기
from sklearn.datasets import load_iris

 

딕셔너리에 접근하는 것처럼 활용 가능
sklearn.datasets -> 자료형태 : bunch객체
 - 딕셔너리에서 데이터 접근 : 인덱싱 불가능.  key값을 불러서 value에 접근.
key값들만 확인.
iris_data.keys()
  • data : (필수) 문제 데이터, X, 독립변수, 설명 변수, 피처,(feature)
  • target :(필수) 답데이터, Y,종속변수( 앞에 설명에 따라서 달라지기 때문에), 결과, 실제적 답, target
  • feature_names : (옵션) 문제 데이터 이름 리스트(컬러명 list)
  • target_names  :(옵션) 답 데이터 이름 리스트
  • DESCR : (옵션) 자료에 대한 설명

 

문제 데이터 접근
iris_data['data']

 

sh=iris_data['data'].shape
print(f'행:{sh[0]},열:{sh[1]}')
iris_data['data'][0:5]

특성의 이름 확인
iris_data['feature_names']

답 데이터 확인
iris_data.target

답 데이터 이름 확인하기
iris_data.target_names
타겟 이름으로 답 데이터 확인하기
iris_data.target_names[iris_data['target']]

설명 확인 
DESCR
print(iris_data.DESCR)

 

데이터 정리
  • 문제 데이터를 DF형태로 변환(2차원)
  • 문제 데이터와 답 데이터로 변수 정리(x,y)
  • train, test 분리 작업 필요. (train_test_split)
    • x_train, x_test, y_train, y_test
iris_df=pd.DataFrame(iris_data.data, columns =iris_data.feature_names)
iris_df.head()

 

문제와 답
x = iris_df
y = iris_data.target # target 데이터 연결하기
print(x.shape)
print(y.shape)

x_train,x_test,y_train,y_test=['훈련문제','테스트문제','훈련답','테스트답']
print(x_train, y_train)
print(x_test,y_test)  # unpacking이라고 부름.

# split_data = ['훈련문제','테스트문제','훈련답','테스트답']
# x_train=split_data[0]
# x_test = split_data[1]
# y_train= split_data[2]
# y_test = split_data[3]

훈련, 테스트 분리
  • 통상적으로 7:3 분리하지만 7.5:2.5, 8:2도 있음.-> train크기: 0.7, test크기: 0.3
  • 비율적인 의미로 넣어주려면 실수형태
  • 개수의미로 넣어주면 정수형태
  • train_test_split()
  • shuffle :섞는 기능 
  • train_test_split: 1. 랜덤 섞어줌. 2, 훈련, 테스트 분리
  • train_test_split(문제, 답, 테스트 사이즈)
  • random_state는 계속 실행해도 데이터들이 shuffle되지 않고 고정되도록 함.
                       shuffle을 동일한 기준으로 실행되도록 함.
  • text_size = 0.3 (=30%임)
x_train, x_test,y_train,y_test=train_test_split(x,y,test_size=0.3, random_state=1)
x_test

 


 

'Python' 카테고리의 다른 글

[Python] 이미지 데이터 수집  (0) 2023.08.29
[Python] 네이버 지도 데이터 수집  (0) 2023.08.29
[Crawling] 도시락 업체 데이터 수집  (0) 2023.08.28
[Crawling] Selenium 라이브러리  (0) 2023.08.28
[Python] pandas 추가  (0) 2023.08.25