diff --git a/iris.data.csv b/iris.data.csv new file mode 100644 index 0000000..9fd53a3 --- /dev/null +++ b/iris.data.csv @@ -0,0 +1,150 @@ +5.1,3.5,1.4,0.2,Iris-setosa +4.9,3.0,1.4,0.2,Iris-setosa +4.7,3.2,1.3,0.2,Iris-setosa +4.6,3.1,1.5,0.2,Iris-setosa +5.0,3.6,1.4,0.2,Iris-setosa +5.4,3.9,1.7,0.4,Iris-setosa +4.6,3.4,1.4,0.3,Iris-setosa +5.0,3.4,1.5,0.2,Iris-setosa +4.4,2.9,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.4,3.7,1.5,0.2,Iris-setosa +4.8,3.4,1.6,0.2,Iris-setosa +4.8,3.0,1.4,0.1,Iris-setosa +4.3,3.0,1.1,0.1,Iris-setosa +5.8,4.0,1.2,0.2,Iris-setosa +5.7,4.4,1.5,0.4,Iris-setosa +5.4,3.9,1.3,0.4,Iris-setosa +5.1,3.5,1.4,0.3,Iris-setosa +5.7,3.8,1.7,0.3,Iris-setosa +5.1,3.8,1.5,0.3,Iris-setosa +5.4,3.4,1.7,0.2,Iris-setosa +5.1,3.7,1.5,0.4,Iris-setosa +4.6,3.6,1.0,0.2,Iris-setosa +5.1,3.3,1.7,0.5,Iris-setosa +4.8,3.4,1.9,0.2,Iris-setosa +5.0,3.0,1.6,0.2,Iris-setosa +5.0,3.4,1.6,0.4,Iris-setosa +5.2,3.5,1.5,0.2,Iris-setosa +5.2,3.4,1.4,0.2,Iris-setosa +4.7,3.2,1.6,0.2,Iris-setosa +4.8,3.1,1.6,0.2,Iris-setosa +5.4,3.4,1.5,0.4,Iris-setosa +5.2,4.1,1.5,0.1,Iris-setosa +5.5,4.2,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.0,3.2,1.2,0.2,Iris-setosa +5.5,3.5,1.3,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +4.4,3.0,1.3,0.2,Iris-setosa +5.1,3.4,1.5,0.2,Iris-setosa +5.0,3.5,1.3,0.3,Iris-setosa +4.5,2.3,1.3,0.3,Iris-setosa +4.4,3.2,1.3,0.2,Iris-setosa +5.0,3.5,1.6,0.6,Iris-setosa +5.1,3.8,1.9,0.4,Iris-setosa +4.8,3.0,1.4,0.3,Iris-setosa +5.1,3.8,1.6,0.2,Iris-setosa +4.6,3.2,1.4,0.2,Iris-setosa +5.3,3.7,1.5,0.2,Iris-setosa +5.0,3.3,1.4,0.2,Iris-setosa +7.0,3.2,4.7,1.4,Iris-versicolor +6.4,3.2,4.5,1.5,Iris-versicolor +6.9,3.1,4.9,1.5,Iris-versicolor +5.5,2.3,4.0,1.3,Iris-versicolor +6.5,2.8,4.6,1.5,Iris-versicolor +5.7,2.8,4.5,1.3,Iris-versicolor +6.3,3.3,4.7,1.6,Iris-versicolor +4.9,2.4,3.3,1.0,Iris-versicolor +6.6,2.9,4.6,1.3,Iris-versicolor +5.2,2.7,3.9,1.4,Iris-versicolor +5.0,2.0,3.5,1.0,Iris-versicolor +5.9,3.0,4.2,1.5,Iris-versicolor +6.0,2.2,4.0,1.0,Iris-versicolor +6.1,2.9,4.7,1.4,Iris-versicolor +5.6,2.9,3.6,1.3,Iris-versicolor +6.7,3.1,4.4,1.4,Iris-versicolor +5.6,3.0,4.5,1.5,Iris-versicolor +5.8,2.7,4.1,1.0,Iris-versicolor +6.2,2.2,4.5,1.5,Iris-versicolor +5.6,2.5,3.9,1.1,Iris-versicolor +5.9,3.2,4.8,1.8,Iris-versicolor +6.1,2.8,4.0,1.3,Iris-versicolor +6.3,2.5,4.9,1.5,Iris-versicolor +6.1,2.8,4.7,1.2,Iris-versicolor +6.4,2.9,4.3,1.3,Iris-versicolor +6.6,3.0,4.4,1.4,Iris-versicolor +6.8,2.8,4.8,1.4,Iris-versicolor +6.7,3.0,5.0,1.7,Iris-versicolor +6.0,2.9,4.5,1.5,Iris-versicolor +5.7,2.6,3.5,1.0,Iris-versicolor +5.5,2.4,3.8,1.1,Iris-versicolor +5.5,2.4,3.7,1.0,Iris-versicolor +5.8,2.7,3.9,1.2,Iris-versicolor +6.0,2.7,5.1,1.6,Iris-versicolor +5.4,3.0,4.5,1.5,Iris-versicolor +6.0,3.4,4.5,1.6,Iris-versicolor +6.7,3.1,4.7,1.5,Iris-versicolor +6.3,2.3,4.4,1.3,Iris-versicolor +5.6,3.0,4.1,1.3,Iris-versicolor +5.5,2.5,4.0,1.3,Iris-versicolor +5.5,2.6,4.4,1.2,Iris-versicolor +6.1,3.0,4.6,1.4,Iris-versicolor +5.8,2.6,4.0,1.2,Iris-versicolor +5.0,2.3,3.3,1.0,Iris-versicolor +5.6,2.7,4.2,1.3,Iris-versicolor +5.7,3.0,4.2,1.2,Iris-versicolor +5.7,2.9,4.2,1.3,Iris-versicolor +6.2,2.9,4.3,1.3,Iris-versicolor +5.1,2.5,3.0,1.1,Iris-versicolor +5.7,2.8,4.1,1.3,Iris-versicolor +6.3,3.3,6.0,2.5,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +7.1,3.0,5.9,2.1,Iris-virginica +6.3,2.9,5.6,1.8,Iris-virginica +6.5,3.0,5.8,2.2,Iris-virginica +7.6,3.0,6.6,2.1,Iris-virginica +4.9,2.5,4.5,1.7,Iris-virginica +7.3,2.9,6.3,1.8,Iris-virginica +6.7,2.5,5.8,1.8,Iris-virginica +7.2,3.6,6.1,2.5,Iris-virginica +6.5,3.2,5.1,2.0,Iris-virginica +6.4,2.7,5.3,1.9,Iris-virginica +6.8,3.0,5.5,2.1,Iris-virginica +5.7,2.5,5.0,2.0,Iris-virginica +5.8,2.8,5.1,2.4,Iris-virginica +6.4,3.2,5.3,2.3,Iris-virginica +6.5,3.0,5.5,1.8,Iris-virginica +7.7,3.8,6.7,2.2,Iris-virginica +7.7,2.6,6.9,2.3,Iris-virginica +6.0,2.2,5.0,1.5,Iris-virginica +6.9,3.2,5.7,2.3,Iris-virginica +5.6,2.8,4.9,2.0,Iris-virginica +7.7,2.8,6.7,2.0,Iris-virginica +6.3,2.7,4.9,1.8,Iris-virginica +6.7,3.3,5.7,2.1,Iris-virginica +7.2,3.2,6.0,1.8,Iris-virginica +6.2,2.8,4.8,1.8,Iris-virginica +6.1,3.0,4.9,1.8,Iris-virginica +6.4,2.8,5.6,2.1,Iris-virginica +7.2,3.0,5.8,1.6,Iris-virginica +7.4,2.8,6.1,1.9,Iris-virginica +7.9,3.8,6.4,2.0,Iris-virginica +6.4,2.8,5.6,2.2,Iris-virginica +6.3,2.8,5.1,1.5,Iris-virginica +6.1,2.6,5.6,1.4,Iris-virginica +7.7,3.0,6.1,2.3,Iris-virginica +6.3,3.4,5.6,2.4,Iris-virginica +6.4,3.1,5.5,1.8,Iris-virginica +6.0,3.0,4.8,1.8,Iris-virginica +6.9,3.1,5.4,2.1,Iris-virginica +6.7,3.1,5.6,2.4,Iris-virginica +6.9,3.1,5.1,2.3,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +6.8,3.2,5.9,2.3,Iris-virginica +6.7,3.3,5.7,2.5,Iris-virginica +6.7,3.0,5.2,2.3,Iris-virginica +6.3,2.5,5.0,1.9,Iris-virginica +6.5,3.0,5.2,2.0,Iris-virginica +6.2,3.4,5.4,2.3,Iris-virginica +5.9,3.0,5.1,1.8,Iris-virginica \ No newline at end of file diff --git "a/\345\222\214\346\226\271\345\267\256\346\261\202\345\201\217\345\257\274\346\225\260.jpg" "b/\345\222\214\346\226\271\345\267\256\346\261\202\345\201\217\345\257\274\346\225\260.jpg" new file mode 100644 index 0000000..f2627dc Binary files /dev/null and "b/\345\222\214\346\226\271\345\267\256\346\261\202\345\201\217\345\257\274\346\225\260.jpg" differ diff --git "a/\346\204\237\347\237\245\345\231\250\346\225\260\346\215\256\345\210\206\347\261\273\347\256\227\346\263\225\346\255\245\351\252\244.jpg" "b/\346\204\237\347\237\245\345\231\250\346\225\260\346\215\256\345\210\206\347\261\273\347\256\227\346\263\225\346\255\245\351\252\244.jpg" new file mode 100644 index 0000000..4b0ddb0 Binary files /dev/null and "b/\346\204\237\347\237\245\345\231\250\346\225\260\346\215\256\345\210\206\347\261\273\347\256\227\346\263\225\346\255\245\351\252\244.jpg" differ diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240-\345\256\236\347\216\260\347\256\200\345\215\225\347\245\236\347\273\217\347\275\221\347\273\234.ipynb" "b/\346\234\272\345\231\250\345\255\246\344\271\240-\345\256\236\347\216\260\347\256\200\345\215\225\347\245\236\347\273\217\347\275\221\347\273\234.ipynb" new file mode 100644 index 0000000..4b234e4 --- /dev/null +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240-\345\256\236\347\216\260\347\256\200\345\215\225\347\245\236\347\273\217\347\275\221\347\273\234.ipynb" @@ -0,0 +1,568 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "class Perceptron(object):\n", + " '''\n", + " eta:学习率\n", + " n_iter:权重向量的训练次数\n", + " w_:神经分叉权重向量\n", + " errors:用于记录神经元判断出错次数\n", + " '''\n", + " def __init__(self, eta = 0.01, n_iter = 10):\n", + " self.eta = eta\n", + " self.n_iter = n_iter\n", + " pass\n", + " \n", + " def fit(self, X, y):\n", + " '''\n", + " 输入训练数据, 培训神经元, X输入样本向量, y对应样本分类\n", + " \n", + " X:shape[n_samples, n_features]\n", + " X:[[1, 2, 3], [4, 5, 6]]\n", + " n_samples:2\n", + " n_features:3\n", + " \n", + " y:[1, -1]\n", + " '''\n", + " \"\"\"\n", + " 初始化权重向量为0\n", + " 加1是因为前面算法提到的w0, 也就是步调函数阈值,其实也就是偏置\n", + " \"\"\"\n", + " self.w_ = np.zeros(1 + X.shape[1])\n", + " self.errors_ = []\n", + " \n", + " for _ in range(self.n_iter):\n", + " errors = 0\n", + " for xi, target in zip(X, y):\n", + " \"\"\"\n", + " update = n * (y - y')\n", + " \"\"\"\n", + " update = self.eta * (target - self.predict(xi))\n", + " \"\"\"\n", + " xi 是一个向量\n", + " \"\"\"\n", + " self.w_[1:] += update * xi\n", + " self.w_[0] += update\n", + " \n", + " errors += int(update != 0.0)\n", + " self.errors_.append(errors)\n", + " pass\n", + " pass\n", + " \n", + " def net_input(self, X):\n", + " \"\"\"\n", + " z = W0*1 + W1*X1 + W2*X2 + ... Wn*Xn\n", + " \"\"\"\n", + " return np.dot(X, self.w_[1:]) + self.w_[0]\n", + " pass\n", + " \n", + " def predict(self, X):\n", + " return np.where(self.net_input(X) >= 0.0, 1, -1)\n", + " pass\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
55.43.91.70.4Iris-setosa
64.63.41.40.3Iris-setosa
75.03.41.50.2Iris-setosa
84.42.91.40.2Iris-setosa
94.93.11.50.1Iris-setosa
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5.0 3.6 1.4 0.2 Iris-setosa\n", + "5 5.4 3.9 1.7 0.4 Iris-setosa\n", + "6 4.6 3.4 1.4 0.3 Iris-setosa\n", + "7 5.0 3.4 1.5 0.2 Iris-setosa\n", + "8 4.4 2.9 1.4 0.2 Iris-setosa\n", + "9 4.9 3.1 1.5 0.1 Iris-setosa" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('iris.data.csv', header=None)\n", + "df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "y = df.loc[0:100, 4].values\n", + "y = np.where( y == 'Iris-setosa', -1, 1)\n", + "\n", + "X = df.loc[0:100, [0, 2]].values" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='setosa')\n", + "plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='x', label='versicolor')\n", + "\n", + "plt.xlabel('花瓣的长度')\n", + "plt.ylabel('花径的长度')\n", + "plt.legend(loc='upper left')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg8AAAF1CAYAAABvdAmYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XmcFNW5//HPM8OOisMWrgkoUVxAyXUAFREEXFBjTNS4\njBqjBtEYEyXml8RrIDqoCVn0SjZj9EZyE4lLMDELggoiJq6NZlHuHaMo3hgliLIp2/D8/qjumZ6e\nnqVqerqqe77v16tfTZ+u5dSZYuqZU0+dY+6OiIiISHtVxF0BERERKS0KHkRERCQUBQ8iIiISioIH\nERERCUXBg4iIiISi4EFERERCUfAgIiIioSh4EBERkVAUPIiIiEgoiQgezGyumf0m7nqIiIhI2yzu\n4anNbDSwAhjt7q/FWhkRERFpU6w9D2ZmwI+BmxQ4iIiIlIa4b1t8FjgYeM3MPmZm3WOuj4iIiLQh\nttsWZtYXWA38E1gIHA30BSa5+7ZYKiUiIiJt6hbjvk8H+gCT3f0dM6sE/gp8Crg9e0EzGwBMA14F\ntha5niIiIqWsF7APsNjd3y7EBuMMHj4IPOnu7wC4e72Z/QXYL8+y04BfFLNyIiIiZeZc4K5CbCjO\n4OH/gN45ZXsDf8yz7KsAP//5zznooIM6uVrJN3PmTG6++ea4qxE7tUMjtUVA7dBIbRFQO8CqVas4\n77zzIH0tLYQ4g4ffA/PMbEb636cDo4FP5ll2K8BBBx1EdXV18WqYUP369VM7oHbIprYIqB0aqS0C\naocmCnbbP7anLdx9PXAScAHwv8DngTPc/R9x1UlERETaFmfPA+7+BHBknHUQERGRcOIe50FERERK\njIKHElRTUxN3FRJB7dBIbRFQOzRSWwTUDp0j9rkt2sPMqoFUKpVqNfFlzZo1rFu3rngVk7IxcOBA\nhg0bFnc1REQKbuXKlYwZMwZgjLuvLMQ2Y815KKQ1a9Zw0EEH8d5778VdFSlBffr0YdWqVQogRETa\noWyCh3Xr1vHee+9pLAgJLfMM9Lp16xQ8iIi0Q9kEDxkaC0JERKRzKWFSREREQlHwICIiIqEoeBAR\nEZFQFDyIiIhIKAoeREREJBQFD+2xaROsWwclMKBWa+bPn8/y5cvjroaIiJQ4BQ+tWb0aTj4Z+vWD\nQYNg9GhYsiTuWkV25513KngQEZEOK7txHtr0+utwxx3wyitw4IFw0UUwZEjz5d59FyZMgLVrG3sc\nXnwRTjwRli+Ho44qbr1FREQSomv1PDz8MOy/P1x/Pdx1F8yaBfvtB08+2XzZO++EN9+E+vrGsl27\nwAxuuCH/9l94AWpqYPDgYLs33ghbt3a42ps3b+aiiy5iyJAh9OvXj5NPPpnXX3+9yTI/+tGPGDFi\nBLvtthsTJ07k+eefb/iuoqKCiooKli9fzrXXXktFRQWVlZWsWbOmyT4uvvhiqqqq6N+/P5dccglb\ntmxpso+5c+cyfPhw+vbty9ixY5v1YixevJixY8fSt29fhg8fzi233NLhYxcRkQRy98S/gGrAU6mU\ntySVSnmry2zf7j5okHtFhXvQlxC8KircP/xh9/r6psvX1DRfNvPac8/m23/uOffevd27dWu67SlT\n3HfubLHe7XHFFVf4wIED/de//rU/+OCDPmHCBD/xxBMbvr/zzju9Z8+ePm/ePH/sscf81FNP9f79\n+/v69esb2iaVSvmYMWP8kksuafi8Y8eOhm1MnjzZhw0b5vfdd5/fe++9PnToUD/uuOMavr///vvd\nzPyWW27xRx991KdPn+5VVVW+fft2d3d/5ZVXvFevXn7ppZf6n/70J7/11lu9srLSH3/88Q4dezG0\nee6IiJSwzO84oNoLdF3uOrctli+Hf/2refmuXcEtjOeeg2DWscCgQVBREXyfa/Dg5mVf+xps3968\np2LZMli0KMidiOjVV1/lgAMO4OMf/zgABxxwAKtXr274/rrrruOzn/0sn//85wE4+OCDGTx4MA88\n8ACf/vSnG4br3n333dlrr72aDd+9bNkyli9fzrJlyzj66KPThz+IKVOmsGLFCiZOnMirr75Kjx49\nuPjii+nduzeHHnoop556KvX19XTv3p1du3bxgx/8gPPOO48ePXowatQoamtreeKJJ5gwYULkYxcR\nkeTpOrctcrrg2/z+wgth587my5nBjBnNy5csaRo4ZHTvDosXt7+eeUyfPp1UKsVhhx3GVVddxd/+\n9jcmT54MBLcbXn31VebNm9dwe2LAgAHs2rWLl156qV3bT6VSdOvWjYkTJzaUTZw4ke7du/PMM88A\ncPrpp1NVVcWoUaOYMWMGCxcuZNKkSfTq1QuAfffdl+rqambNmsX48eMZPHgwa9eu1SynIiJlqOsE\nDxMmBBfyfPr2hdzJtP793+EHPwh6HyoqoLIyKD/zTLjiiubb6Nkz/7bdIX2Bjerkk0+mrq6OGTNm\nsG7dOs4880zOOOOM9OaDZM4bbriB559/vuH13HPPcfnll7dr+5lttPbd0KFDqaurY+7cufTu3Ztr\nrrmGj3zkI2zevBmA3/zmN4wbN44333yTz33uc/z1r3/lKCWVioiUpa4TPAwcCFdfHfzbrOn79dfD\nbrs1X+eyy+C11+Cmm2DOHHjmGfjlL6Fbnrs9Z5/dGGBk27kTzjqrQ1W/+uqr2bRpE9OnT2f+/PnM\nmzeP+++/nw0bNrD77rszbNgw1q1bx+jRoxteP/nJT3j88cebbKdXr17szNObMm7cOOrr61mxYkVD\n2fLly9m5cyeHHXYYAHfccQfLli3jjDPO4JZbbmH58uWsXr2aRx55BAjGkDjqqKOYP38+5513HkOH\nDuW1117r0HGLiEgydZ2cB4Brr4V99gmCgdWrgycvvvzl4MLfkg99KH9PQ64bbgjyG155JQhKKiqC\nwOErX4GxYztU7VQqxVNPPcVXv/pVevTowd13383AgQPp168fAF//+tf53Oc+x5AhQzjiiCNYuHAh\nt912G+eff36T7Rx++OHcd999HHPMMWzbto3169dz9tlnM3nyZI4++mguuOACvv3tb7Nr1y6+9KUv\nceyxxzbcynjrrbe47rrr2LZtGx/60Ie45557MDOGDx8OwMCBA/njH//IokWLeP/99/n2t7/Na6+9\nljdYERGREleozMvOfFGIpy2KYdMm9+9/3/2MM9w/8xn3ZcsKstk33njDzznnHB8yZIj37dvXjzzy\nSH/yySebLPODH/zA99tvP+/Tp4+PGTPGFy1a1Gw7W7Zs8fPOO8/79evnu+++u9fW1jZ8t3nzZp8x\nY4ZXVVV5VVWVX3rppb5ly5aG73fu3OlXX321Dx8+3Hv37u0HHHCA//SnP234/s033/SPfvSjvttu\nu/lee+3lV199tZ922mk+ZcqUgrRBZ0rEuSMi0kk642kL81budyeFmVUDqVQq1exJgYyVK1cyZswY\nWltGJB+dOyJSzjK/44Ax7r6yENvsOjkPIiIiUhAKHkRERCQUBQ8iIiISioIHERERCUXBg4iIiISi\n4EFERERCUfAgIiIioSh4EBERkVAUPIiIiEgoCh4klPnz5/PhD3+4U/exfPlyKip0aoqIJFXXmhhL\nOuyUU05hbAcn+moPy8x4KiIiiaM/71rgDvffH7xnW7IENm2Kp05JUFVVxahRo+KuhoiIxKhLBQ/1\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nJA3E/wefhp2LUa4oVQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ppn = Perceptron(eta=0.1, n_iter=10)\n", + "ppn.fit(X, y)\n", + "plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker='o')\n", + "plt.xlabel('Epochs')\n", + "plt.ylabel('错误分类次数')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def plot_decision_regions(X, y, classifier, resolution=0.02):\n", + " markers = ('s', 'x', 'o', 'v')\n", + " colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')\n", + " cmap = ListedColormap(colors[:len(np.unique(y))])\n", + " \n", + " x1_min, x1_max = X[:, 0].min(), X[:, 0].max()\n", + " x2_min, x2_max = X[:, 1].min(), X[:, 1].max()\n", + " \n", + " xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),\n", + " np.arange(x2_min, x2_max, resolution))\n", + " \n", + " Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)\n", + " \n", + " Z = Z.reshape(xx1.shape)\n", + " \n", + " plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap)\n", + " plt.xlim(xx1.min(), xx1.max())\n", + " plt.ylim(xx2.min(), xx2.max())\n", + " \n", + " for inx, cl in enumerate(np.unique(y)):\n", + " plt.scatter(x=X[y==cl, 0], y=X[y==cl, 1], alpha=0.8, c=cmap(inx),\n", + " marker=markers[inx], label=cl)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_decision_regions(X, y, ppn, resolution=0.02)\n", + "\n", + "plt.xlabel('花径长度')\n", + "plt.ylabel('花瓣长度')\n", + "plt.legend(loc='upper left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
自适应线性神经元
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class AdalineGD(object):\n", + " \"\"\"\n", + " eta:float\n", + " 学习效率,处于0和1\n", + " \n", + " n_iter:int\n", + " 对训练数据进行学习改进次数\n", + " \n", + " w_:一维向量\n", + " 存储权重数值\n", + " \n", + " error_:\n", + " 存储每次迭代改进时,网络对数据进行错误判断的次数\n", + " \"\"\"\n", + " \n", + " def __init__(self, eta=0.01, n_iter=50):\n", + " self.eta = eta\n", + " self.n_iter = n_iter\n", + " \n", + " def fit(self, X, y):\n", + " \"\"\"\n", + " X:二维数组[n_samples, n_features]\n", + " n_samples 表示X中含有训练数据条目数\n", + " n_features 含有4个数据的一维向量,用于表示一条训练数目\n", + " \n", + " y:一维向量\n", + " 用于存储每一训练条目对应的正确分类\n", + " \"\"\"\n", + " self.w_ = np.zeros(1 + X.shape[1])\n", + " self.cost_ = []\n", + " \n", + " for i in range(self.n_iter):\n", + " output = self.net_input(X)\n", + " errors = (y - output)\n", + " self.w_[1:] += self.eta * X.T.dot(errors)\n", + " self.w_[0] += self.eta * errors.sum()\n", + " cost = (errors ** 2).sum() / 2.0\n", + " self.cost_.append(cost)\n", + " return self\n", + " \n", + " def net_input(self, X):\n", + " return np.dot(X, self.w_[1:]) + self.w_[0]\n", + " \n", + " def activation(self, X):\n", + " return self.net_input(X)\n", + " \n", + " def predict(self, X):\n", + " return np.where(self.activation(X) >= 0, 1, -1 )" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ada = AdalineGD(eta=0.0001, n_iter=50)\n", + "ada.fit(X, y)\n", + "plot_decision_regions(X, y, classifier=ada, resolution=0.02)\n", + "plt.title('Adaline-Gradient descent')\n", + "plt.xlabel('花径长度')\n", + "plt.ylabel('花瓣的长度')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(range(1, 51), ada.cost_, marker='o')\n", + "plt.show()" + ] + } + ], + "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" + }, + "toc": { + "colors": { + "hover_highlight": "#DAA520", + "running_highlight": "#FF0000", + "selected_highlight": "#FFD700" + }, + "moveMenuLeft": true, + "nav_menu": { + "height": "40px", + "width": "325px" + }, + "navigate_menu": true, + "number_sections": true, + "sideBar": true, + "threshold": 4, + "toc_cell": false, + "toc_section_display": "block", + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225.jpg" "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225.jpg" new file mode 100644 index 0000000..ab5f826 Binary files /dev/null and "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225.jpg" differ diff --git "a/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\213.jpg" "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\213.jpg" new file mode 100644 index 0000000..7dc2e5d Binary files /dev/null and "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\213.jpg" differ diff --git "a/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2131.jpg" "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2131.jpg" new file mode 100644 index 0000000..14db72f Binary files /dev/null and "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2131.jpg" differ diff --git "a/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2132.jpg" "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2132.jpg" new file mode 100644 index 0000000..3b9987f Binary files /dev/null and "b/\346\235\203\351\207\215\346\233\264\346\226\260\347\256\227\346\263\225\347\244\272\344\276\2132.jpg" differ diff --git "a/\346\255\245\350\260\203\345\207\275\346\225\260\344\270\216\351\230\210\345\200\274.jpg" "b/\346\255\245\350\260\203\345\207\275\346\225\260\344\270\216\351\230\210\345\200\274.jpg" new file mode 100644 index 0000000..2c5eeec Binary files /dev/null and "b/\346\255\245\350\260\203\345\207\275\346\225\260\344\270\216\351\230\210\345\200\274.jpg" differ diff --git "a/\346\270\220\350\277\233\344\270\213\351\231\215\346\263\225.jpg" "b/\346\270\220\350\277\233\344\270\213\351\231\215\346\263\225.jpg" new file mode 100644 index 0000000..38095b5 Binary files /dev/null and "b/\346\270\220\350\277\233\344\270\213\351\231\215\346\263\225.jpg" differ diff --git "a/\347\245\236\347\273\217\345\205\203\345\217\202\346\225\260\347\232\204\346\233\264\346\226\260.jpg" "b/\347\245\236\347\273\217\345\205\203\345\217\202\346\225\260\347\232\204\346\233\264\346\226\260.jpg" new file mode 100644 index 0000000..4791d45 Binary files /dev/null and "b/\347\245\236\347\273\217\345\205\203\345\217\202\346\225\260\347\232\204\346\233\264\346\226\260.jpg" differ diff --git "a/\347\256\227\346\263\225\346\255\245\351\252\244\346\200\273\347\273\223.jpg" "b/\347\256\227\346\263\225\346\255\245\351\252\244\346\200\273\347\273\223.jpg" new file mode 100644 index 0000000..1b5ab4f Binary files /dev/null and "b/\347\256\227\346\263\225\346\255\245\351\252\244\346\200\273\347\273\223.jpg" differ diff --git "a/\350\207\252\351\200\202\345\272\224\347\272\277\346\200\247\347\245\236\347\273\217\345\205\203.jpg" "b/\350\207\252\351\200\202\345\272\224\347\272\277\346\200\247\347\245\236\347\273\217\345\205\203.jpg" new file mode 100644 index 0000000..dc9e048 Binary files /dev/null and "b/\350\207\252\351\200\202\345\272\224\347\272\277\346\200\247\347\245\236\347\273\217\345\205\203.jpg" differ diff --git "a/\350\267\235\347\246\273\347\232\204\345\256\232\344\271\211.jpg" "b/\350\267\235\347\246\273\347\232\204\345\256\232\344\271\211.jpg" new file mode 100644 index 0000000..f34cc2b Binary files /dev/null and "b/\350\267\235\347\246\273\347\232\204\345\256\232\344\271\211.jpg" differ