def main():
    # 引数の処理
    target_time = ""  # 処理対象の時刻を引数で指定
    target_dir = ""
    try_times = 10  # 試行回数
    argvs = sys.argv  # コマンドライン引数を格納したリストの取得
    print(argvs)
    argc = len(argvs)  # 引数の個数
    if argc > 3:
        target_time = argvs[1]  # 16 or 23
        target_dir = argvs[2]  # 結果を保存するフォルダ名
        try_times = int(argvs[3])  # 作成する学習器の数(RFなら2000〜3000が良いと思う)
    else:
        print("input: target-time, target-dir, try-times")
        exit()

    # 教師データ作成の準備
    terms = [(dt(2004, 2, 18), dt(2013, 9, 3)),
             (dt(2015, 6, 23), dt(2017, 9, 30))]  # for aso
    #terms = [(dt(2010, 2, 18), dt(2013, 9, 3)), (dt(2015, 6, 23), dt(2016, 5, 1))] # for aso
    #terms = [(dt(2015, 6, 23), dt(2016, 2, 1))] # for aso
    #terms = [(dt(2015, 3, 1), dt(2016, 4, 1))] # for chichibu

    _save_flag = False  # 検証用にファイルを残したいなら、Trueとする

    # 特徴生成オブジェクト作成
    fg_obj = feature.feature_generator(target_time)
    tc = create_learning_data.teacher_creator(
        fg_obj, terms, "unkai_date.csv")  # 一度メモリ内に教師データを作成するが、時間がかかる。
    process(target_dir, tc, save_flag=_save_flag, try_times=try_times)
def main():
    # 引数の処理
    target_time = ""   # 処理対象の時刻を引数で指定
    target_dir = ""
    try_times = 10    # 試行回数
    argvs = sys.argv   # コマンドライン引数を格納したリストの取得
    print(argvs)
    argc = len(argvs)  # 引数の個数
    if argc > 3:
        target_time = argvs[1]      # 16 or 23
        target_dir = argvs[2]       # 結果を保存するフォルダ名
        try_times = int(argvs[3])   # 作成する学習器の数(RFなら2000〜3000が良いと思う)
    else:
        print("input: target-time, target-dir, try-times")
        exit()

    # 教師データ作成の準備
    terms = [(dt(2004, 2, 18), dt(2013, 9, 3)), (dt(2015, 6, 23), dt(2017, 9, 30))] # for aso
    #terms = [(dt(2010, 2, 18), dt(2013, 9, 3)), (dt(2015, 6, 23), dt(2016, 5, 1))] # for aso
    #terms = [(dt(2015, 6, 23), dt(2016, 2, 1))] # for aso
    #terms = [(dt(2015, 3, 1), dt(2016, 4, 1))] # for chichibu

    _save_flag = False # 検証用にファイルを残したいなら、Trueとする

    # 特徴生成オブジェクト作成
    fg_obj = feature.feature_generator(target_time)
    tc = create_learning_data.teacher_creator(fg_obj, terms, "unkai_date.csv") # 一度メモリ内に教師データを作成するが、時間がかかる。
    process(target_dir, tc, save_flag=_save_flag, try_times=try_times)
def main_process(target_time, target_dir, terms):
    """ 
    外部からの呼び出しを意識している。
    target_time: str, 予測したい時刻(生成する特徴量の作成に影響する)
    target_dir: str, 学習器が保存されたフォルダ名
    terms: list, 処理期間を格納したリスト。要素はタプル。要素の数は複数あっても良い。    
    """

    # 引数に合わせて使う特徴ベクトル生成関数を変えて、検証する
    fg_obj = feature.feature_generator(target_time)
    sub_process2(target_dir, fg_obj, terms)
def main():
    # 処理の対象期間(過去のデータに加えて、最新の観測データも加えるので、タプルで期間を指定する)
    #terms = [(dt(2004, 2, 18), dt(2013, 9, 3)), (dt(2015, 6, 23), dt(2016, 1, 4))]
    terms = [(dt(2015, 6, 23), dt(2015, 11, 30))]

    # 特徴ベクトルを作成する関数
    fg_obj = feature.feature_generator(23)

    # 特徴ベクトルを作成して保存
    tc = teacher_creator(fg_obj, terms)
    tc.save_teacher()
def main():
	# 処理の対象期間(過去のデータに加えて、最新の観測データも加えるので、タプルで期間を指定する)
	#terms = [(dt(2004, 2, 18), dt(2013, 9, 3)), (dt(2015, 6, 23), dt(2016, 1, 4))]
	terms = [(dt(2015, 6, 23), dt(2015, 11, 30))]

	# 特徴ベクトルを作成する関数
	fg_obj = feature.feature_generator(23)

	# 特徴ベクトルを作成して保存
	tc = teacher_creator(fg_obj, terms)
	tc.save_teacher()
Example #6
0
def main():
    # 機械学習オブジェクトを生成(復元)
    clf = mc.load(mc.default_path)

    # 特徴生成オブジェクト作成
    fg_obj = feature.feature_generator(23)

    predict(
        clf,
        date_range(datetime.datetime(2015, 6, 23),
                   datetime.datetime(2015, 10, 24)), fg_obj, True)
