単純ベイズ分類器

これは,各クラスの特徴ベクトルが正規分布する事を仮定した(とはいえ,必ずしも独立に分布している必要はありません)単純な分類モデルです.したがって,全体的なデータ分布関数は,1クラスに対して1成分の混合ガウス分布で表現できると仮定されます.このアルゴリズムは,学習データを用いて各クラスの平均ベクトルと共分散行列を推定し,それらを用いた予測を行います.

[Fukunaga90] K. Fukunaga. Introduction to Statistical Pattern Recognition. second ed., New York: Academic Press, 1990.

CvNormalBayesClassifier

Comments from the Wiki

CvNormalBayesClassifier

正規分布するデータに対するベイズ分類器.

class CvNormalBayesClassifier : public CvStatModel
{
public:
    CvNormalBayesClassifier();
    virtual ~CvNormalBayesClassifier();

    CvNormalBayesClassifier( const CvMat* _train_data, const CvMat* _responses,
        const CvMat* _var_idx=0, const CvMat* _sample_idx=0 );

    virtual bool train( const CvMat* _train_data, const CvMat* _responses,
        const CvMat* _var_idx = 0, const CvMat* _sample_idx=0, bool update=false );

    virtual float predict( const CvMat* _samples, CvMat* results=0 ) const;
    virtual void clear();

    virtual void save( const char* filename, const char* name=0 );
    virtual void load( const char* filename, const char* name=0 );

    virtual void write( CvFileStorage* storage, const char* name );
    virtual void read( CvFileStorage* storage, CvFileNode* node );
protected:
    ...
};

CvNormalBayesClassifier::train

Comments from the Wiki

bool CvNormalBayesClassifier::train(const CvMat* _train_data, const CvMat* _responses, const CvMat* _var_idx =0, const CvMat* _sample_idx=0, bool update=false)

モデルを学習します.

このメソッドは,単純ベイズ分類器の学習を行います.これは,以下の制限を持つ一般的な train 「メソッド」の形式に従います: CV_ROW_SAMPLE データレイアウトのみをサポートします.また,すべての入力変数は連続変数で,出力変数はカテゴリ変数です(つまり,ベクトルが CV_32FC1 型だとしても, _responses の要素は整数でなければいけません).そして,データ欠損はサポートされていません.

さらに,モデルを一から学習する( update=false )か,新しい学習データを利用して更新する( update=true )か,を指定する update フラグが存在します.

CvNormalBayesClassifier::predict

Comments from the Wiki

float CvNormalBayesClassifier::predict(const CvMat* samples, CvMat* results=0) const

サンプルに対する応答を予測します.

predict メソッドは,入力ベクトルに対して最も可能性の高いクラスを推定します.その入力ベクトル(単数または複数)は,行列 samples の各行に格納されています.入力ベクトルが複数の場合の出力は,1つのベクトル results となります.また,単一の入力ベクトルに対して予測されたクラスは,このメソッドの戻り値になります.

目次

このページ