示例#1
0
def query(file_path):
    retry_max = 3  # 再実行の上限回数
    retry_interval = 3  # 再実行の間隔(秒)

    # データ読み込み
    with open(file_path) as f:
        dic = {}
        line = f.readline()
        for line in f:
            line = line.rstrip()
            ls = line.split('\t')
            if len(ls) == 2:
                my_id = ls[0]
                my_value = float(ls[1])
                dic[my_id] = my_value
    d = Datum(dic)
    var_nam = os.path.basename(file_path)
    client = jubatus.Classifier(host, port, name, 300)

    for i in range(1, retry_max + 1):
        try:
            # RPC実行
            res = client.classify([d])
            ret = ""
            for j in range(len(res[0])):
                ret += "{0}\t{1}\t{2}\t{3}\n".format(res[0][j].label,
                                                     res[0][j].score, var_nam,
                                                     argvs[2])
            client.get_client().close()
            return ret
        except (msgpackrpc.error.TransportError, msgpackrpc.error.TimeoutError,
                msgpackrpc.error.RPCError) as e:
            client.get_client().close()
            client = jubatus.Classifier(host, port, name, 60)
            print(e)
            print("Re-try Querying time:{0} file:{1}".format(i, file_path))
            time.sleep(retry_interval)
        except (jubatus.common.client.InterfaceMismatch) as e:
            print(e)
            print("Failed Querying___{0}".format(file_path))
    client.get_client().close()
    ret = "Failed Querying {0}\n".format(file_path)
    return ret
示例#2
0
def learn(cat, file_path):
    # 形成済みデータファイルをもらって1回だけ学習する
    retry_max = 10  # 再実行の回数上限
    retry_interval = 3  # 再実行の間隔(秒)

    # データ読み込み
    with open(file_path) as f:
        dic = {}
        line = f.readline()
        for line in f:
            line = line.rstrip()
            ls = line.split('\t')
            if len(ls) == 2:
                my_id = ls[0]
                my_value = float(ls[1])
                dic[my_id] = my_value
    d = Datum(dic)
    t_d = [[cat, d]]
    client = jubatus.Classifier(host, port, name, 60)

    for i in range(1, retry_max + 1):
        try:
            client.train(t_d)
            print("Finish training {0}".format(file_path))
            client.get_client().close()
            return file_path, 1
        except (msgpackrpc.error.TransportError, msgpackrpc.error.TimeoutError,
                msgpackrpc.error.RPCError) as e:
            client.get_client().close()
            client = jubatus.Classifier(host, port, name, 60)
            print(e)
            print("Re-try Learning time:{0} file:{1}".format(i, file_path))
            time.sleep(retry_interval)
        except (jubatus.common.client.InterfaceMismatch) as e:
            print(e)
            print("Failed Learning___{0}".format(file_path))

    client.get_client().close()
    return file_path, 0
示例#3
0
    def dim2_classifier_train(self, datafile):
        import jubatus
        from jubatus.common import Datum
        import pandas as pd

        host = "127.0.0.1"
        port = 9199
        name = "2dim_classifier"
        client = jubatus.Classifier(host, port, name)

        df = pd.read_csv(datafile, names=('x', 'y', 'label'))
        for ix, row in df.iterrows():
            client.train([(str(row['label']),
                           Datum({
                               'x': row['x'],
                               'y': row['y']
                           }))])
            # print "ix:{0}".format(ix)
        self.query_num = ix + 1
        self.query_type = "2dim_classifier_train"
示例#4
0
def post():
    title = u"Train"
    if request.method == 'POST':
        mongo_server_ip = request.form['mongo_server_ip']
        mongo_server_port = request.form['mongo_server_port']
        jubatus_server_ip = request.form['jubatus_server_ip']
        jubatus_server_port = request.form['jubatus_server_port']
        db_name = request.form['db_name']
        collection_name = request.form['collection_name']
        # POSTで得られる値はstr型なのでintに変換する
        jubatus_server_port = int(jubatus_server_port)
        mongo_server_port = int(mongo_server_port)

        # jubaclassifierのtrainの実行および表示
        client = jubatus.Classifier(jubatus_server_ip, jubatus_server_port,
                                    name)
        lux_classifier = LuxClassifier()
        result_list = lux_classifier.train(client, mongo_server_ip,
                                           mongo_server_port, db_name,
                                           collection_name)

        # データフレームの取得
        convert_mongo = convertMongo()
        train_sensors_dic = convert_mongo.getTrainSensorsDic(
            mongo_server_ip, mongo_server_port, db_name, collection_name)
        data_frame = convert_mongo.getTable(train_sensors_dic)
        # とりあえずターミナル上に表示
        print data_frame

        return render_template('index.html',
                               title=title,
                               jubatus_server_ip=jubatus_server_ip,
                               jubatus_server_port=jubatus_server_port,
                               mongo_server_ip=mongo_server_ip,
                               mongo_server_port=mongo_server_port,
                               result_list=result_list)
    else:
        # エラーなどでリダイレクトしたい場合はこんな感じで
        print train_sensor_data
        return redirect(url_for('hello'))
示例#5
0
    # training data must be shuffled on online learning!
    random.shuffle(train_data)

    # run train
    client.train(train_data)


def predict(client):
    # predict the last shogun
    data = [
        Datum({'name': u'慶喜'}),
        Datum({'name': u'義昭'}),
        Datum({'name': u'守時'}),
    ]
    for d in data:
        res = client.classify([d])
        # get the predicted shogun name
        sys.stdout.write(max(res[0], key=lambda x: x.score).label)
        sys.stdout.write(' ')
        sys.stdout.write(d.string_values[0][1].encode('utf-8'))
        sys.stdout.write('\n')


if __name__ == '__main__':
    # connect to the jubatus
    client = jubatus.Classifier(host, port, name)
    # run example
    train(client)
    predict(client)
示例#6
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from requests_oauthlib import OAuth1Session
import jubatus
import time
from lux_classifier import LuxClassifier

client = jubatus.Classifier('127.0.0.1', 9199, 'test')
previous_result = 'previous'

oath_key_dict = {
    "consumer_key": "a71iiYuMoJrhSSZBQBWF5bDVm",
    "consumer_secret": "bhKEUnaccqA75t9JWjHJ6A7E76RlU4ce1N23p8Y61muh8NvF2k",
    "access_token": "2587234754-SBW9JesNhQEOPlsrqwSpt3YlhwYCliMDfyAbvPU",
    "access_token_secret": "ntqzPEeLlvXsG14KCEkdxeGLSKRKIVrQT3dg3E9rA7njj"
}

CK = oath_key_dict["consumer_key"]
CS = oath_key_dict["consumer_secret"]
AT = oath_key_dict["access_token"]
AS = oath_key_dict["access_token_secret"]

# ツイート投稿用のURL
url = "https://api.twitter.com/1.1/statuses/update.json"

# ツイート本文
for d in range(0, 10):
    params = {"status": d}
    twitter = OAuth1Session(CK, CS, AT, AS)
    req = twitter.post(url, params=params)