PYTHON分類

2332 ワード

分類の概要
分類は、既知のサンプルのトレーニングセットに基づいて、テストされるセットのどのセットがどのカテゴリに属するかを識別する監視学習アルゴリズムである.分類アルゴリズムを実現するモジュールを分類器と呼び,主に2つの部分,訓練,分類を含む.トレーニングは、既知のサンプルからフィーチャーを抽出し、ラベルクラスをマークし、分類器を確立することです.分類とは、分類器を用いて未知のカテゴリのデータを判断するカテゴリである.分類の主なアルゴリズムは:素朴なベイズアルゴリズム、ガウスベイズアルゴリズム、バーヌリーベイズアルゴリズムを含む
分類器の応用
Sklearnクラスライブラリには多くの分類器の実装が含まれており、ここではガウス素朴ベイズを使用してアヤメのデータを分析し、アヤメ、変色アヤメ、バージニアアヤメを含む.まず、文字列配列を整数データに変換します.
def get_classification(ft,msample):
    t = zeros(len(msample))
    t[msample == 'setosa'] = 1
    t[msample == 'versicolor'] = 2
    t[msample == 'virginica'] = 3
    #  60%        ,        
    train, test, t_train, t_test = model_selection.train_test_split(ft,t,test_size = 0.4, random_state = 0)
    print "train:
",train, "
test:
",test,"
t_train:
" ,t_train,"
t_test:
", t_test cf = GaussianNB() cf.fit(train,t_train) print cf.score(test,t_test)

この分類器の精度は93%であり、正確に分類されたサンプル数をサンプル総数、すなわち正確な予測の割合で除算する.
分類器のパフォーマンスを評価するツール
  • 混同行列
  • #      :from sklearn.metrics import confusion_matrix
    #             ,   4   ,       ,              
    print confusion_matrix(cf.predict(test), t_test)
    '''
        :
    [[16  0  0]
     [ 0 23  4]
     [ 0  0 17]]
    '''
    
  • 完全レポート
  • print classification_report(cf.predict(test), t_test, target_names=['setosa', 'versicolor', 'virginica'])
    '''
        :
                 precision    recall  f1-score   support
    
         setosa       1.00      1.00      1.00        16
     versicolor       1.00      0.85      0.92        27
      virginica       0.81      1.00      0.89        17
    
    avg / total       0.95      0.93      0.93        60
    '''
    
  • Cross Validation評価モデル
  •     scores = model_selection.cross_val_score(cf, ft, t, cv=6)
        print scores
        print mean(scores)
    

    実行結果:
    0.933333333333
    
    
    [ 0.92592593  1.          0.91666667  0.91666667  0.95833333  1.        ]
    0.952932098765
    

    拡張:1、テキスト分類はどのように応用するか2、バーヌリベイズアルゴリズム2類判別(0,1)
    参照先:https://en.wikipedia.org/wiki/Statistical_classification http://python.jobbole.com/81721/http://www.cnblogs.com/taichu/p/5251332.html http://www.cnblogs.com/jasonfreak/p/5448462.html