<* sklearn 사이킷런 사용 방법 *>
● 사이킷런은 알고리즘이 많이 포함되어 있기 때문에, 필요한 알고리즘을 호출하여 사용한다.
● 사이킷런을 사용한 프로그램은 기본적으로 다음의 구성으로 한다.
(1) 라이브러리 import
(2) 학습 데이터나 테스트 데이터 준비
(3) 알고리즘 지정과 학습 실행
(4) 테스트 데이터로 테스트
(5) 필요에 따라 정밀도 등을 시각화
*** 사이킷런을 사용한 기계학습 <예제> **
1. 데이터 세트 읽기
---<예시>-----------------------------------
# scikit-learn 라이브러리 가져오기
from sklearn import datasets
# 데이터 세트 읽어오기
digits = datasets.load_digits()
# 무슨 데이터인지 확인하기
import matplotlib.pyplot as plt
plt.matshow(digits.images[0], cmap="Greys")
plt.show()
___________________________________________________
▶ 코드를 실행하면 화면이 나온다.
2. 훈련 데이터와 테스트 데이터 준비
- 훈련 데이터(train data)를 통하여 학습하고 테스트 데이터(test data)를 통하여 학습의 결과를 검증한다.
---<예시>-----------------------------------------------
# 화상 데이터를 배열로 한 것(numpy.ndarray형)
X = digits.data
# 이미지 데이터에 대한 숫자(numpy.ndarray형) (라벨)
y = digits.target
# 훈련 데이터와 테스트 데이터로 나누다
# 훈련 데이터 : 짝수 행
X_train, y_train = X[0::2], y[0::2]
# 테스트 데이터: 홀수 행
X_test, y_test = X[1::2], y[1::2]
______________________________________________________________
3. 학습
---<예시>-----------------------------------------------
# 학습기 작성. SVM이라는 알고리즘을 선택
from sklearn import svm
clf = svm.SVC(gamma=0.001)
# 훈련 데이터와 라벨로 학습
clf.fit(X_train, y_train)
____________________________________________________________
▶ SVM이라는 알고리즘을 사용하였다.
4. 모델 평가
- 최종적으로 모델의 학습 결과를 테스트 데이터를 사용하여 평가한다.
---<예시>-----------------------------------------------------
# 테스트 데이터로 시험한 정답률을 반환하다
accuracy = clf.score(X_test, y_test)
print(f"정답률: {accuracy}")
# 학습된 모델을 사용하여 테스트 데이터를 분류한 결과를 반환한다.
predicted = clf.predict(X_test)
import sklearn.metrics as metrics
# 자세한 리포트
# precision(적합율): 선택한 정답/선택한 집합
# recall(재현율) : 선택한 정답 / 전체 정답
# F-score(F값) : 적합률과 재현율은 트레이드오프의 관계에 있기 때문에
print("classification report")
print(metrics.classification_report(y_test, predicted))
_______________________________________________________________________________
▶ 학습의 결과는 콘솔창에 나온다.
***< 전체 코드>**************************************************************
# scikit-learn 라이브러리 가져오기
from sklearn import datasets
# 데이터 세트 읽어오기
digits = datasets.load_digits()
# 무슨 데이터인지 확인하기
import matplotlib.pyplot as plt
plt.matshow(digits.images[0], cmap="Greys")
plt.show()
# 화상 데이터를 배열로 한 것(numpy.ndarray형)
X = digits.data
# 이미지 데이터에 대한 숫자(numpy.ndarray형) (라벨)
y = digits.target
# 훈련 데이터와 테스트 데이터로 나누다
# 훈련 데이터 : 짝수 행
X_train, y_train = X[0::2], y[0::2]
# 테스트 데이터: 홀수 행
X_test, y_test = X[1::2], y[1::2]
# 학습기 작성. SVM이라는 알고리즘을 선택
from sklearn import svm
clf = svm.SVC(gamma=0.001)
# 훈련 데이터와 라벨로 학습
clf.fit(X_train, y_train)
# 테스트 데이터로 시험한 정답률을 반환하다
accuracy = clf.score(X_test, y_test)
print(f"정답률: {accuracy}")
# 학습된 모델을 사용하여 테스트 데이터를 분류한 결과를 반환한다.
predicted = clf.predict(X_test)
import sklearn.metrics as metrics
# 자세한 리포트
# precision(적합율): 선택한 정답/선택한 집합
# recall(재현율) : 선택한 정답 / 전체 정답
# F-score(F값) : 적합률과 재현율은 트레이드오프의 관계에 있기 때문에
print("classification report")
print(metrics.classification_report(y_test, predicted))
_____________________________________________________________________________________
***<< 로지스틱 회귀로 변환 >>***
# scikit-learn 라이브러리 가져오기
from sklearn import datasets
# 데이터 세트 읽어오기
digits = datasets.load_digits()
# 무슨 데이터인지 확인하기
import matplotlib.pyplot as plt
plt.matshow(digits.images[0], cmap="Greys")
plt.show()
# 화상 데이터를 배열로 한 것(numpy.ndarray형)
X = digits.data
# 이미지 데이터에 대한 숫자(numpy.ndarray형) (라벨)
y = digits.target
# 훈련 데이터와 테스트 데이터로 나누다
# 훈련 데이터 : 짝수 행
X_train, y_train = X[0::2], y[0::2]
# 테스트 데이터: 홀수 행
X_test, y_test = X[1::2], y[1::2]
# 학습기 작성. 로지스틱 회귀라는 알고리즘을 선택
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
# 훈련 데이터와 라벨로 학습
clf.fit(X_train, y_train)
# 테스트 데이터로 시험한 정답률을 반환하다
accuracy = clf.score(X_test, y_test)
print(f"정답률: {accuracy}")
# 학습된 모델을 사용하여 테스트 데이터를 분류한 결과를 반환한다.
predicted = clf.predict(X_test)
import sklearn.metrics as metrics
# 자세한 리포트
# precision(적합율): 선택한 정답/선택한 집합
# recall(재현율) : 선택한 정답 / 전체 정답
# F-score(F값) : 적합률과 재현율은 트레이드오프의 관계에 있기 때문에
print("classification report")
print(metrics.classification_report(y_test, predicted))
_____________________________________________________________________________________