| No. | 方針 | なぜか | コマンド例 | 備考 |
| 1 | マシンのスペックはCPUよりメモリを重視する。 | 元のCSVファイルが小さくてもメモリを大量に消費して時間がかかるから。 | (仮想マシンに割り当てるメモリ容量はできるだけ多くする) | |
| 2 | 最初は1000件ぐらいの小さなデータで試す。 | いきなり生データを投入すると1日中実行しても完了しないから。 リソース消費量の見込みをたてないと従量課金制度のクラウドでお金がかかるから。 |
入手したファイル:kddcup.data.csv.original jubatusに投入するファイル:kddcup.data.csv # head -n 1000 kddcup.data.csv.original > kddcup.data.csv |
jubatus公式のチュートリアルですと KDDI CUPのデータの「10%版」を使っています。 http://jubat.us/ja/tutorial/anomaly.html |
| 3 |
サンプルコードのwhile文やfor文には |
進捗が見えないと、あとどれだけPCを起動させておく必要があるか予想できないから。 No.2の試行について次はどの程度件数を増やしてよいのか予想できないから。 |
書き込む先の変数の名前がdataの場合。
the_count = 0 # 最終的に得られるデータ #以後、適切なインデントで処理が続く…。 |
カウンタ変数を用意せず len(data)で計測することもできます。 一行にまとめたい場合。 print("{theTime}, count: {intc}".format(theTime=datetime.now().strftime("%Y/%m/%d %H:%M:%S"), intc=the_count)) |
| 4 | サンプルコードを繰り返しテストする場合は、clearの処理を入れておく。 | 前回の実行結果が学習に追加されてF値が意図しない値になるから。 実行時間が増大していくから。 |
client = jubatus.Anomaly('127.0.0.1', 9199,
'kdd') client.clear() |
|
| 5 | OSの再起動を入れながらデータを小分けに覚えさせたい場合はsave、loadの処理を活用する。 | サービスを再起動すると学習結果は失われてしまうから。 |
# "save_kdd"という識別子でデータをロード、セーブする場合。 # 学習の保存 # 学習の再開 |
オブジェクト名やclear、save、loadの記述箇所はそのプログラムの内容によります。 養成読本のサンプルプログラムの場合、1000件では1.7M程度のファイルが作成されます。 |
| EOR |