붓꽃 분류 모델 만들기
기타 딥러닝 특화 라이브러리
사이킷런 데이터셋 살펴보기
7. Dataset loading utilities - scikit-learn 0.24.0 documentation
클래스는
setosa
versicolour
virginica
💡데이터셋을 다루기 전에 데이터셋의 정보를 먼저 확인 하기
라벨 label
머신러닝 모델이 출력해야하는 정답 타겟 target
이라고도 함
문제지 : 머신러닝 모델에게 입력되는 데이터. feature라고 부르기도 한다. 변수 이름으로는 X
를 많이 사용한다.
정답지 : 머신러닝 모델이 맞추어야 하는 데이터. label, 또는 target이라고 부르기도 한다. 변수 이름으로는 y
를 많이 사용한다.
판다스 라이브러리 활용하여 2차원 배열 데이터 다루기
import pandas as pd
라이브러리 불러오기
Dataframe
판다스에서 제공하는 자료형
train_test_split
training dataset
과 모델의 성능을 평가하는 데 사용하는 test dataset
으로 데이터셋을 나누는 작업이 필요sklearn.model_selection
패키지의 train_test_split
을 활용train_test_split
의 파라미터from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_data,
iris_label,
test_size=0.2,
random_state=7)
print('X_train 개수: ', len(X_train), ', X_test 개수: ', len(X_test))
sklearn.model_selection.train_test_split - scikit-learn 0.24.0 documentation
iris_data
feature 입력벋는 특징 데이터iris_label
모델이 맞추어야 하는 정답값 ( = 품종)test_size
test dataset 의 크기를 조절 할 수 있다random_state
데이터를 분리(split) 하는데 적용되는 랜덤성을 결정모델 학습
머신러닝
지도학습 (Supervised Learning)
지도받을 수 있는, 즉 정답이 있는 문제에 대해 학습하는 것
지도학습의 종류
분류(Classification)
입력받은 데이터를 특정 카테고리 중 하나로 분류해내는 문제
회귀(Regression)
입력받은 데이터에 따라 특정 필드의 수치를 맞추는 문제
비지도 학습 (Unsupervised Learning)
비지도학습은 정답이 없는 문제를 학습하는 것
모델 선택
Decision Tree 모델
의사결정
직관적이면서 간단함
분류를 풀 때 가장 기본적으로 쓰이는 모델
terminal node 간 교집합이 없다
회귀에도 사용될수 있는 모델
단점 및 보완모델
결정경계가 데이터 축에 수직이어서 특정 데이터에만 잘 작동할 수 있다는 문제가 있다. 이를 극복하기 위해 제안된 모델이 Random Forest이며, 여러 개의 Decision Tree를 합쳐서 만들어놓은 개념이다.
앙상블(Ensemble) 기법이라고도 함
- 단일 모델을 여러 개 사용하는 방법을 취함으로써 모델 한 개만 사용할 때의 단점을 집단지성으로 극복하는 개념
- `sklearn.ensemble`
엔트로피, 정보량, 지니불순도 등의 정보이론 개념 추가 공부
라이브러리에서 모델 꺼내오기
from sklearn.tree import DecisionTreeClassifier
decision_tree = DecisionTreeClassifier(random_state=32)
print(decision_tree._estimator_type)
학습 시키기
decision_tree.fit(X_train, y_train)
fit
: training dataset 으로 모델을 학습 시키는것 ,혹은 training dataset 에 맞게 모델을 맞추는 것 fitting
학습 모델 평가하기
y_pred = decision_tree.predict(X_test)
y_pred
predict
를 실행 → y_pred
(예측값) 리턴학습 모델로 예측한 값과 테스트 값 비교하기 (검증)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
accuracy
SVM ,Support Vector Machine
왜 데이터를 고차원으로 보내는 것일까?
→ 2차원 비선형 분리를 3차원 mapping 하게되면 선형분리 하게 된다
SVM은
MMH(Maximum Marginal Hyperplane, 최대 마진 초평면)을 찾아 분리하는 방법이다
마진(margin) 이란 클래스를 구분하는 초평면(결정 경계)과 가장 가까운 훈련 샘플 사이의 거리를 의미한다
마진이 클 수록 일반화 오차가 낮아지는 경향이 있다
마진이 작을 수록 모델을 과대적합되기 쉽다
SGDClassifier 클래스는 확률적 경사하강법 알고리즘을 적용한
을 활용할 수 있도로 해준다
1.5. Stochastic Gradient Descent - scikit-learn 0.24.0 documentation
로지스틱회귀(Logistic Regression)
데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측하고
확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류
선형 회귀(Linear Regression)
우리가 찾아낼 수 있는 가장 직관적이고 간단한 모델은 선(line)이다. 그래서 데이터를 놓고 그걸 가장 잘 설명할 수 있는 선을 찾는 분석하는 방법을 선형 회귀(Linear Regression) 분석
평균 제곱 오차(mean squared error, 이하 MSE)
선과 실제 데이터 사이에 얼마나 오차가 있는지 구하려면 양수, 음수 관계 없이 동일하게 반영되도록 모든 손실에 제곱을 해준다
선형 회귀 모델의 목표는 모든 데이터로부터 나타나는 오차의 평균을 최소화할 수 있는 최적의 기울기와 절편을 찾는 거다.
메서드
.keys()
객체가 담고있는 정보를 반환
.dir()
객체가 어떤 변수와 메서드를 가지고 있는지 나열
.shape()
배열의 형상정보를 출력
data.target
데이터에서 타겟정보(정답) 출력
data.target_names
데이터에서 라벨 이름 출력
data.DESCR
데이터에 대한 설명 출력
data.feature_names
feature 이름 출력
data.filename
데이터셋 저장 경로 출력