출처 https://www.boostcourse.org/ds214/joinLectures/28155

 

프로젝트로 배우는 데이터사이언스

부스트코스 무료 강의

www.boostcourse.org

 

1. Scikit Learn

- 대표적인 파이썬 머신러닝 라이브러리

- classification, regression, clustering, dimensionality reduction, model selection, preprocessing 등 알고리즘

 

- supervised machine learning

clf = RandomForestClassifier()  # 머신러닝 모델 (트리모델)

clf.fit(X_train, y_train)  # 학습, x는 학습 데이터, y는 정답

 

y_pred = clf.predict(X_test)  # 예측

clf.score(X_test, y_test)  # 확인, 현실 문제에서는 y_test 알 수 없을 것, 하지만 임의로 데이터를 나누어 학습시켰다면 알 수 있음

 

- unsupervised transfomations

pca = PCA()  # 비지도학습 중 차원축소기법

pca.fit(X_train)

X_new = pca.transform(X_test)

 

- estimator.fit(X, [y])

estimator: 지정해줄 수 있는 알고리즘 모델

fit -> 학습 (비지도학습은 y 없음)

 

* estimator.predict -> classification, regression, clustering

* estimator.transform -> preprocessing, dimensionality reduction, feature seelction, feature exteaction

 

2. 데이터 검증

 

데이터에 알맞는 모델과 파라미터를 찾기 위해 훈련 데이터로 테스트를 진행한다.

 

1. 데이터를 training data와 test data로 구분한다.

2. cross-validation을 통해 여러 fold로 나눈다.

3. 나눠준 폴더의 개수만큼 훈련을 진행한다.

4. 예를 들어 5개의 폴더로 나누면 fold1부터 5까지 하나씩 test data로 놓고 나머지로 training 후 test data로 성능을 확인한다.

5. 각각의 fold에 있는 점수의 평균을 내서 가장 좋은 점수를 내는 모델과 파라미터를 찾는다.

 

clf = SVC(파라미터)

clf.fit(X_train, y_train)

 

3. grid searches

이러한 과정을 거쳐 알맞은 모델과 파라미터를 구한다.

 

4. 기본 예제

from sklearn imoprt tree
X = [[0, 0], [1, 1]]
y = [0, 1]

clf = tree.DecisionTreeClassifier()
clf.fit(X, y)

clf.predict([[2., 2.]])

clf.predict_proba([[2., 2.]])

 

결정 트리 분류 모델에 x = [0, 0] 일  때 y = 0이고, x = [1, 1] 일 때 y = 1인 훈련 데이터를 학습시켰다.

그리고 x = [2., 2.]일 때 y값을 예측했더니 1이 나왔다.

 

estimator.predict_proba 는 예측값을 비율로 출력하는 함수이다.

 

5. iris dataset 예제

from sklearn.datasets import load_iris
from sklearn import tree
import matplotlib.pyplot as plt

X, y = load_iris(return_X_y = True)
X, y              # decisiontree 알고리즘이 숫자만 읽을 수 있기 때문에 카테고리 데이터 -> 숫자화

사이킷런 라이브러리에 내장되어 있는 아이리스 데이터셋을 불러왔다.

원래는 문자로 된 범주형 데이터지만, decision tree 알고리즘이 숫자만 읽을 수 있기 때문에 숫자로 변환한 것이다.

 

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)

plt.figure(figsize = (20, 10))
t = tree.plot_tree(clf.fit(X, y), filled= True)

 

decision tree classifier 를 이용하여 데이터를 학습시킨 트리 모델이다.

이를 통해 중요한 변수가 무엇인지 등을 알 수 있다.

 

더 그래프를 보기좋게 그리기 위해서 graphviz 라이브러리를 활용할 수 있다. 하지만 설치가 조금 까다롭기 때문에 나중에 다시 해보려고 한다.

+ Recent posts