Machine Learning

[Machine Learning] 분류(Classification)_3

구루싸 2019. 11. 23. 21:29
반응형
SMALL

이번 학습은 분류 알고리즘 중 Decision Tree에 대해 알아보겠습니다

알고리즘에서 즐겨 사용하는 Tree 구조를 이용하고 각 Node에는 분석 대상의 속성들이 위치합니다

각 Node마다 목표 값을 가장 잘 분류할 수 있는 속성을 찾아서 배치하고

해당 속성이 갖는 값을 이용하여 새로운 branch를 만들고 

해당 속성을 기준으로 분류한 값들이 구분되는 정도를 측정합니다

다른 종류의 값들이 섞여 있는 정도를 나타내는 Entropy가 낮을수록 분류가 잘 된 것입니다

# 판다스(Pandas)
import pandas
import numpy

# Prepare Data : Breast Cancer
uci_path = 'https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data'
df = pandas.read_csv(uci_path, header = None)
df.columns = ['id', 'clump', 'cell_size', 'cell_shape', 'adhesion', 'epithlial',
              'bare_nuclei', 'chromatin', 'normal_nucleoli', 'mitoses', 'class']
pandas.set_option('display.max_columns', 15)
print(df.head(), end = '\n')
print(df.info(), end = '\n')
print(df.describe(), end = '\n')
print(df['bare_nuclei'].unique(), end = '\n')

# bare_nuclei 열의 '?' 값 np.nan 변경 후 누락 데이터 행 삭제 및 정수형 변환
df['bare_nuclei'].replace('?', numpy.nan, inplace = True)
df.dropna(subset = ['bare_nuclei'], axis = 0, inplace = True)
df['bare_nuclei'] = df['bare_nuclei'].astype('int')
print(df.describe(), end = '\n')

x = df[['clump', 'cell_size', 'cell_shape', 'adhesion', 'epithlial',
        'bare_nuclei', 'chromatin', 'normal_nucleoli', 'mitoses']]
y = df['class']

from sklearn import preprocessing
x = preprocessing.StandardScaler().fit(x).transform(x)

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 10)

from sklearn import tree
tree_model = tree.DecisionTreeClassifier(criterion = 'entropy', max_depth = 5)
tree_model.fit(x_train, y_train)
y_hat = tree_model.predict(x_test)

from sklearn import metrics
tree_matrix = metrics.confusion_matrix(y_test, y_hat)
print(tree_matrix, end = '\n')

tree_report = metrics.classification_report(y_test, y_hat)
print(tree_report, end = '\n')

위에서 사용한 데이터의 출처는 UCI ML Repository 입니다

https://archive.ics.uci.edu/ml/index.php

 

UCI Machine Learning Repository

 

archive.ics.uci.edu

다음 학습부터는 군집 알고리즘에 대해 알아보겠습니다

그럼 이만-_-

 

반응형
LIST