1. 머신러닝이란?
머신러닝
: 명시적인 프로그램이 아닌 데이터를 보고 프로그램이 학습하도록 하는 능력을 갖추도록 하는 것
2. Iris Classification
- 아이리스 꽃의 품종을 맞추는 머신러닝 문제
- 우리의 과제에서 3개의 품종에 대해 꽃잎과 꽃받침의 가로, 세로의 길이를 가지고 3가지를 구분할 수 있는지 확인함.
- 우리의 과제는 목적은 아이리스 3개의 품종(버지칼라, 버지니카, 세토사)을 구분할 수 있는가!
- 아래는 로널드의 iris 데이터이다.

3. 데이터관찰(python)
1) iris 데이터를 불러오기 및 확인
from sklearn.datasets import load_iris
iris = load_iris()
iris

key랑 비슷하여 keys를 확인하려 함
2) keys를 확인하니 sklearn의 datasets은 python의 dict 형과 유사하다.
iris.keys()

3) iris.DESCR
print(iris['DESCR'])
- scikit이 제공하는 명령을 받아온 데이터들은 'DESCR' 키를 가지고 있고,
- 이것을 열어보면 데이터 설명이 나와있음.
- class는 우리가 맞춰야 하는 대상!(분류의 대상)
-> 이것이 피처?(특성의 이름들이 됨.)

cf)
len(iris['target'])

4) target_names에는
print(iris['target_names'])
- setosa'가 0번, 'versicolor'가 1번, 'virginica'가 2번

5) target에는
print(iris['target'])
- 아래의 'target_names'에서 보는 것처럼 150개가 있음.
- 0번-'setosa'가 50개, 1번-'versicolor'가 50개, 2번-'virginica'가 50 (아래 target_names 참고)

6) iris.data에는
iris.data
- 데이터 확인
- iris 데이터 첫 번째가 'target'에서 첫 번째인 '0' => setota (위에 참고)
- iris 데이터 두 번째가 'target'에서 두 번째인 '0' => setota (위에 참고)

7) pandas 및 DataFrame으로 만들어보기
- 데이터를 정리해서 관찰하기 유용한 도구인 pandas 사용
import pandas as pd
iris_pd = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_pd.head()
- iris.data => iris 데이터를 value로 두고
- columns=iris.feature_names => 칼럼 이름 지정

8) 품종 정보도 column에 포함 (품종을 맞춰야 함)
iris_pd['species'] = iris.target
iris_pd.head()

9) boxplot(x='sepal length (cm)')
(1) 'sepal length'와 'speices'와의 관계를 박스플랏으로 그려서 어떤 효과가 나는지 확인하기
- '0' -> 'setosa', '1' -> 'versicolor', '2' -> 'virginica'
# 일단 그래프 그리는 모듈 import
import matplotlib.pyplot as plt
import seaborn as sns
# 'sepal length'와 'species'와의 관계를 박스플랏으로 그려서 어떤 효과가 나는지 확인하기
plt.figure(figsize=(12, 6))
sns.boxplot(x='sepal length (cm)', y='species', data=iris_pd, orient='h');

-> 표시한 부분은 3개의 품종 다 겹쳐있음.
=> 결론
- 'sepal length'만 가지고는 3개의 품종을 구분하기 어렵다.
- 'virginica'의 아웃라이어 중 1개가 특별히 'sepal length가 작은 값을 가지고 있음.
'virginica'의 'sepal length'는 대부분 5.6부터 7.9 사이에 있는데 유난히 1개만 떨어져 있음.
10) boxplot(x='sepal width (cm)')
(2) 'sepal width'와 'speices'와의 관계 확인하기