아더 사뮤엘
: 처음으로 머신러닝이라는 용어 사용
: 체커 게임(1959) - 스스로 학습하는
다양한 파트의 사람들이 자신의 파트에 인공지능을 접목하고자
IBM 딥블루
: 세계 체스 챔피언에게 승리(1997)
DEEPMIND 알파고
: 이세돌에게 4:1 승리(2016)
로젠블롯의 퍼셉트론(1962)
: 최초의 인공신경망
from sklearn.datasets. import load_iris
iris = load_iris()
iris
iris.keys()
print(iris["DESCR"]
(사이킷런으로 받아온 데이터에는 설명이 포함돼있음)
print(iris["target_names"])
...
iris_pd = pd.DataFrame(iris.data, columns=iris("feature_names")
iris_pd
iris_pd["species"] = iris.target
iris_pd.head()
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
sns.boxplot(x='sepal length (cm)', y='species', data=iris.pd, orient='h');
= 3개가 다 겹치는 부분이 있고, 버지니카 중 하나다 예외값을 가짐
plt.figure(figsize=(12, 6))
sns.boxplot(x='sepal length (cm)', y='species', data=iris.pd, orient='h');
= setosa 는 petal이라는 특성을 통해 명확히 구분 가능
sns.pairplot(iris_pd, hue='species')
petal length로는 setosa 는 가능하다.
대략 2.5보다 작으면 다 setosa로 구분가능
몇개의 대이터는 놓치지만 petal width가 1.6정도에서 자르면
-> versicolor = length > 2.5, width < 1.6
-> verginica = length > 2.5, width > 1.6
이 내용을 질문(조건문)으로 순차적으로 표현
= Decision Tree라는 알고리즘
iris_pd['species']
==> 0, 1, 2가 나옴
iris_pd['species'] == 0
==> T, F로 나옴
iris_pd['species'] ! = 0
==> F, T로 나옴
iris_pd[iris_pd['species'] ! = 0]
==> F 를 다 빼버림 = IRIS 1, 2
= Decision Tree의 분할기준(split criterion)
import numpy as np
p=np.arange(0.001, 1, 0.001)
plt.grid()
plt.title('$-p \log_{2}(p)$')
plt.plot(p, -p*np.log2(p));
(두개로 나눠진 것 중 하나를 고를 확률 * (-pi(빨간공 개수) * log2 * pi(파란공개수))
+ (반대편도 똑같이)
예)
1- (6/16)**2 - (10/16)**2
= 분할 했을 때 지니계수가 낮을 수록, 분할하는 것이 좋다
아래서부터 올라오면서 지니계수 계산을 계속함
요즘엔 코딩된게 있어서 frame work로 다들 공유함