大学教授のショップ [ホリエモンのメルマガで副業として1番 に紹介されました!] 大学教授のショップ [ホリエモンのメルマガで副業として1番 に紹介されました!]

Python用 21の二クラス分類手法を一気に実行して結果を比較する!ダブルクロスバリデーションによる評価付きのプログラム・コード

データを準備するだけで、Python言語で21の二クラス分類手法を一気に実行して結果を比較したり、ダブルクロスバリデーションにより評価したりするプログラム・コードです。
21の二クラス分類手法はこちらです。データを準備して実行すれば、これらがすべて自動的に行われます!

1. 線形判別分析(Linear Discriminant Analysis, LDA) http://univprof.com/archives/16-05-30-3588648.html
2. 線形サポートベクターマシン (Linear Support Vector Machine, LSVM)
3. 非線形サポートベクターマシン (Non-Linear Support Vector Machine, NLSVM) http://univprof.com/archives/16-02-26-2888783.html
4. 二次判別分析 (Quadratic Discriminant Analysis, QDA)
5. k近傍法によるクラス分類 (k-Nearest Neighbor Classification, kNNC)
6. 単純ベイズ分類器 (Naïve Bayes, NB) http://univprof.com/archives/16-07-10-4585774.html
7. 決定木 (Decision Tree, DT) http://univprof.com/archives/16-05-25-3464187.html
8. ランダムフォレスト(Random Forests, RF) http://univprof.com/archives/16-04-06-2889192.html
9. Gaussian Process Classification (GPC)
10. LDAに基づくバギング(アンサンブル) (Bagging[LDA])
11. LSVMに基づくバギング(アンサンブル) (Bagging[LSVM])
12. NLSVMに基づくバギング(アンサンブル) (Bagging[NLSVM])
13. QDAに基づくバギング(アンサンブル) (Bagging[QDA])
14. kNNCに基づくバギング(アンサンブル) (Bagging[kNNC])
15. NBに基づくバギング(アンサンブル) (Bagging[NB])
16. DTに基づくバギング(アンサンブル) (Bagging[DT])
17. GPCに基づくバギング(アンサンブル) (Bagging[GPC])
18. LSVMに基づくAdaptive Boosting (AdaBoost[LSVM]) http://univprof.com/archives/16-07-01-4380227.html
19. NLSVMに基づくAdaptive Boosting (AdaBoost[NLSVM]) http://univprof.com/archives/16-07-01-4380227.html
20. NBに基づくAdaptive Boosting (AdaBoost[NB]) http://univprof.com/archives/16-07-01-4380227.html
21. DTに基づくAdaptive Boosting (AdaBoost[DT]) http://univprof.com/archives/16-07-01-4380227.html

このようにアンサンブル学習を含む代表的なニクラス分類手法が揃っております。一通りのデータ分析・解析ができるってことです。

もちろん、クロスバリデーションにより、
■LSVMにおけるC
■NLSVMにおけるC・γ
■kNNCにおけるk
■DTにおける決定木の深さ
■RFにおける各決定木で使う説明変数の割合
を最適化しており、その結果も出力されます。
1.のLDAと2.のLSVMは線形のクラス分類手法ですので、それぞれの標準化後の変数の重みの値も出力されます。
最後は、ダブルクロスバリデーション http://univprof.com/archives/16-06-12-3889388.html により各手法の予測性能を評価します。つまり、至れり尽くせりなプログラムになっております。
ダブルクロスバリデーションにはサンプル数が多いと少し時間がかかるため、ダブルクロスバリデーションを省略することもできます。

以下のURLからzipファイルをダウンロードしてください。
http://univprofblog.html.xdomain.jp/code/bclass_analysis_all_e_python_pass.zip
購入していただくと、zipファイルを解凍するためのパスワードが表示されます。

こちらのページ https://note.mu/univprof/n/n38855bb9bfa8 の無料部分や(有料部分はここで購入するプログラムと同じです)、ダブルクロスバリデーションについてはこちらのページ http://univprof.com/archives/16-06-12-3889388.html もご覧ください。

このプログラムはcsvファイルによってデータのやり取りをします。csvファイルのデータ形式およびサンプルデータについては下のURLのページをご覧ください。
https://note.mu/univprof/n/n694487325cb1

プログラムを実行するときのPython環境については下のURLのページをご覧ください。
https://note.mu/univprof/n/nb07629b23252

また下のURLのzipファイルもダウンロードして下さい。
http://univprofblog.html.xdomain.jp/code/supportingfunctions.zip
解凍すると必要なスクリプトと関数があります(こちらは無料です)。解凍した後に、クラス分類のプログラムのディレクトリ(フォルダ)と同じところにすべてのファイルを置いてください。

あとは購入されたプログラムを実行するだけです。

計算終了後、自動的に結果が画面に出てきて、以下のcsvファイルが保存されます。
実行したあとに保存されるcsvファイルとその内容をまとめます。
■CalculatedY.csv ・・・ それぞれのクラス分類手法におけるモデル構築用データの目的変数の計算値
■PredictedYcv.csv ・・・ それぞれのクラス分類手法におけるモデル構築用データの目的変数のクロスバリデーション予測値
■PredictedY1.csv ・・・ それぞれのクラス分類手法における予測用データ1の目的変数の予測値
■PredictedY2.csv ・・・ それぞれのクラス分類手法における予測用データ2の目的変数の予測値
■StatisticsAll.csv ・・・ それぞれのクラス分類手法におけるモデル構築用データ・クロスバリデーション・予測用データ1のそれぞれTrue Positive・False Positive・False Negative・True Negative・正解率
■StandardWeights.csv ・・・ 線形のクラス分析手法(LDA・LSVM)における変数を標準化したあとの重み
■PredictedYdcv.csv ・・・ それぞれのクラス分類手法におけるモデル構築用データの目的変数のダブルクロスバリデーション予測値 http://univprof.com/archives/16-06-12-3889388.html (省略可能)
■StatisticsDcvAll.csv ・・・ それぞれのクラス分類手法におけるモデル構築用データのダブルクロスバリデーション後のTrue Positive・False Positive・False Negative・True Negative・正解率 (省略可能)

決定木によって得られたルールを見るためには、DTResult.dotというファイルをGraphvizというソフトウェア(アプリ)で開く必要があります。Graphvizをインストールされていない方は、こちらからダウンロードしてインストールしてください。
http://www.graphviz.org/Download..php
この他、CalculatedY.csv・PredictedYcv.csv・PredictedY1.csv・PredictedYdcv.csvのそれぞれに対応するすべての二クラス分類における目的変数の実測値と予測値との混同行列 (4×21=84) も出力されます。