본문 바로가기
데이터 시각화 및 애플리케이션 개발/AI 컴퓨터 비전프로젝트

[ML] 아이리스 데이터셋(Iris DataSet)

by 바다의 공간 2024. 7. 1.

1. Iris DataSet


from sklearn.datasets import load_iris
iris = load_iris()
iris

print(iris['DESCR'])

class는 3가지 독립변수는 4가지 입니다.

 


data =iris['data']
data

한 줄이 값이고 그게 150개가 있다는것

2.레이블 확인

target = iris['target']
target

0번꽃, 1번꽃, 2번에대한 부분 출력을 확인할 수 있음 150개


컬럼명으로 쓸만한 이름이 4가지가 있다는것을 확인할 수 있습니다.

feature_names = iris['feature_names']
feature_names

 

 


3. padnas를 이용 및 확인

import pandas as pd

df_iris = pd.DataFrame(data, columns=feature_names)
df_iris

 

 

 

target.shape
#(150,0)

 

4. 변수 추가(없는 컬럼만들기)

df_iris['target']=target
df_iris

일반적으로 1만개 이상이면 데이터가 있다 라고하고

1만개 이하면 조금 부족하다고 생각해볼 수 있습니다.

트레이닝 데이터가 많으면 학습데이터는 60%, 검증을 35~40%

트레이팅데이터가 좀 적으면 학습은80%, 검증은 20%정도로 합니다.


사이킷에 위와같이 나눠주는 모듈이있습니다. 

from sklearn.model_selection import train_test_split

-실무에서는 test로 비율을 나누어주고 test를 또 가서 나눠주며 검증합니다.

# train_test_split(독립변수, 종속변수, 테스트사이즈, 시드값 ...)

X_train, X_test, Y_train, Y_test = train_test_split(df_iris.drop('target', axis=1),
                                                    df_iris['target'],
                                                    test_size=0.2,
                                                    random_state=2024)

 여기서 시드값이란 섞이는 값이라고 합니다. 그래서 숫자 아무거나 사용하면 됩니다.


 

꼭!알아야할 부분

머신러닝은 데이터의 확률영역입니다.

시드값은 섞이는 상수값입니다 예를들어 2024라고 하면 그 숫자로 알고리즘을 넣어서 섞어줍니다.

그리고 항상 2024로 섞는건 동일합니다. 1번이 3번가있고 뭐 이런게 고정적이 됩니다.

만약 결과를 봤는데 잘 나왔다고 끝이아니라 다른 검증들도 해봐야되는데

섞임값이 고정적이여야 데이터 전처리를 다시해보던지 모델을 적합하지 않았는지 확인할 수 있습니다.


X_train.shape, X_test.shape

#((120, 4), (30, 4))

 

#트레이닝 라벨값 #테스트 라벨값
Y_train.shape, Y_test.shape
#((120,), (30,))

5. sklearn.svm & 검사

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

SVC란

정밀하게 분류해주는 알고리즘입니다. 리니어같은경우에는 X,Y를 합쳐져서 한번에 분리해주지만

SVC는 다차원적으로 확인할 수 있습니다.

 

 

6. 객체만들기 

svc = SVC()

svc.fit(X_train, Y_train)

7. 검증하기 

y_pred = svc.predict(X_test)
y_pred

 


8. 검증& 비하기(2)

print('정답률: ', accuracy_score(Y_test, y_pred))


9. 정답률이 만족스럽지 않기에 데이터를 다시 섞도록 합니다.

X_train, X_test, Y_train, Y_test = train_test_split(df_iris.drop('target', axis=1),
                                                    df_iris['target'],
                                                    test_size=0.2,
                                                    random_state=2023)

*섞임정도를 변경해봄 *2024->2023


X_train

 

 

svc.fit(X_train, Y_train)

y_pred = svc.predict(X_test)
y_pred

 

print('정답률: ', accuracy_score(Y_test, y_pred))

#정답률 : 1.0

10. 높은정답률을 보고 데이터 넣어서 확인해보기

# 6.7 3.3 5.7 2.1
y_pred = svc.predict([[6.8, 3.2, 5.6, 2.2]])
y_pred

데이터를 4개 6.7, 3.3, 5.7, 2.1을 기준으로 살짝 바꿔서 데이터를 넣어봤습니다.

예측된 결과가 어떤건지 확인해봤습니다.

2번꽃이 나왔습니다. 

잘 맞네요

 

 

 

 

리뷰

사용 설명
train_test_split(독립변수, 종속변수, 테스트사이즈(비율), 시드값(섞이는 값)) test스플릿트 사용방법입니다.