출처 https://www.boostcourse.org/ds214/joinLectures/28155
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 라이브러리를 활용할 수 있다. 하지만 설치가 조금 까다롭기 때문에 나중에 다시 해보려고 한다.
'Software > Python' 카테고리의 다른 글
[부스트코스] 프로젝트로 배우는 데이터사이언스 Ch 2 (0) | 2021.08.08 |
---|