자주 접하는 머신러닝 학습법의 한 종류

- 분류, 회귀 모두 가능한 지도 학습 모델 중 하나

 

트리 구조에 기반하여 결정을 진행함

- True, False 

 

하나의 루트 노드, 여러 개의 내부 노드 및 리프 노드를 포함

 

 

소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from sklearn import tree
from sklearn.datasets import load_iris
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.tree import export_graphviz
import pydotplus
from IPython.display import Image
 
iris = load_iris()
 
= iris.data[:, [23]]
= iris.target
 
# 자동으로 데이터셋을 분리해주는 함수
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
 
# 데이터 표준화 작업
sc = StandardScaler()
sc.fit(X_train)
 
# 표준화된 데이터셋
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
 
iris_tree = tree.DecisionTreeClassifier(criterion='entropy', max_depth=3, random_state=0)
iris_tree.fit(X_train, y_train)
 
y_pred_tr = iris_tree.predict(X_test)
print('Accuracy: %.2f' % accuracy_score(y_test, y_pred_tr))
 
dot_data = export_graphviz(iris_tree, out_file=None, feature_names=['petal length''petal width'],
                          class_names=iris.target_names, filled=True, rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
cs

 

 

참고

 

 

 

단단한 머신러닝

간결한 설명과 최소한의 수학적 지식을 통해 체계적으로 정리한 머신러닝 입문서! 『단단한 머신러닝』은 인공지능 분야의 명예의 전당이라는 AAAI의 펠로우로 선정된 저자가 머신러닝을 처음

books.google.co.kr

 

Python - sklearn, jupyter로 Decision Tree 학습하기

02DecisionTree_practice In [2]: R을 공부하며 Decision Tree를 정리했었는데, 파이썬에서 비슷한 내용을 정리해보고자 한다. 소스코드는 scikit-learn의 공식 튜토리얼 문서자료와 [Python Machine Learning]을..

yamalab.tistory.com

 

'인공지능' 카테고리의 다른 글

K-최근접 이웃(K-Nearest Neighbor, K-NN)  (0) 2021.01.25
이론

자주 사용되는 지도학습 방법 중 하나

더보기

훈련 데이터가 라벨값을 가지는지에 따라 두 분류로 나눌 수 있음

지도 학습(supervised learning)
- 정답(입력값에 대한 Label)을 알려 주면서 학습시키는 방식
- EX) 고양이(input) 사진을 입력시키면서 결과가 '고양이(Label)'임을 알려주는 것
- 분류(Classification), 회귀(Regression)


비지도 학습(unsupervised learning)

 

※ 머신 러닝의 학습 방법은 대표적으로 강화 학습을 포함하여 세 가지로 나눈다.

강화 학습(Reinforcement Learning)

- 머신이 분류한 액션에 대해 보상(reward)를 얻으면서 학습하는 것

- 지도 학습과 같은 Lable이 없음

- 최종 결과를 구하면 그 액션들에 대해 보상과 반성

 

K-최근접 이웃 학습은 인접한 K개의 샘플을 찾아서, 해당 K개의 정보를 바으로 예측하는 모델

일반적으로는 K개 샘플 중 가장 많이 출현한 클래스를 예측 결과로 보는 투표법을 사용한다.

( 회귀에서 사용될 경우에는 평균 값을 예측치로 보는 평균법을 사용한다. )

 

K가 1일 때는 범위에 ★이 가장 많으므로, ?를 ★로 판단할 것이고,
K가 3일 때는 ★보다 ◆가 많으므로 ◆로 판단할 것이다.


K-NN은 다른 학습 알고리즘에 비해 명확한 학습 과정이 드러나지 않는데, 이를 게으른 학습(Lazy learning)이라 부른다고 한다.

더보기

게으른 학습(Lazy Learning)
- 판별함수를 학습하지 않고, 훈련 데이터 샘플을 보존(저장)함
- 훈련(학습) 시간이 0 이고, 예측 시간이 긺
- 테스트 샘플이 올 때 까지 기다렸다가 받은 뒤에 처리함