def main():
	# 機械学習オブジェクトを生成(復元)
	clf = mc.load(mc.default_path)

	# 特徴生成オブジェクト作成
	fg_obj = feature.feature_generator(23)

	predict(
		clf, 
		date_range(datetime.datetime(2015, 6, 23), datetime.datetime(2015, 10, 24)), 
		fg_obj, 
		True
		)
def main_process(target_time, target_dir):
	""" 
	外部からの呼び出しを意識している。
	"""
	# 処理対象の制限(処理時間の短縮になるかも)
	#terms = [(dt(2016, 5, 1), dt(2016, 5, 19))] 
	terms = [(dt(2016, 8, 1), dt(2016, 9, 8))] 

	# 引数に合わせて使う特徴ベクトル生成関数を変えて、検証する
	fg_obj = feature.feature_generator(target_time)
	_path = sub_process2(target_time, target_dir, fg_obj, terms)

	return [_path]
Example #9
0
    def __init__(self, key='train'):

        # Specify data path
        assert key in ('train', 'val', 'test')
        if key == 'train':
            self._data_path = workspace_config.train_path
        elif key == 'val':
            self._data_path = workspace_config.val_path
        elif key == 'test':
            self._data_path = workspace_config.test_path
        else:
            print('No magic here!')

        # Specify label mapping
        self._label_map = {
            'yes': 0,
            'no': 1,
            'up': 2,
            'down': 3,
            'left': 4,
            'right': 5,
            'on': 6,
            'off': 7,
            'stop': 8,
            'go': 9,
            'silence': 10,
            'unknown': 11,
        }
        self._class_num = 12

        # Fetch feature generator
        self._fgen = feature_generator()

        # Do the actuall work
        self._data, self._label = self.load_data()

        # Marker
        self._epochs_completed = 0
        self._index_in_epoch = 0
        self._num_examples = self._data.shape[0]

        return
def main():
	# 予想したい日の日付けを設定
	target_date = None
	_day = dt.now()        # まずはコマンドライン引数による指定がない場合を想定
	if _day.hour >= 10:    # この時刻を過ぎると、翌日の予想を実施する
		_day += td(days=1)
	target_date = dt(year=_day.year, month=_day.month, day=_day.day)

	argvs = sys.argv       # コマンドライン引数を格納したリストの取得
	argc = len(argvs)      # 引数の個数
	if argc >= 2:          # 引数で計算対象の日を渡す
		arg = argvs[1]
		arg += " 0:0:0"    # 時分秒を加える
		t = timeKM.getTime(arg)
		if t != None:
			target_date = t	
	print(target_date)

	# 予測を実行する時刻を決定する(引数がなければスクリプト実行時の時刻が使われる)
	process_hour = dt.now().hour
	if argc >= 3:          # 引数で予想実行時刻を渡す(その時刻に雲海が出るかを確認するものではない)
		arg = argvs[2]
		if arg.isdigit():
			process_hour = int(arg)

	# 予報する対象の時刻
	target_time = 23
	if 23 > process_hour >= 16:
		target_time = 16


	# アメダスの観測所オブジェクトを作成
	amedas_nodes = amd.get_amedas_nodes()
	#print(amedas_nodes)
	# 特徴ベクトルを生成するオブジェクトの用意
	features_dict = {}
	for block_no in ["47819", "1240", "0962", "47818"]:
		node = amedas_nodes[block_no]
		lines = get_amedas_data(node, target_date)
		weather_data = feature.get_weather_dict(lines)
		_keys = sorted(weather_data.keys())       # 確認のために表示
		for a_key in _keys:
			print(block_no, weather_data[a_key])
		if int(node.block_no) > 47000:
			features_dict[block_no] = [weather_data, feature.index_A]
		else:
			features_dict[block_no] = [weather_data, feature.index_B]
	fg_obj = feature.feature_generator(target_time, features_dict)

	# 機械学習オブジェクトを生成
	clf = mc.load(os.path.abspath("./learned_machine/time" + str(target_time)))
	print(type(clf))

	# 特徴ベクトルを生成
	_feature = fg_obj.get_feature(target_date)
	_feature = np.array([_feature]) # TensorFlowはnumpy.arrayの2重の入れ子でないと動かない
	print(_feature)

	# 予測を実施
	print("--predict--")
	print("target date: " + str(target_date))
	print("process hur: " + str(process_hour))

	results = []
	#if _feature != None:
	#if not None in _feature:  # Noneがあると計算出来ない
	test = clf.predict(_feature)
	results.append((target_date, test[0], _feature))
	print(test)


	# 予測結果を保存
	with open("result.csv", "w") as fw:
		for result in results:
			_date, predict_result, _feature = result
			str_feature = [str(x) for x in _feature]
			fw.write(str(dt.now()))
			fw.write(",")
			fw.write(str(_date))
			fw.write(",")
			fw.write(str(predict_result))
			fw.write(",")
			fw.write("$")
			fw.write(",")
			fw.write(",".join(str_feature))
			fw.write("\n")

	return results