일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터 비전
- 파이토치 강의 정리
- 파이토치
- 모두의 딥러닝
- 영상처리
- c++
- 케라스 정리
- c언어
- 해리스 코너 검출
- MFC 프로그래밍
- 모두의 딥러닝 예제
- c언어 정리
- 김성훈 교수님 PyTorch
- 팀프로젝트
- pytorch zero to all
- object detection
- 골빈해커
- 가우시안 필터링
- TensorFlow
- Pytorch Lecture
- pytorch
- 딥러닝 공부
- c++공부
- 파이토치 김성훈 교수님 강의 정리
- matlab 영상처리
- tensorflow 예제
- C언어 공부
- 미디언 필터링
- 딥러닝
- 딥러닝 스터디
- Today
- Total
ComputerVision Jack
[머신러닝 - 모델 앙상블] 본문
scikit_learn예제 - 유방암 데이터를 갖고 모델 앙상블 하여 결과 도출
Model Ensemble
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn import svm
from sklearn.neural_network import MLPClassifier
#필요한 라이브러 import 및 sklearn import.
NB 모델, SVM, MLP 3가지 모델을 앙상블 할 계획이다.
data = load_breast_cancer()
#데이터 셋을 로드한다.
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
#데이터 셋을 전처리하여 데이터와 라벨을 분류한다.
[데이터 가시화]
print(label_names)
#라벨에 관련된 이름을 보여준다.
['malignant' 'benign']
print('Class label = ', labels[0])
#라벨 첫번째 값의 클래스 분류 값을 출력한다.
Class label = 0
print(feature_names)
#사용할 feature들의 이름을 제시한다.
['mean radius' 'mean texture' 'mean perimeter' 'mean area' 'mean smoothness' 'mean compactness' 'mean concavity' 'mean concave points' 'mean symmetry' 'mean fractal dimension' 'radius error' 'texture error' 'perimeter error' 'area error' 'smoothness error' 'compactness error' 'concavity error' 'concave points error' 'symmetry error' 'fractal dimension error' 'worst radius' 'worst texture' 'worst perimeter' 'worst area' 'worst smoothness' 'worst compactness' 'worst concavity' 'worst concave points' 'worst symmetry' 'worst fractal dimension']
print(features[0])
#위 feature을 토대로, 첫번째 인덱스의 feature값들을 출력한다.
[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01 1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02 6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01 1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01 4.601e-01 1.189e-01]
print(labels.shape)
print(features.shape)
#라벨과 feature의 shape을 출력하여 확인해본다.
(569,) (569, 30)
train1, test1, train_labels1, test_labels1 = train_test_split( features, labels, test_size=0.33, random_state=42)
train2, test2, train_labels2, test_labels2 = train_test_split( features, labels, test_size=0.33, random_state=42)
train3, test3, train_labels3, test_labels3 = train_test_split( features, labels, test_size=0.33, random_state=42)
#데이터 셋을 train과 test데이터로 나눈다. 각각 train과 test이 모델에 하나씩 들어가게 된다.
Initialize our classifier
method1 = GaussianNB()
method2 = svm.LinearSVC()
method3 = MLPClassifier(alpha=0.00001, hidden_layer_sizes=(15,15), max_iter=5000)
#각각의 분류 모델을 초기화 한다.
Train our classifier
model1 = method1.fit(train1, train_labels1)
model2 = method2.fit(train2, train_labels2)
model3 = method3.fit(train3, train_labels3)
#fit 메소드를 사용하여 각각의 모델을 학습시킨다.
Make predictions
preds1 = method1.predict(test1)
preds2 = method2.predict(test2)
preds3 = method3.predict(test3)
#학습된 모델에 test set을 넣어 결과를 확인한다.
Evaluate accuracy
print("NB : {}".format(accuracy_score(test_labels1, preds1)))
print("SVM : {}".format(accuracy_score(test_labels2, preds2)))
print("MLP : {}".format(accuracy_score(test_labels3, preds3)))
#각 모델의 정확도를 평가한다.
def ensemble_learning(param1, param2, param3):
result = []
for i in range(len(param1)):
sum = param1[i] + param2[i] + param3[i]
if(sum >= 2):
result.append(1)
else:
result.append(0)
return result
show_result = ensemble_learning(preds1, preds2, preds3)
print("-- Ensemble --")
print(show_result)
print("Ensemble : {}".format(accuracy_score(test_labels, show_result)))
#3개의 데이터 모델의 결과를 앙상블하여 결과를 출력한다
'Campus Project > Homework' 카테고리의 다른 글
[머신러닝 - 2차원 2클래스 분류] (0) | 2020.01.21 |
---|---|
[게임 - snake game] (2) | 2020.01.21 |
[컴퓨터 비전 - Face Detect] (0) | 2020.01.20 |
[이미지 - Perspective Transform] (0) | 2020.01.19 |
[이미지 - 필터링 적용] (1) | 2020.01.17 |