열정적 학습(Eager Learning)
- 게으른 학습의 반대
- 샘플을 훈련 단계에서 학습하는 방법

 

소스코드

K-NN 알고리즘은 sklearn.neighbors - NearestNeighbors 에 구현되어 있다.

여기서 algorithm으로는 'ball_tree', 'kd_tree'와 같은 알고리즘을 사용할 수 있고, 아무 값도 주지 않으면 (auto) 가장 적합한 알고리즘으로 결정하려 한다.

 

코드 출처는 맨 하단 scikit-lean.org 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
import seaborn as sns
 
from sklearn import neighbors, datasets, model_selection
from matplotlib.colors import ListedColormap
 
n_neighbors = 15
 
iris = datasets.load_iris() # load test dataset
 
# we only take the first two features. We could avoid this ugly
# slicing by using a two-dim dataset
= iris.data[:, :2]
= iris.target
 
= .01  # step size in the mesh
 
# Create color maps
cmap_light = ListedColormap(['lemonchiffon''paleturquoise''lavenderblush'])
cmap_bold = ['yellowgreen''lightcoral''darkblue']
 
for weights in ['uniform''distance']:
    # we create an instance of Neighbours Classifier and fit the data.
    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
    clf.fit(X, y)
 
    # Plot the decision boundary. For that, we will assign a color to each
    # point in the mesh [x_min, x_max]x[y_min, y_max].
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
 
    # Put the result into a color plot
    Z = Z.reshape(xx.shape)
    plt.figure(figsize=(86))
    plt.contourf(xx, yy, Z, cmap=cmap_light)
 
    # Plot also the training points
    sns.scatterplot(x=X[:, 0], y=X[:, 1], hue=iris.target_names[y],
                    palette=cmap_bold, alpha=1.0)
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.title("3-Class classification (k = %i, weights = '%s')"
              % (n_neighbors, weights))
    plt.xlabel(iris.feature_names[0])
    plt.ylabel(iris.feature_names[1])
 
plt.show()
 
cs
 

 

 

참고

 

File:Map1NN.png - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search No higher resolution available. Summary Licensing I, the copyright holder of this work, hereby publish it under the following license: This file is licensed under the Creative Commons

en.wikipedia.org

 

단단한 머신러닝

간결한 설명과 최소한의 수학적 지식을 통해 체계적으로 정리한 머신러닝 입문서! 『단단한 머신러닝』은 인공지능 분야의 명예의 전당이라는 AAAI의 펠로우로 선정된 저자가 머신러닝을 처음

books.google.co.kr

 

[인공지능] 지도학습, 비지도학습, 강화학습

머신러닝의 학습 방법은 크게 3가지로 분류됩니다. 지도학습 비지도학습 강화학습 ● 지도학습(Supervised Learning) 지도 학습은 말 그대로 정답이 있는 데이터를 활용해 데이터를 학습시키는 것입

ebbnflow.tistory.com

 

머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로: 3.7 k-최근접 이웃: 게으른 학습 알고리즘

 

thebook.io

(소스코드)

 

1.6. Nearest Neighbors — scikit-learn 0.24.1 documentation

1.6. Nearest Neighbors sklearn.neighbors provides functionality for unsupervised and supervised neighbors-based learning methods. Unsupervised nearest neighbors is the foundation of many other learning methods, notably manifold learning and spectral cluste

scikit-learn.org

 

 

Nearest Neighbors Classification — scikit-learn 0.24.1 documentation

Note Click here to download the full example code or to run this example in your browser via Binder Nearest Neighbors Classification Sample usage of Nearest Neighbors classification. It will plot the decision boundaries for each class. print(__doc__) impor

scikit-learn.org

 

'인공지능' 카테고리의 다른 글

의사결정트리 (decision tree)  (0) 2021.01.26

+ Recent posts