13 여러 알고리즘의 성능을 한눈에 비교하기

     

    지금까지 다룬 열 가지 알고리즘을 한 번에 실행시키고 각각의 성능을 비교해 보겠습니다.

    실습 | 여러 알고리즘 성능을 한눈에 비교하기

    # 사용할 분류기를 모두 지정합니다.
    classifiers = [DecisionTreeClassifier(),
                   RandomForestClassifier(),
                   GaussianNB(),
                   KNeighborsClassifier(),
                   SVC(kernel='linear'),
                   SVC(kernel='rbf'),
                   AdaBoostClassifier(),
                   QuadraticDiscriminantAnalysis(),
                   VotingClassifier(estimators=[('1', AdaBoostClassifier()), 
                                                ('2', RandomForestClassifier()),
                                                ('3', SVC(kernel='linear'))]),
                   BaggingClassifier(base_estimator=clf3, n_estimators=10, random_state=0)
                  ]
    # 각 분류기의 이름을 지정합니다. 
    classifier_names = ['D_tree',
                        'RF', 
                        'GNB', 
                        'KNN', 
                        'Ada',
                        'QDA',
                        'SVM_l',
                        'SVM_k',
                        'Voting',
                        'Bagging'
                       ]
    
    # 결과가 저장될 리스트를 만듭니다.
    modelaccuracies = []
    modelmeans = []
    modelnames = []
    
    # 각 분류기를 실행해 결과를 저장합니다. 
    classifier_data = zip(classifier_names, classifiers)
    for classifier_name, classifier in classifier_data:
        # 계층별 교차 검증 환경을 설정합니다. 
        skf = StratifiedKFold(n_splits=10, shuffle=True)
        # 교차 검증을 통해 정확도를 계산합니다. 
        accuracies = cross_val_score(classifier, X=X_train, y=y_train, cv=skf)
        # 정확도의 평균값을 출력합니다.
        print("Mean accuracy of", classifier_name, ": {:.2f} %".format(accuracies.mean()*100))
        # 결과를 저장합니다.
        modelaccuracies.append(accuracies)
        modelnames.append(classifier_name)
        modelmeans.append(accuracies.mean()*100)  
    
    # 분류기별 정확도의 평균값을 막대 그래프로 출력합니다.
    plt.figure(figsize=(10,5))    
    plt.ylim([60, 80])
    plt.bar(modelnames, modelmeans);
    
    # 분류기별 결과를 박스 그래프로 출력합니다.
    fig = plt.figure(figsize=(10,5))
    ax = fig.add_subplot(111)
    ax.boxplot(modelaccuracies)
    ax.set_xticklabels(modelnames)
    plt.show()
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.