{ "cells": [ { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from __future__ import unicode_literals\n", "\n", "host = '127.0.0.1'\n", "port = 9199\n", "name = 'test'\n", "\n", "import sys\n", "import json\n", "import random\n", "\n", "import jubatus\n", "from jubatus.common import Datum\n", "\n", "def _output(unicode_value):\n", " if hasattr(sys.stdout, 'buffer'):\n", " # for Python 3\n", " stdout = sys.stdout.buffer\n", " else:\n", " # for Python 2\n", " stdout = sys.stdout\n", " stdout.write(unicode_value.encode('utf-8'))\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def train(client):\n", " train_data = [\n", " ('徳川', Datum({'name': '家康'})),\n", " ('徳川', Datum({'name': '秀忠'})),\n", " ('徳川', Datum({'name': '家光'})),\n", " ('徳川', Datum({'name': '家綱'})),\n", " ('徳川', Datum({'name': '綱吉'})),\n", " ('徳川', Datum({'name': '家宣'})),\n", " ('徳川', Datum({'name': '家継'})),\n", " ('徳川', Datum({'name': '吉宗'})),\n", " ('徳川', Datum({'name': '家重'})),\n", " ('徳川', Datum({'name': '家治'})),\n", " ('徳川', Datum({'name': '家斉'})),\n", " ('徳川', Datum({'name': '家慶'})),\n", " ('徳川', Datum({'name': '家定'})),\n", " ('徳川', Datum({'name': '家茂'})),\n", " # (u'徳川', Datum({'name': u'慶喜'})),\n", "\n", " ('足利', Datum({'name': '尊氏'})),\n", " ('足利', Datum({'name': '義詮'})),\n", " ('足利', Datum({'name': '義満'})),\n", " ('足利', Datum({'name': '義持'})),\n", " ('足利', Datum({'name': '義量'})),\n", " ('足利', Datum({'name': '義教'})),\n", " ('足利', Datum({'name': '義勝'})),\n", " ('足利', Datum({'name': '義政'})),\n", " ('足利', Datum({'name': '義尚'})),\n", " ('足利', Datum({'name': '義稙'})),\n", " ('足利', Datum({'name': '義澄'})),\n", " ('足利', Datum({'name': '義稙'})),\n", " ('足利', Datum({'name': '義晴'})),\n", " ('足利', Datum({'name': '義輝'})),\n", " ('足利', Datum({'name': '義栄'})),\n", " # (u'足利', Datum({'name': u'義昭'})),\n", "\n", " ('北条', Datum({'name': '時政'})),\n", " ('北条', Datum({'name': '義時'})),\n", " ('北条', Datum({'name': '泰時'})),\n", " ('北条', Datum({'name': '経時'})),\n", " ('北条', Datum({'name': '時頼'})),\n", " ('北条', Datum({'name': '長時'})),\n", " ('北条', Datum({'name': '政村'})),\n", " ('北条', Datum({'name': '時宗'})),\n", " ('北条', Datum({'name': '貞時'})),\n", " ('北条', Datum({'name': '師時'})),\n", " ('北条', Datum({'name': '宗宣'})),\n", " ('北条', Datum({'name': '煕時'})),\n", " ('北条', Datum({'name': '基時'})),\n", " ('北条', Datum({'name': '高時'})),\n", " ('北条', Datum({'name': '貞顕'})),\n", " # (u'北条', Datum({'name': u'守時'})),\n", " ]\n", "\n", " # training data must be shuffled on online learning!\n", " random.shuffle(train_data)\n", "\n", " # run train\n", " client.train(train_data)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def predict(client):\n", " # predict the last shogun\n", " data = [\n", " Datum({'name': '慶喜'}),\n", " Datum({'name': '義昭'}),\n", " Datum({'name': '晋三'}),\n", " ]\n", " for d in data:\n", " res = client.classify([d])\n", " # get the predicted shogun name\n", " shogun_name = max(res[0], key = lambda x: x.score).label\n", " first_name = d.string_values[0][1]\n", " _output('{0} {1}\\n'.format(shogun_name, first_name))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "徳川 慶喜\n", "足利 義昭\n", "徳川 晋三\n" ] } ], "source": [ "client = jubatus.Classifier(host, port, name)\n", "train(client)\n", "predict(client)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 2 }