Created
June 19, 2016 07:16
-
-
Save staybuzz/a527202feef6d155c8aad372329793b8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"http://momijiame.tumblr.com/post/114751531866/python-iris-%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%A7%E5%88%86%E9%A1%9E%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"https://github.com/levelfour/machine-learning-2014/wiki/%E7%AC%AC1%E5%9B%9E---iris-classification" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.svm import LinearSVC\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[[1, 2], [1, 4], [2, 4], [2, 1], [5, 1], [4, 2]]\n", | |
"['1', '1', '1', '2', '2', '2']\n" | |
] | |
} | |
], | |
"source": [ | |
"data = [[1,2], [1,4], [2,4], [2,1], [5,1], [4,2]] # 例題6.1の学習データ\n", | |
"#label = [\"c1\", \"c1\", \"c1\", \"c2\", \"c2\", \"c2\"] # 正解ラベル\n", | |
"label = [\"1\", \"1\", \"1\", \"2\", \"2\", \"2\"] # 正解ラベル\n", | |
"print(data)\n", | |
"print(label)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 87, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1., 1., 2.], dtype=float32)" | |
] | |
}, | |
"execution_count": 87, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data = np.asarray(data, np.float32)\n", | |
"data[3:,1]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 89, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n", | |
" intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n", | |
" multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n", | |
" verbose=0)" | |
] | |
}, | |
"execution_count": 89, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"classifier = LinearSVC() # 線形SVC\n", | |
"classifier.fit(data, label) # 学習" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 90, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['1', '1', '1', '2', '2', '2'], \n", | |
" dtype='<U1')" | |
] | |
}, | |
"execution_count": 90, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"result = classifier.predict(data)\n", | |
"result" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 66, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1.0\n" | |
] | |
} | |
], | |
"source": [ | |
"# 意味ないけど\n", | |
"from sklearn.metrics import accuracy_score\n", | |
"accuracy = accuracy_score(label, result)\n", | |
"print(accuracy)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### グラフにプロットしたい" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 67, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 68, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.PathCollection at 0x7fb08315e588>" | |
] | |
}, | |
"execution_count": 68, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fb08315e978>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(data[:3,0], data[:3,1], c='red') # クラス1\n", | |
"plt.scatter(data[3:,0], data[3:,1], c='blue') # クラス2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 69, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"# データの範囲でメッシュ状に点を取る\n", | |
"x_min = data[:, 0].min() - 1\n", | |
"x_max = data[:, 0].max() + 1\n", | |
"y_min = data[:, 1].min() - 1\n", | |
"y_max = data[:, 1].max() + 1\n", | |
"grid_interval = 1.0\n", | |
"xx, yy = np.meshgrid(\n", | |
" np.arange(x_min, x_max, grid_interval),\n", | |
" np.arange(y_min, y_max, grid_interval)\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 70, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['1', '2', '2', '2', '2', '2', '1', '1', '2', '2', '2', '2', '1',\n", | |
" '1', '1', '2', '2', '2', '1', '1', '1', '1', '2', '2', '1', '1',\n", | |
" '1', '1', '1', '2'], \n", | |
" dtype='<U1')" | |
] | |
}, | |
"execution_count": 70, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])\n", | |
"Z" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 71, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([['1', '2', '2', '2', '2', '2'],\n", | |
" ['1', '1', '2', '2', '2', '2'],\n", | |
" ['1', '1', '1', '2', '2', '2'],\n", | |
" ['1', '1', '1', '1', '2', '2'],\n", | |
" ['1', '1', '1', '1', '1', '2']], \n", | |
" dtype='<U1')" | |
] | |
}, | |
"execution_count": 71, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Z.reshape(xx.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAFrCAYAAAA0B0YZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2QXOV15/Hfg8TLCBkGoTFvEhJBaxzsxYrl6G0QamF5\nF+EYij+08TpVqUnFm7iCK3beKlWplF275T92/9mQrYJyEZNkycYgv6wAK0DsqjAjaUajEQJBjAAL\nqBlJBOSGAVwqCfBKz/7R3erRaLr73r59+zlP3++nSuW5oG5d+1ijn845tx/nvRcAAACk80LfAAAA\ngBUEIwAAgCqCEQAAQBXBCAAAoIpgBAAAUEUwAgAAqJrfqTdyzvHcPwAAiIb33s3+Zx3tGHnvc/3x\nzW9+M/dfgx/UJPYf1MTeD2pi7wc1sfej2zVpJKpR2uTkZOhbwCzUxB5qYg81sYea2GOlJlEFIwAA\ngDxFFYyGhoZC3wJmoSb2UBN7qIk91MQeKzVxzeZsqd7IOd+p9wIAAMiTc04+7+XrvA0PD4e+BcxC\nTeyhJvZQE3uoiT1WahJVMAIAAMgTozQAAFA4PTFKAwAAyFNUwcjK/BF11MQeamIPNbGHmthjpSZR\nBSMAAIA8Jd4xcs6dJ+lpSUe993fM8e/ZMQIAAFHoxI7R1yQd7NwtAQAA2JIoGDnnlki6XdJ38r2d\n5qzMH1FRLpf17W9/W+VyOfStoIqa2MT3LnuoiT1WapK0Y/RXkv5MErMySJK2PfSQPr5smf7nn/6p\nPr5smbY99FDoWyo8agIA2bXcMXLOfV7SFu/9V51zJUl/4r3/whw/jx2jgiiXy/r4smV66uRJ3STp\neUmb+vr00tSUBgYGQt9eIVETAEin0Y7R/ASvHZR0h3Pudkl9kj7inHvQe//bs3/i0NCQli9fLknq\n7+/XypUrVSqVJNVbZO1e/5/tT0iS1gxukCTtHd3FdaDr5589qMvkNK2KmyRdJqf7/u4f9aWhLwe/\nvyJef/fv/1GXyekmVUyrUpOdzxzUTb+2Kvj9cc219ev3T0/r19ev1dLLFmj3zjFJ0s23rJekltc7\ndjwiSfpc6T9KksZGxyVJ6wfXtr4+9JrGnnlOly5crI2rV0uSRiYmJKn19aeWVu7n6DFJUmlD5f2H\nd423vP7l8Xe1ce0quYVXa2R0T+X9BtdV3r/F9Q++95PKf//PVnoke/aOSpLWrRlsee1Ovak9E/sk\nSXdt/Vzl/XdW3/+WdTr/4iWZ80Kj69rXk5OTaibVJ1875zaq0jHq+lNph35+XHtHd535PzLCmX6r\nrC2rPqHh909qWtIiSaWL+vTE/he0aDHdiRCoiW1877KnVpMTpyqhYullC1K/R3n6iCTpkgsWp7+B\nQ6+d+XJx/zXpX//BG5Kk+dddl/qlH75T2UF0C69O/dqjr75X+XX7r0j9WnfqTUnSlcv65/z3Izv3\naPOWranft11ZOkbAWRYtHtA37rlXpa/frUXOadp7feOee/kDOCBqAqQXOhSFCkSSvVBkSTRnpR36\n+fHc3hvtmX6rrKNHDmvJ0mv5A9gIagIkU9RQFCoQSclC0fkXL0n9a7SrUceIYAQAKIzQgUgqXihK\n0yWyEIyiOhKktjAHO6iJPdTEHmpiw8xQVFugTqpTXaLUoeiDN6QP3tD8665LHYo+fKccVSiqLWGH\nxo4RAKDnhe4UFa1LJMWxTzQXRmkAgJ4VOhBJxQtFWQKRhVEaHSMAQE8KHYp46ixO7BghE2piDzWx\nh5p014lTx1qGomY7RjGHIrfw6tSh6Oir7+noq+9pfv8VqUORO/Vmx0IRO0YAAHRY6C6RxOgsduwY\nAQB6QuhQxOgsO3aMAADIqBaIpOKFIp466zx2jJAJNbGHmthDTfIzs0uUJhTt3jmm8vQRlaeP6JIL\nFqcPRYdeK2wounJZfy6hiB0jAAAyyDI6e/cXP5e0NMoukdQ7ozOL2DECAESF0Vk6MY3O2DECACCF\n0AvWUvFCURG6RDOxY4RMqIk91MQeatIZnQxFY6PjyV/MWWddwY4RAAAJMDpLJ6bRmUXsGAEAzGJ0\nlk5sXaLZ2DECAKCB0KGIp86KiR0jZEJN7KEm9lCTdJKcddZMklDUcMfIwOgs1rPOsmLHCACAWUJ3\niSRGZ0XHjhEAwITQoYjRWXjsGAEACo+nztLhqbN8sWOETKiJPdTEHmrSWLtnnUnKdNbZ2LbthQ1F\neZ11lhU7RgCAQmN0lk4vjs4sYscIANBVjM7SKdLojB0jAEChhO4SScULRTEEIkvYMUIm1MQeamIP\nNakIHYpmnnU2MjGR7LWcddY17BgBAAqB0Vk6RRqdWcSOEQAgN6G7RFLxQlHMgYgdIwBAzwodinjq\nDO1gxwiZUBN7qIk9RatJN846ayhhKJpzx4izzoJixwgA0HNCByKJ0RmyYccIANARoUMRo7P4sWME\nAIgeT52lQyCyjR0jZEJN7KEm9vRyTUKddaZDr2UKRSOjT0giFFnCjhEAIGoxj87mXXlVWx/YWEMo\n6l3sGAEAUmF0lg6BKDl2jAAAUQndJZIIRcgXO0bIhJrYQ03s6ZWahA5FM886S6zBWWfDu8ZbvpSz\nzrqLHSMAQBQYnaVDIIobO0YAgIZCd4kkQlGRsGMEADArdCiKKRBJhKJewY4RMqEm9lATe2KrSQxn\nnc0pRSiavWOUtUuU9ayzK5f1Fz4UsWMEADAndCCS4uoU0SXqPewYAQAkhQ9FMQUiiVCUB3aMAADB\n8dRZOgSi3saOETKhJvZQE3ss1yT0WWdtfTaRlDkUjYzvJxQZw44RACCoIo/OXN9U6tcTioqBHSMA\nKBhGZ+kQiLqHHSMAQFdF2SWSCEXoGnaMkAk1sYea2GOlJlGGogZnnSVRO+vMLbz6nFA0Mtp8n6X2\n2UQSoahb2DECAHQFo7N0CETFxo4RAPSwKLtEEqGooNgxAgDkJspQFDgQSYSiomPHCJlQE3uoiT3d\nrkntrLN2PptIKkYomrljNLNLxFln4bBjBADouJi7RBKjM4THjhEA9IiYQxGjM0jsGAEAOiBLIJKK\nG4oIRJgLO0bIhJrYQ03sybMmWbtEQc46q342kRQuFO17+ZXUryUU5YsdIwBAJozOkjt3dJYuGBGK\nioMdIwCIDKOzdBidxYMdIwBAKjF3iSRCEexjxwiZUBN7qIk9napJzKGo02edtdLqrLM9e0ebvp5Q\n1H3sGAEAEulEIJIYnSVBIAI7RgBgWMxdIolQhHTYMQIANBRzKAr/1Fk6hCLUsGOETKiJPdTEnrQ1\nyXLWWe2ziaTihaI0Z53Vdow468wOdowAAOeIuUskMTpD/FruGDnnLpS0U9IFqgSpH3jv/+scP48d\nIwDIIOZQxOgMnRDFjpH3/gPn3Cbv/Qnn3DxJo865J7z3E7ncKQAUDE+dpUOXCHlKtGPkvT9R/fJC\nVcJUfq2hJtidsIea2ENN7GlWk051iYp21lnWUGRlnwV1VmqSaMfIOXeepP2Srpd0r/d+X653BQAF\nwOgsOUZn6JZUn2PknLtE0iOSvuq9Pzjr37FjBAAJMDpLh9FZcUSxYzST9/4XzrmnJN0m6eDsfz80\nNKTly5dLkvr7+7Vy5UqVSiVJ0vDwsCS1fV1rRa8Z3MA111xzHe31iVPHtG9sXB/9yEVaest6SdLu\nnWOSpJtbXN/wyaWSpJ/uq5wMv36wEozGRser12sbXx99Q+s//Skt7r9GIxMTkl7XxtWrJal6rcbX\no09Urj+zUvOvu07DuyrvX9pQef9W1z954snK9eYvVN+vMjLZOLiu5fXRV9/T+P4JzVu4SOvWVIJR\n7VH7dWsGm16v/8z1kqSXp17Uy1PSxluq718d2XBt8zprXmh0Xft6cnJSzSR5Km2xpF96799zzvVJ\n+mdJ/917//isn5d7x2jv6K4z32hgAzWxh5rYU6sJo7Pk8h6djezcc+YPYtgwsnOPNm/Z2rVfL0vH\n6CpJ/7u6Z3SepG2zQxEAoLH3T0+f+cDGtBidpcPoDFlxVhoA5CjmLpFEKEJ3RbdjBABILuZQ1Guj\nMyApzkpDJtTEHmoS3uyzzmrL00lw1lm6UNTuWWdWPjMHdVZqQscIADoo5i6RxOgMYMcIADok5lDE\n6AwWsGMEAD2AD2xMhy4RLGPHCJlQE3uoSXclCUWNdow46yydToYiK/ssqLNSEzpGANAmRmfJMTpD\nLNgxAoCUGJ2lY6VLBPvYMQKAyMTcJZIIRUAr7BghE2piDzXJT7uhaPfOseChaP5116UORR++U9aH\n75TlFl6dOhQdffU906HIyj4L6qzUhI4RALSQtUv07i9+Lmkpo7ME6BIhNHaMAKAJRmfpEIqQBTtG\nAGBYzKGIp86A9rBjhEyoiT3UJLvZZ52lMddZZ2Oj48nfIOJQ1M2zzrKyss+COis1oWMEADPE3CWS\nGJ0BWbFjBABVMYciRmfoBewYAYABfGBjOnSJ0MvYMUIm1MQeapJOp7pEzULRnDtGnHUWlJV9FtRZ\nqQkdIwCFxegsOUZnKAp2jAAUDqOzdHqlSwT72DECgC6LuUskEYqAvLFjhEyoiT3UpLFQoWhs23ZJ\ncZ511s5nE0n2Q5GVfRbUWakJHSMAPY/RWTp0iVBk7BgB6GmMztIhFCEkdowAIEcxh6KYApFEKELv\nYMcImVATe6hJ5886S2WOUDQyMZHstRGGolBnnWVlZZ8FdVZqQscIQE+JuUskxReKJLpE6C3sGAHo\nGTGHopgCkUQoQj7YMQKADuCps3ToEgGNsWOETKiJPUWrSTfOOptTirPOztkxqp511s5nE0mEok6w\nss+COis1oWMEIFqMzpLrRCCSeiMUAc2wYwQgOozO0qFLhFiwYwQAKRWtSyQRioBuYscImVATe3q5\nJrGGopGnD7TdJQpx1lnts4mk3g1FVvZZUGelJnSMAJgXLBBJHekUzbvyqtQvpUsEhMGOEQDTYu0S\nSYzOgLTYMQKAJooWikIHIolQBLBjhEyoiT29UJNOnHXW1mcTSbmEouFd4y1fGjoUxXbWWVZW9llQ\nZ6UmdIwAmFLULpHE6AywgB0jAGYUNRQxOgMq2DECAMX/1FmMoYhABMyNHSNkQk3sia0mQbtECc86\nO0fKs85m7hjVPptIIhSFZGWfBXVWakLHCEAwjM6SY3QGdAc7RgC6LnQgkooXighEiAE7RgAKJ3Qo\n4qkzAM2wY4RMqIk9lmtS1FC087kpzjozxso+C+qs1ISOEYDchQ5EUujR2VSq19IlAsJhxwhArkKH\nIkZnQDzYMQLQs2qBSCpeKOKpMyBe7BghE2pij4WazOwSdfWss+pnE0m2QtHIaPPdCc466z4r+yyo\ns1ITOkYAOorRWTqMzgBb2DEC0BGMztJhdAacix0jAD0hdJdIKl4oIhAB+WDHCJlQE3u6XZPQoagb\nZ53N1M5ZZzN3jAhFNljZZ0GdlZrQMQLQFkZn6TA6A+LAjhGA1EJ3iaTihSICEYqAHSMA0Qkdinjq\nDECe2DFCJtTEnrxqcuLUscKGIrfw6kxnne17+ZVUr+Wss/xZ2WdBnZWa0DEC0FLoQCQxOgPQHewY\nAWgqdChidAYUBztGAMziqbN0eOoM6A3sGCETamJPJ2rCWWfptApFe/aONnwtZ52FYWWfBXVWakLH\nCMBZGJ2lw+gM6C3sGAGQxOgsLUZnQOexYwTAhNBdIql4oYhABNjEjhEyoSb2pK1J6FAUw1lnM7UT\nimo7RoQiO6zss6DOSk3oGAEFxegsnUxdotPThCIgEi13jJxzSyQ9KOkKSacl/Y33/n/N8fPYMQIi\nEbpLJBUoFBGIgMRi2TH6f5L+2Ht/wDm3UNJ+59yPvfcvdfwuEZXpt8o6euSwliy9VosWD4S+HSQU\nOhTx1BlCK5ff1tThI1p27VINDFwe+nZgTMsdI+/9m977A9Wvj0t6UVIb39myY5/Fjn/6v9/XllWf\n0J/fdbu2rPqE/mn790PfEqoa/T7hrLP2zzpLG4pmn3VmZXcC0sPfe0wrbtykzVu+rhU3btK27z8W\n+pZQZeX3SaodI+fcckkrJe3N42YQh+m3yvpvf3S3ht8/qWlJiySVvn631m0o0TkyKnQgkhidIbxy\n+W39/t1/qZMnh6Xqd6/f+4OSbi0N0jnCGYmDUXWM9gNJX6t2js4xNDSk5cuXS5L6+/u1cuVKlUol\nSdLw8LAktX09+2/Btes1gxu47vL10SOHtcg5TUsqqWKRc3pyx6P60tCXg99f0a/XDG446/rEqWPa\nNzauj37kIi29Zb0kaffOMUnSzS2ub/jkUknST/e9IukVrR9cK0kaGx2XpObXR9/Q+k9/Sov7r9HI\nxISk17Vx9WpJql6r8fXoE5Kkz269S5I0vKvy/qUNa1tef/hOWSPj+yvXm79Qfb/K30Q3Dq5reX30\n1fc0vn9C8xYu0ro1lWBUe6ps3ZrBptfrP3O9JOnlqRf18pS08ZbK+0uVvw3Xrmt/M+a6u9cXX9yn\n889fppMnp1Vxk84//1ptf/Rx3fCxFcHvj+vKdda80Oi69vXk5KSaSfQBj865+ZJ2SHrCe//XDX4O\ny9cFMf1WWVtWfULD75/UTZKel1S6qE9P7H+BjpEhPHWWDh/Y2PvK5be14sZN1Y5R5btXX19Jrxx8\nio6RERaWr5N+jtHfSjrYKBR1CztGNixaPKBv3HOvShf1aUXfApUu6tM37rmXUGTE3tFdnHWWUqdG\nZ41CkZXdiaIbGLhc99/3LfX1lbRgwQr19ZV0/33fIhQZYeX3SctRmnNuUNJvSfpX59yzkrykv/De\nP5n3zcGuz9+1Ves2lPTkjkd122/cSSgy5P3TlTFB0bpEEvtEaO03t96hW0uD2v7o47rrztsJRTgH\nZ6UBPYLRWTqMzgB7LIzS+ORroAfw1Fk6dIkANMJZaciEmoQ3OxTVnihLgrPO0mk3FFnZnUAdNbHH\nSk3oGAGRYnSWDqMzAEmwYwREiNFZOozOgDiwYwQgtdChiKfOAPQydoyQCTXpnqRnnTXaMYo5FIU6\n66zZZxOlYWV3AnXUxB4rNaFjBEQgdJdIYnQGoBjYMQKMCx2KGJ0B6BZ2jAA0xFNn6RCIAHQCO0bI\nhJrkI8tZZzt2PMJZZyl0IxRZ2Z1AHTWxx0pN6BgBxhR1dNZOIJLshyIAcWHHCDCC0Vk6BCKg97Bj\nBEBS+C6RRCgCAIkdI2RETbLrdCgaGx1P9uLAZ52189lEUpyhyMruBOqoiT1WakLHCAiE0Vk6MQYi\nAPFhxwgIgNFZOoQioBjYMQIKKHQoiikQSYQiAN3FjhEyoSbJJT3rrJGkoWjOHaMIQ5Gls86ysrI7\ngTpqYo+VmtAxArogyi6RxOgMQOGwYwTkLMpQFDgQSYQioIjYMQJ6GE+dpUOXCIAF7BghE2oytyxn\nnZWnj2Q662xs2/b2PptIIhTlxMruBOqoiT1WakLHCOiw0KOzSxe28VpGZwAgiR0joGOyBCKJ0Vka\nBCKgN7FjBPSI0F0injoDgM5gxwiZUBN7oWhkYqL1awOddVb7bCKpWKHIyu4E6qiJPVZqQscIaBOj\ns3SKGIgAxIcdI6AN1rpEiVQDkUQoAmATO0ZAhGIORTx1BgDNsWOETIpUk9pZZ+18NpHUvVB0zo6R\ngdFZ7GedZWVldwJ11MQeKzWhYwQkEHOXSGJ0BgBJsWMEtBBzKGJ0BiAm7BgBhnUiEEnFC0UEIgAx\nY8cImfRqTTrVJWrnrDMdeq29s86qn0008vQBQpExVnYnUEdN7LFSEzpGwCyxj87mHT2W6qWMzgCg\njh0joIrRWTp0iQB0GjtGgBExd4kkQhEAdAo7RsikF2oScyia66yz4V3jTV/KWWfdZ2V3AnXUxB4r\nNaFjhMJidJYOgQhAEbBjhEKKuUskEYoA9CZ2jIAAYg5FfGAjAOSLHSNkElNNspx1Vp4+Ek0omrlj\nxFlnNljZnUAdNbHHSk3oGKEQYu4SSYzOAKBb2DFCz4s5FDE6A1Ak7BgBOeKps3ToEgEAO0bIyGpN\nYj7rTMoWinY+N5X6tYSifFnZnUAdNbHHSk3oGKHnMDpLHowYnQHA2dgxQs9gdJYOXSIA1rBjBHRI\nzF0iiVAEAFawY4RMLNQk5lA011lnrbQ662xktPGcnrPOwrCyO4E6amKPlZrQMUK0GJ2lQyACgNbY\nMUKUYu4SSYQiAJgLO0ZAG2IORXxgIwDYxo4RMulmTYpy1tlM7YSi2o4RZ53ZYWV3AnXUxB4rNaFj\nhCjE3CWSGJ0BQCzYMYJ5MYciRmcAkBw7RkATPHWWDl0iAMiOHSNkkldNinzWWdZQtGfvaKrXEory\nZ2V3AnXUxB4rNaFjBHMYnSXH6AwAOosdI5jB6CwdRmcAeg07RkBVzF0iiVAEAL2CHSNk0omaxByK\n8jjrrJkkZ5012zEiFIVhZXcCddTEHis1oWOEYBidpUOXCADyx44Rgoi5SyQRigAgD+wYoZBiDkU8\ndQYAvY0dI2SSpiacdZZOu2ed7dk7yllnxljZnUAdNbHHSk1adoyccw9I+g1Jx7z3N+V/S+hFMXeJ\npMhGZ6enJV1PIAKANrTcMXLO3SzpuKQHmwUjdozQSMyhiNEZAHRPFDtG3vvdzrll+dwWehlPnaXT\niQXreQtOaerwEc1bsFQDA5enfh8ACKFcfltTh49oxa9eqIGBgaD3wo4RMmlUE846S6cToWh4706t\nuHGTNm/5ulbcuEnbvv9Y6vdCPqzsTqCOmtjx8PceO/O9a9myj+uhh7YFvR+eSkPHMTpLLksgks7u\nFP3+3X+pkyeHJU1LWqTf+4OSbi0N0jkCYFa5/PY537t+93c3afPmW4N1jjoajIaGhrR8+XJJUn9/\nv1auXKlSqSRJGh4elqS2r2d3JmrXawY3cG3k+v3T0/r19Wu19LIF2r1zTFOSbr5lvSRp984xqcn1\njh2PVN5v/SpdcsFijY2OS5LWD66VpNbX27ZLku649XZJ0sjEhCRp4+rVra8/eEMjTx/QvCuvUqka\njIZ3Vd6/tGFt0+v1n7xekrTzuSlJU9o4uK7y/qOVv402uy6/flxrV63W/P4rznxa9bo1g5LU8np8\nz48kSXdt/Zwk6f7v/IOcWySptgY4LOcWaerwEQ0MXH7mb8cbb6n++lx39br2z6zcD9dnd4us3E8R\nr6cOH6l+75qWVJIkObdIP/zhD/WVr3xFUvb8ULuufT05OalmEn3Ao3NuuaQfee//fZOfw/J1gcXc\nJZLi6hTNtWBdLr+tFTduqv6t6yZJz6uvr6RXDj5FxwiAWXN/79qkqamXcu8YNVq+brlj5Jz7rqQx\nSR9zzh12zv1OHjeYBDtG9uwd3RV1KAp11lnazyaqafTU2cDA5br/vm+pr6+kBQtWqK+vpPvv+xah\nyAj2WeyhJjac+71rkx544L6gC9hJnkr7UjduBPE5ceqY3j89zVNnCeV9rMdvbr1Dt5YGtf3Rx3XX\nnbcTigBEYeb3rv/0pS8HfyqNs9LQlti7RO2wHIoAoBdE8TlGwGxFC0UWnjojFAFAd/A5RkhsrrPO\nak+XtVL0s87SynLWGbsT9lATe6iJPVZqQscIiRStSyQxOgOAImLHCC0VLRSFDkQSoQhAMbFjBNM4\n6ywdukQAED92jDCnpKForh2j0GedtfPZRFLvhCIrc3rUURN7qIk9VmpCxwjnYHSWHKMzAOgt7Bjh\njGCBSCpsKCIQAUAdO0Ywo6hdIolQBACoY8cImULRjh2PSIozFHX7rLPaZxNJ+YYiK3N61FETe6iJ\nPVZqQseowDrRJbr4/EujDUVp0SUCgN7HjlFBMTpLh1AEAPljxwhBFDUU8dQZAKAVdowKZK6zzpKq\nnXU2+7OJxkbHk71BQUNRO2edZWVlTo86amIPNbHHSk3oGBVEUbtEEqMzAEBy7BgVQFFDEaMzAIgL\nO0bIVehAJBUvFBGIACBu7Bj1qG6FonN2jGZ0ibp51tmH75QJRVVW5vSooyb2UBN7rNSEjlEPCt0p\nKlqXSLITigAA2bBj1ENCByKpeKGIQAQAncOOETomdCjiqTMAQC9gxyhytc8mksKEorFnnuOsM2Os\nzOlRR03soSb2WKkJHaOIhe4SSdKlC9t4PaMzAIBR7BhFKnQoYnQGAOg0doyQWi0QScULRTx1BgDI\nGztGEZnZJerUWWeJHHqtYSgamZho/fqIQ1GIs86ysjKnRx01sYea2GOlJnSMIsHoLB1GZwCAdrBj\nZByjs3QYnQFAvNgxQlOhu0RS8UIRgQgAio0dI6NCh6KkZ52dtWPEWWcmWJnTo46a2ENN7LFSEzpG\nxjA6S4fRGQCgk9gxMiR0l0gqXigiEAGAHewY4YzQoYinzgAAYMcouNBnnUnZQtHuo8da/MRzcdZZ\nvqzM6VFHTeyhJvZYqQkdo4BCByKpA52ilMGI0RkAwDJ2jAIJHYoYnQEArGHHqIB46iwdnjoDAHQT\nO0ZdZPGss0SahKLhXeNNXxo6FMV41llWVub0qKMm9lATe6zUhI5RlzA6S4fRGQAgBHaMcsboLB1G\nZwBQXOwY9bjQXSKpeKGIQAQAyIIdo5yEDkVJzzo7SxtnndV2jDjrzA4rc3rUURN7qIk9VmpCx6jD\nGJ2lw+gMAGAJO0YdFLpLJBUvFBGIAKB3sGPUQ0KHIp46AwAgO3aMMor9rLOsXaKdz02lei1nneXP\nypweddTEHmpij5Wa0DHKIHQgkhidAQDQSewYtSl0KGJ0BgDoNewYRYinztLhqTMAQEzYMUqhF886\na6VVKBoZbTwT5qyzMKzM6VFHTeyhJvZYqQkdo4QYnaXD6AwAECN2jFpgdJYOgQgA0C52jIwL3SWS\nCEUAAHQTO0YNhA5F3TrrrKbds85qO0aEIjuszOlRR03soSb2WKkJHaNZGJ2lU379+JkPbEyLQAQA\nsIYdoxlCd4mkuEIRXSIAQCexY2RI6FDEU2cAAIRX+B2jop91ljYUzT7rbM/e0cSvrZ11xmcT5cvK\nnB511MQeamKPlZoUumMUOhBJjM4AALCksDtGoUNRTIFIIhQBAPLHjlEAPHWWDoEIAFAkhdox4qyz\ndJKEokagbAxlAAAFhklEQVQ7RoSicKzM6VFHTeyhJvZYqUlhOkaMztKhUwQAKKKe3zFidJYOgQgA\nEAo7RjmLskskEYoAAAikZ3eMogxFHTjrrJ3PJpLaD0V79o4SioyxMqdHHTWxh5rYY6UmiTpGzrnb\nJN2jSpB6wHv/P3K9qwwYnaWTtUvkTk/rymWrUr8WAACLWu4YOefOk/QzSZ+V9G+S9kn6ovf+pVk/\nL/iOUZRdIinaUCTRJQIAdE4sO0arJR3y3k9V3+hhSXdKeqnpq7osylAUOBBJhCIAAGZKsmN0jaQj\nM66PVv9Z1821Y1T0s87SmtklShuK5jrrzMpMGHXUxB5qYg81scdKTXriqbR2ApGkMx/Y2JZDrxVq\ndFZDlwgA0MuSBKPXJV0743pJ9Z+dY2hoSMuXL5ck9ff3a+XKlSqVSpKk4eFhSWr7+vWDT2vJZX36\ndx9d2JH3q13fUPqV9l7/08N6+dixNn/9X61cPzvVsf99unW99MZPnnW9ectWU/fHdUmbt2w1dT9c\nS/P7BjS67xUz98P1sOb3DZzZZ7FwP1zn/+dJ7evJyUk1k2T5ep6kl1VZvn5D0oSk/+y9f3HWz8t1\n+RoAAKBTGi1fn9fqhd77U5K+KunHkl6Q9PDsUNQtM1MfbKAm9lATe6iJPdTEHis1SbRj5L1/UtIN\nOd8LAABAUNGclQYAANApbY/SAAAAiiKqYGRl/og6amIPNbGHmthDTeyxUpOoghEAAECe2DECAACF\nw44RAABAC1EFIyvzR9RRE3uoiT3UxB5qYo+VmkQVjA4cOBD6FjALNbGHmthDTeyhJvZYqUlUwejd\nd98NfQuYhZrYQ03soSb2UBN7rNQkqmAEAACQp6iCUasTcdF91MQeamIPNbGHmthjpSYdfVy/I28E\nAADQBXM9rt+xYAQAABC7qEZpAAAAeSIYAQAAVEURjJxztznnXnLO/cw59+eh7weSc+4B59wx59zz\noe8FFc65Jc65f3HOveCc+1fn3B+Gvqeic85d6Jzb65x7tlqTb4a+J0jOufOcc8845x4LfS+ocM5N\nOueeq/5emQh6L9Z3jJxz50n6maTPSvo3SfskfdF7/1LQGys459zNko5LetB7f1Po+4HknLtS0pXe\n+wPOuYWS9ku6k98rYTnnFnjvTzjn5kkalfSH3vug3/iLzjn3R5JWSbrEe39H6PuB5Jx7TdIq7/07\noe8lho7RakmHvPdT3vtfSnpY0p2B76nwvPe7JQX/PzDqvPdveu8PVL8+LulFSdeEvSt4709Uv7xQ\n0nxJtv822uOcc0sk3S7pO6HvBWdxMpJJTNxEC9dIOjLj+qj4Zg805ZxbLmmlpL1h7wTVsc2zkt6U\n9BPv/b7Q91RwfyXpz0RAtcZL+olzbp9z7r+EvJEYghGAFKpjtB9I+lq1c4SAvPenvfe/JmmJpDXO\nuRtD31NROec+L+lYtbPqqj9gw6D3/tOqdPPurq5rBBFDMHpd0rUzrpdU/xmAWZxz81UJRf/gvX80\n9P2gznv/C0lPSbot9L0U2KCkO6r7LA9J2uScezDwPUGS9/6N6n+WJW1XZY0miBiC0T5JK5xzy5xz\nF0j6oiSeJLCBv3HZ87eSDnrv/zr0jUByzi12zl1a/bpP0ucksQwfiPf+L7z313rvf0WVP0v+xXv/\n26Hvq+iccwuqnW455y6W9B8k/TTU/ZgPRt77U5K+KunHkl6Q9LD3/sWwdwXn3HcljUn6mHPusHPu\nd0LfU9E55wYl/ZakW6uPvD7jnKM7EdZVkp5yzh1QZd/rn733jwe+J8CaKyTtru7ijUv6kff+x6Fu\nxvzj+gAAAN1ivmMEAADQLQQjAACAKoIRAABAFcEIAACgimAEAABQRTACAACoIhgBAABUEYwAAACq\n/j8Yx0BcQcTsdgAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fb08314cf28>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Z = Z.reshape(xx.shape)\n", | |
"plt.figure(figsize=(10,6), dpi=80)\n", | |
"plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.2)\n", | |
"plt.scatter(data[:3,0], data[:3,1], c='red') # クラス1\n", | |
"plt.scatter(data[3:,0], data[3:,1], c='blue') # クラス2\n", | |
"#plt.figure(figsize=(8,6))\n", | |
"plt.grid()\n", | |
"plt.savefig(\"svm.jpg\", dpi=80)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment