python 은 Adaboost 프레임 워 크 를 기반 으로 사용자 정의 통합 모델 을 구축 합 니 다 [사용자 정의 기 분류 기 모델]

sklearn 은 Adaboost 등 몇 가지 흔히 볼 수 있 는 통합 프레임 워 크 가 성숙 하 게 실현 되 었 습 니 다. 예전 의 대부분 사용 장면 에서 저 는 기본 적 인 기본 분류 기 모델 을 직접 사용 하여 이 를 조정 하지 않 습 니 다. 다른 몇 가지 주요 매개 변수, 예 를 들 어 기본 분류 기 수량 등 은 격자 조절 형식 을 바탕 으로 최 적 화 된 매개 변 수 를 검색 할 수 있 습 니 다.다음은 sklearn 홈 페이지 에서 adaboost 모델 에 대한 매개 변수 정의 입 니 다.
class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)

     그 중에서 우 리 는 'base' 를 볼 수 있다.estimator 는 우리 가 말 하 는 기 분류 기 모델 로 서로 다른 기 분류 기 모델 을 사용 하여 얻 는 효과 도 다 를 것 이다. 왜냐하면 모델 의 구축 원리 가 다 르 기 때문이다.
     오늘 은 주로 자신 이 정의 한 기본 분류 기 모델 [여 기 는 sklearn 이 제공 하 는 결정 트 리 모델 을 사용 합 니 다] 을 실현 한 다음 에 Adaboost 프레임 워 크 에 들 어가 모델 의 훈련 계산 등 작업 을 하고 구체 적 으로 다음 과 같이 실현 합 니 다.
#!usr/bin/env python
# encoding:utf-8
from __future__ import division
 
'''
__Author__:    
  :    Adaboost        【         】
'''
 
 
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier


#         
model=DecisionTreeClassifier()


def loadData(flag=True):
    '''
         
    '''
    X,y=[],[]
    if flag:
        with open('data.txt') as f:
            data_list=[one.strip().split(',') for one in f.readlines() if one]
        for i in range(len(data_list)):
            one=data_list[i]
            y.append(int(one.pop(-1)))
            X.append([int(O) for O in one])
    else:
        X, y = make_classification(n_samples=1000, n_features=18,n_informative=2, n_redundant=0,
                                   random_state=0, shuffle=False)
    return X,y


def buildModel(X, y, model):
    '''
       Adaboost           
    '''
    clf = AdaBoostClassifier(base_estimator=model, n_estimators=100, random_state=0)
    clf.fit(X, y)  
    print clf.feature_importances_  
    print clf.predict([[23,0,16,0,0,0,0,1,0,0,0,0,0,2,24,0,0,0]])
    print clf.score(X, y)  
    return clf


if __name__=='__main__':
    X,y=loadData(flag=True)
    buildModel(X, y, model)

    X,y=loadData(flag=False)
    buildModel(X, y, model)

      상기 코드 의 data. txt 데이터 내용 은 다음 과 같 습 니 다.
31,0,24,0,0,0,0,1,0,0,0,0,0,2,32,0,0,0,0
21,0,14,0,0,0,0,5,2,3,0,0,0,2,26,0,0,0,0
23,0,16,1,0,0,0,24,3,10,0,1,0,3,47,0,0,0,0
22,0,15,0,0,0,0,1,0,0,0,0,0,2,23,0,0,0,0
29,0,22,0,0,0,0,1,0,0,0,0,0,2,30,0,0,0,0
24,0,17,0,0,0,0,18,3,9,0,0,0,2,42,1,1,0,0
26,0,19,0,0,0,0,1,0,0,0,0,0,2,27,0,0,0,0
24,0,17,0,0,0,0,32,3,12,0,1,0,3,56,0,0,0,0
26,0,19,1,0,0,0,12,1,11,0,0,1,3,38,0,0,0,0
24,0,17,0,0,0,0,23,3,14,0,0,0,2,47,0,0,0,0
35,0,28,1,0,0,0,12,2,10,0,0,0,2,47,0,0,0,0
23,0,16,0,0,0,0,1,0,0,0,0,0,2,24,0,0,0,0
22,0,15,0,0,0,0,1,0,0,0,0,0,2,23,0,0,0,0
25,0,18,0,0,1,0,1,0,0,0,0,0,2,26,1,0,0,1
24,0,17,0,0,0,0,1,0,0,0,0,0,2,25,0,0,0,1
23,0,16,0,0,0,0,1,0,0,0,0,0,2,24,0,0,0,1
29,0,22,0,0,0,0,1,0,0,0,0,0,2,30,0,0,0,1
27,0,20,0,0,0,0,1,0,0,0,0,0,2,28,0,0,0,1
32,0,25,0,0,0,0,1,0,0,0,0,0,2,33,0,0,0,1
24,0,17,0,0,0,0,1,0,0,0,0,0,2,25,0,0,0,1
26,0,19,0,0,0,0,1,0,0,0,0,0,2,27,0,0,0,1

      관심 있 으 면 가 져 가서 놀아 도 돼.
      저 희 는 두 가지 서로 다른 데이터 세트 로 딩 형식 을 제공 합 니 다. flag 가 True 일 때 로 컬 데이터 세트 를 불 러 옵 니 다. flag 가 False 일 때 무 작위 로 데이터 세트 를 생 성 합 니 다. 출력 결 과 는 다음 과 같 습 니 다.

[1.57632184e-001 0.00000000e+000 1.86172414e-001 0.00000000e+000
 0.00000000e+000 6.66666730e-004 0.00000000e+000 4.41379310e-003
 4.66666663e-003 2.36364253e-128 0.00000000e+000 0.00000000e+000
 0.00000000e+000 0.00000000e+000             nan 0.00000000e+000
 0.00000000e+000 0.00000000e+000]
[1]
0.8571428571428571
[0.04933692 0.86155671 0.00374627 0.00760245 0.0039491  0.00200001
 0.00576473 0.00580435 0.00363638 0.00875166 0.         0.00962266
 0.00395545 0.00640003 0.0095751  0.01061542 0.00768277 0.        ]
[1]
1.0
[Finished in 1.3s]

      간단 한 실천 입 니 다. 만약 에 다른 기본 분류 기 모델 을 사용 하고 싶다 면 예 를 들 어 베 이 루스 모델, 벡터 모델 을 지원 한다 면 모두 시도 해 볼 수 있 습 니 다. 그러나 제 가 베 이 루스 모델 을 사용 하려 고 할 때 Adaboost 프레임 워 크 는 잘못 보 고 된 것 입 니 다. 관련 속성 이 없다 고 합 니 다.이것 은 제 가 호출 한 문제 인지 sklearn 이 실 현 했 을 때 대응 하 는 모델 이 해당 하 는 방법 을 제공 하지 않 아서 생 긴 것 인지 모 르 겠 습 니 다. 나중에 시간 이 있 으 면 계속 연구 하 세 요!

좋은 웹페이지 즐겨찾기