pikesaku’s blog

個人的なプログラム勉強メモです。記載内容について一切の責任は持ちません。

jubatus anomalyのnum_rules動作検証(テストデータ生成ツール)

説明

引数にデータ数、データのタイプ(以下参照)を指定し、データを生成するツール
・全部同じデータ
・一様分布
・標準正規分布
正規分布(平均50、標準偏差15)

make_data.py

# -*- coding: utf-8 -*-

import argparse
import numpy as np

parser = argparse.ArgumentParser(description='make data')
parser.add_argument('num_of_data',               help='num of data', type=int)
parser.add_argument('-t', '--type', dest='type', help='distribution type. zenbu_onaji or seiki1 or seiki2 or ichiyou', required=True)
args = parser.parse_args()


# 標準正規分布
def seiki1():
    for i in list(np.random.randn(args.num_of_data)):
        print(i)


# 正規分布
def seiki2():
    heikin = 50
    hensa = 15
    for i in list(np.random.normal(heikin, hensa, args.num_of_data)):
        print(i)


# 一様分布
def ichiyou():
    s = 1
    e = 100
    for i in list(np.random.uniform(s, e, args.num_of_data)):
        print(i)


# 全部同じ値
def zenbu_onaji():
    for i in range(args.num_of_data):
        print(1)


if __name__ == '__main__':
    if args.type == 'zenbu_onaji':
        zenbu_onaji()
    elif args.type == 'seiki1':
        seiki1()
    elif args.type == 'seiki2':
        seiki2()
    elif args.type == 'ichiyou':
        ichiyou()
    else:
        print('Error: invalid type')
        exit(1)

使い方例

$ python ./make_data.py 5 -t zenbu_onaji
1
1
1
1
1
$ python ./make_data.py 5 -t ichiyou
82.293075475
87.1943748063
84.6043656292
49.5115604224
90.631604143
$ python ./make_data.py 5 -t seiki1
-0.120117893927
0.786911376173
-1.0530541462
-0.3343056616
1.43960974838
$ python ./make_data.py 5 -t seiki2
35.7171926461
61.4762823277
56.6341546999
36.3448121399
63.7552040148
$