본문 바로가기
파이썬(Python)

파이썬 머신러닝 기본1

by 무지성개발자 2021. 8. 10.

파이썬 머신러닝에 들어가기 전에 pc에 anacoda가 설치되어있어야 합니다.

아나콘다 설치 방법은 아래 링크를 참고해주세요.

https://developer-notes.tistory.com/2

 

아나콘다 설치 / Anaconda install

이 글에서는 아타콘다 설치방법과 주피터랩 실행을 설명하였습니다. 도움이 되었다면 좋아요와 구독버튼을 눌러주세요. 아타콘다 홈페이지 접속 https://www.anaconda.com/products/individual Anaconda | Indi

developer-notes.tistory.com


iris 데이터 불러오기 및 확인


import numpy as np

import pandas as pd

 

# 사이킷런(scikit) : 파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리입니다.

from sklearn.model_selection import train_test_split

 

# 사이킷런에 내장되어 있는 붓꽃 데이터를 불러옵니다.

# sklearn.datasets : 서아캇론에서 자체적으로 제공하는 데이터 세트를 생성하는 모듈입니다.

from sklearn.datasets import load_iris

iris = load_iris()

iris 

iris.keys()

# iris의 key 중 target_names과 feature_names의 속성을 알아봅니다.

iris.target_names

feature_names

 

# 판다스를 사용하여 iris 데이터를 데이터프레임 형태로 만들수 있습니다.

import pandas as pd

iris_df = pd.DataFrame(data = iris.data, columns=iris.feature_names)
iris_df

# 새로운 label 컬럼 추가, label은 붓꽃의 종류를 0 1 2로 구분한 것입니다.

 

# sklearn.tree : 트리 기반 ML 알고리즘 구현한 클래스 모입입니다.

iris_df['label'] = iris.target
iris_df.sample(3)


 

# sklearn.model_selection : 학습 데이터와 검증 데이터 그리고 예측 데이터를 분리하거나 최적의 하이퍼 파라미터로 평가하기 위한 다양한 모듈의 모입니다.

* 하이퍼파라미터 : 하이퍼 파라미터는 모델링할 때 사용자가 직접 세팅해주는 값을 뜻합니다.

 

from sklearn.model_selection import train_test_split

train_test_split(iris.data, iris.target, test_size=0.2, random_state=11)

 

# train_test_split(x, y) 에서 x는 독립변수이고 y는 종속변수 입니다.

# test_size=0.2 는 테스트 데이터를 20%로 지정하는 것입니다.

# random_state 는 랜덤값을 고정하기 위해 사용하였습니다.

# 즉, X_train의 독립변수와 Y_train 종속변수롤 학습을 하고 / X_test 독립변수와 Y_test 종속변수로 학습한 것을 기반으로 테스트 하는 것입니다.

 

X_train, X_test, Y_train, Y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=11)


머신러닝 학습시키기


분류는 데이터가 구분지어져 있을 때 사용합니다.

회귀는 데이터가 연속적으로 이어져 있을 때 사용합니다.

 

# 의사결정 트리 클래스를 결정합니다.

# iris데이터는 분류데이터이므로 DecisionTreeClassifier를 사용합니다.

from sklearn.tree import DecisionTreeClassifier

dt_clf = DecisionTreeClassifier(random_state=11)

 

# 학습일 시킵니다.

dt_clf.fit(X_train, Y_train)

 

# 예측을 해봅니다.pred = dt_clf.predict(X_test)

pred

# 예측한 값과 닶을 비교해봅니다.

Y_test

# 정답확인을 좀 더 쉽게하기 위해서 'accuracy_score' 을 사용합니다.

from sklearn.metrics import accuracy_score

accuracy_score(Y_test, pred)

# 93.3333 의 정확도를 가집니다.


임의의 값으로 붓꽃 데이터를 확인해보기


dt_clf.predict([[5.6, 3.2, 4.7, 1.4]])

# sepal length (5.6) / sepal width (3.2) / petal length (4.7) / petal width (1.4) 를 넣었더니 1번 붓꽃이라고 결과가 도출되었습니다.


정리


# sklearn에 있는 붓꽃 데이터를 가져옵니다.

from sklearn.datasets import load_iris 

# 분류기준을 선택합니다.
from sklearn.tree import DecisionTreeClassifier 

# 정확도를 체크하기 위한 모듈을 준비합니다
from sklearn.metrics import accuracy_score 

 

# 붓꽃 데이터를 가져옵니다.

iris = load_iris()

# 붓꽃 데이터를 분류하기 위한 틀을 만듭니다.
dt_clf = DecisionTreeClassifier()

# 붓꽃 데이터를 학습시킵니다.
dt_clf.fit(iris.data, iris.target) 

# 붓꽃을 예측합니다.
pred = dt_clf.predict(iris.data)

# 결과를 확인합니다.
accuracy_score(iris.target, pred)

 

# 결과는 100%가 나오며 이유는 이미 학습한 학습 데이터 세트를 기반으로 예측했기 때문입니다

# 때문에 학습 / 테스트 데이터를 분리하여야 합니다.

 

dt_clf = DecisionTreeClassifier()
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
dt_clf.fit(x_train, y_train)
pred = dt_clf.predict(x_test) 
accuracy_score(y_test, pred)