码云 Gitee IDE 全新上线——支持 Git 管理的轻量在线编码环境
Watch Star Fork

Cynhard85 / MachineLearningTutorial

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
暂无描述
一键复制 编辑 Web IDE 原始数据 按行查看 历史
机器学习 - k近邻.ipynb 159.11 KB
liuxinyang 提交于 2018-07-06 16:43 . modify names
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 长颈鹿和梅花鹿\n",
"## 纯 Python 实现"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 0]\n"
]
}
],
"source": [
"import numpy as np\n",
"\n",
"# 整理数据\n",
"data = np.array([[2.45], [2.31], [2.38], [2.40], [2.38], [0.25], [0.3], [0.24], [0.31], [0.29]])\n",
"target = np.array([1, 1, 1, 1, 1, 0, 0, 0, 0, 0])\n",
"\n",
"test = np.array([[2.33], [0.28]])\n",
"\n",
"def distance_Euclidean(x):\n",
" \"\"\" 计算单一样本 x 与整个样本集的欧式距离 \"\"\"\n",
" \n",
" m = data.shape[0] # 获取整体样本集的样本数量\n",
" diff = np.tile(x, [m, 1]) - data # 为了计算方便,将测试样本 x 提高维度,与整体样本集相减\n",
" diff_squared = diff ** 2 # 计算平方\n",
" distance_squared = diff_squared.sum(axis=1) # 计算平方和\n",
" distance = distance_squared ** 0.5 # 计算开方\n",
" return distance\n",
"\n",
"def knn(d, k):\n",
" \"\"\" 找出单一样本前 k 个最小距离,并预测分类 \"\"\"\n",
" \n",
" d_sorted = d.argsort() # 对索引进行排序\n",
" min_indices = np.array([0, 0]) # 索引为分类,值为分类数量\n",
" for i in range(k): # 统计前 k 个最小距离中,每个分类的数量\n",
" min_indices[target[d_sorted[i]]] += 1\n",
" min_indices_sort = min_indices.argsort() # 索引从小到大排序\n",
" return min_indices_sort[-1] # 返回最大的索引\n",
" \n",
"\n",
"# 计算每个测试样本与整个样本集的欧式距离\n",
"ds = np.array([distance_Euclidean(test[i]) for i in range(len(test))])\n",
"\n",
"# 找出前 k 个最小的距离\n",
"ds_knn = [knn(d, k=3) for d in ds]\n",
"\n",
"# 打印分类结果\n",
"print(ds_knn)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 使用 sklearn 实现"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1 0]\n"
]
}
],
"source": [
"import numpy as np\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"data = np.array([[2.45], [2.31], [2.38], [2.40], [2.38], [0.25], [0.3], [0.24], [0.31], [0.29]])\n",
"target = np.array([1, 1, 1, 1, 1, 0, 0, 0, 0, 0])\n",
"\n",
"test = np.array([[2.33], [0.28]])\n",
"\n",
"neigh = KNeighborsClassifier(n_neighbors=3)\n",
"neigh.fit(data, target)\n",
"print(neigh.predict(test))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 归一化\n",
"\n",
"## 读取数据"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体\n",
"plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题\n",
"\n",
"fly = np.array([])\n",
"play = np.array([])\n",
"eat = np.array([])\n",
"with open(\"datingTestSet.txt\") as f:\n",
" for line in f:\n",
" line = line.strip()\n",
" data = line.split('\\t')\n",
" fly = np.append(fly, float(data[0]))\n",
" play = np.append(play, float(data[1]))\n",
" eat = np.append(eat, float(data[2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 归一化"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def normalize(data):\n",
" \"\"\" 实现归一化 \n",
" \n",
" data: numpy array 表示的数据集\n",
" \"\"\"\n",
" \n",
" min_val = data.min()\n",
" max_val = data.max()\n",
" interval = max_val - min_val\n",
" return (data - min_val) / interval\n",
"\n",
"\n",
"fly_normal = normalize(fly)\n",
"play_normal = normalize(play)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 归一化前后对比"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA30AAAHDCAYAAACQ1XOVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3X2cnXdd5//XZyan7UyBTFrCTQdCA7IJ1LQNRGgNLE21xLUWY8EWLLIi/HDV1W3FaIpoU6zbaGTB+93uouJS2bSlDu0GbFlTFIutpiahRFsVeucUMLSZ3mWaTiaf3x/Xdc1cc+a6Pec651znzPv5eMxjZs65znWuc3Ndn+v7uT7f79fcHRERERERERlMQ73eABEREREREekcNfpEREREREQGmBp9IiIiIiIiA0yNPhERERERkQGmRp+IiIiIiMgAU6NPRERERERkgKnRJ9IhFjjRzBpNt/+8mb095THfbWbnFlj3yvD3qJn9rpmdGf5/emyZD5jZqwus63Qz+5685UREZLCZ2TYzu6vX2wFgZi9p+v9kM3uJmVnFz7MyLe4q1sogMc3TJ1KMmb0G+IcWHvpD7j4RW89+4K/d/T8nPMdu4C3AWnf/15TteBFwH/B+4C+AKeD7gYeArwD/DpgEngE+4u4fyXldPwtc6e4vDf8/CTgp5zU95e6zOcuIiEgfMbNfB34M+A7gR4BngaMpi+9z9/s7tB1nAH8PbHX33w5v+zngo8CJ7v5cgXU0gOeFP88HXgqcBowDLyd4ja8FXkbwGte7+z/GHq9YKwNlWa83QKSPRIHvx4C/bLrv3cAB4N7YbQacAHyradmXA3/TvHIzWw1sBralNfgA3P3fwuD3B8C62LZtA25296+b2euAYeDG/JfFNAuD+i8C23Mesw74aoF1i4hITZnZ7wHvcvdTwpueA44BY8AvM9/oi18hWAasAX4a6EijL1z3UWBX7LYjAEUafKFvASti/z8b3vaN8Od+4AsEDbdJ4PH4gxVrZdCo0SdS3PHw97fc/cH4HWb2H4HPufutWSswsxXAKQTZw2a/THBw/3i47I8AI+7+iaZ1vDn8cydwQfj3ecDDwDEzOw94HfBgU9ZyCGi4e3PWtvly/1HgL939vITtHwMOE2Q2RUSkvz1L0BiJzADH3f0Rgitgi4Rll98IH1u58Arbe4HfdffmpGnzsmuA/w68tzkuE3Rh2gn8OsEVs6KNxWjdirUyUNToE2mRmT0v/PN5wKuAz8dui0y7+6yZrSJo0B0Lb/+8mUWNyLXAauBdwEZ3j5b5buD9ZvZVd787ts63ABcTBOfvCm/7IeApoEGwX58NnG5mzUFmF/DOcPs/FG7P64EXhBnNqNRkWRh0mi1PfUNERKTfzIQ/cWnlnM2O5y/Sko8QxKI/yVrIzEaATxHE0BcBDzYtMgQ86e6PtbgdirUyUNToE2lB2JF8iqCsI/L5hEW/P7z9MPDzBEHkTcAvARsI+goMAX8KfNTd/z722A8SBJTPmNkGd/8mgLtfA1xjZh8GXgm8EPivwJC7X29mywlKWH4cuCNc1/8DbiAoU4l8BzBLECyXAa8mCET/DGwMtzlNXj8EERHpP0MsvPLXVWZ2DvCB8N/U7TCzEwji5hnA97v73yYsdgKwzszeWfDpG8BRd78BFGtl8KjRJ9ICd3czOwr8tLv/cfP9ZrYW+EfC8hd3fwq4zszeCOxx90+Z2fOBrxPU9a8FftTMLiM4yL8AGCXowzBM0PA7392Phg3Oqwj6FWwhaFSeAWw1sylgJXAiMBmVu5jZKcA/hyU70Wv48fC+9wOr3f0nw/8vJ1ZyEpby3Ae82d3jfRZFRGSwjBDGrbBhdRLBlb/4YCLDCY9rm5m9gODq3jcIBlxJW24U+DPgzcDb3P2LKYs2gB8Aio6YeRLwrwSNNhRrZdCo0SfSOgf+yMz+KGeZuLcQZAoB1hOMAHYdQeC4l2BUsEeBbwOH3X3GzNYB5wMz4WhfnyW4WvhDwF+H67oL+DXgcoIGIwTB6XYzO5GgM/tcEEpiZucTdCq/FRgKnwuCEp7l4TInEQxQcxJBH4ljCasSEZH+dCrzffXOJ7mCZY6ZDRP0cZshKGEsGhOMoPF4InA6wVW5Wwj6vH8A+EzGY78AfCfBFb4vpmzXSQRXLT/k7r9VcJuaH69YKwNFjT6R4qJ5LeP9H36aoMSk2auBBeUm4bw+r2J+5M83Af/T3b9GEEAShRm/KOv3bDik9lZ3/4qZ/TLw28DdwOeAi4AJ4EvAG8PHRBnTr6U8RTR89Q0EZacrCTKozaU1X2n6fz2wP227RUSk77ycYCRLCOLKOcxf6YuSmKcCXwz/NuAlBHHxufCniCGCc9CRcB1HgX3ArwJPpDzm+eHvFwPnunvWFEqnhr//LRxY5YQC2zQTTY/g7oq1MnDU6BMpLupY/VT4e4igBDOpE3aUAYxPzP4fgCeBR8zslcBrCOr/MbPbmR8dLMkLwhJRCPoQNMzsO4FfAD5JEOBOJQie1wIHgZ1hecpZBH0GHoxWFs5f9HbgvxAE9UPAa9z9MTP7TYLSmZ8KFx8lCGLnhuuIso/fyNheERGpvwYL49TrgN8FcPfDBI2cBeKTpodXoKoq97wiXP+GpudrAFcSjHAN8AZ3f5xsUaPvEEHs+uuMZSM/C/xO7H/FWhkoavSJFPfS8Pe3wwP8iQRDOe/MeMxo7O9vEmRK/44gk/f1WN3+swTZww82Pf5SgjKQ+NDYnySYFHYZQfbyneHPyQQZ0tMISmQ+SRBkNgJ3uXu81NQIMqp/S1BS8xOxEc5OBR6JBo6JjUj67eg2EREZCCcSXG3DzM4kGKzkr3q6RTFmdjFB4+rlBFcXv7dAgw+CpCrAA8zP1fe9pF+FO8jiKSgUa2WgDOUvIiKh1xDU3P+rB4bd3dzdmM+U/n/RbeHPZ6MHu/ufAWcSDM7ybuDPY+s+RlC3f1/8h/mJ3Y/F1rPB3V9AUArzMXd/obu/kCBo7XL34+7+bYK+GD8L/DBwe/yFhPMVnevulxFkHuPWAA+Z2b+Y2SzBKKWzwH1mdszM3Mz+fUvvoIiI1MnVBCNJA/wkwVWlv0xfvKtOJZi39jGCbczq59dsPUGsfYD5QWgm3f3BpB+ChOyCfnOKtTJo1OgTKe67gPujCV7N7NVm9slwrqA5ZnaSmX0i7MO3gLs/DFwf/vsTZva+6K6sJ27KHGJmFxHM49cws7eEQ1KfwcKrjr9FkJV8EQnzHYXBaoGwI/rrCPoPPAO8z92XxX/CRTsyKa+IiHSPux9y96+Hc8m+B/hf7n7czF5hZq8xs1eZ2enxH4Krbt3wGEF/uTdl9d8zsxeGZZRxm4C/cfcycwkuisOKtTJIVN4pUkAYUL6P+aGcTwJuJOjn9wKC4BR5PsHB/E4ze6u7H4yt50XArxCUqxwD/qeZPUlOoy/BXwOXEIyu9ifAKoLO9xvN7KawM/q3CLKG36Z4n4sNBOUof5ezTZ2alFdERLoobID8KfA48Jvhzb8F/CBBDEkbObLjFw7cvUh/tkuBXzCzC939q+GI128gmA4J5mPZ81MmQs+iWCsDQ40+kWLeTtDAu9HMVhCUmbyUYD6db4XzGQFB5tTM3gLsBr4Yzq93b9hwvB54GvhVd582sycIhp9+F3CpmV2a9ORmZvGrfWEH+xvN7DBBYP4/BB2/fwf4BzN7FfCH4fNtAv7SzC5w98lFKw/6KkTrfjfBvEFPBd0WGW0hSIqISB8I49lNBJUsF7j7k+Fd7wBmm6tMwse8hKAMtFPnkBb+bm5URvMHfh/zo1meQNDoWwk8GE4h8dsEMe3/NK0vaQL3uEUNNsVaGSRq9InkCK/qXUswkfpfEJR1fAdwnrv/k5ltBd4aLv4kgLs/aWb/gWBwlpea2QMEmdS3AN/j7tPhch8Nn2OY7IFchgmzrWY2TjAS6H8kmKvol4Hfc3c3sxsI+mi8Ddju7teY2RnAHuArZvYL7v6JcD2nAf+ZIJAdMrN/B7wXeH/43MPA74U/zXTsEBHpf9cRxKV3u/vcAC4588IdA+6nc6WHUeOrudH3BYJ5bJvnDjwGfNjdnw4bsV8DHg27U8TXdy7wLynP+SBN0zoo1sqg0ZdJJN9xgobXkbCvwy8A/zU2AtdjBFnG3yNouAEQBqC3hAFilKCT9k+7+5cSnuMkgsnY74vfaGbRQC4jzE8VsQnYBnwC+AF3j89p9H0E/Qre6O73hNtx0MxeFy4f7xdxiKAfwkGCRu0TBKU9N8S26b3u/sdN2+ThfSIi0t/eQzDQyJ6iDwj7qK3t3CZxYvh7QZxx90kzexlBlwqL3fV01EgNr8y9P159w3xjbiqpfx1AeLVtedPNirUyUCzhyr2IdEBziWbTfcuB4z4/F1/PmdkLgGejgWtERET6TVit8zLgIXef6fX2NFOslW5Ro09ERERERGSAacoGERERERGRAda3ffpe+MIX+umnn97rzRARkQ675557vu3uK3u9Hf1EMVJEZGkoGiP7ttF3+umns3fv3l5vhoiIdJiZPdTrbeg3ipEiIktD0Rip8k4REREREZEBpkafiIiIiIjIAFOjT0REREREZICp0SciIiIiIjLA1OgTEREREREZYGr0iYiIiIiIDDA1+kRERERERAaYGn0iIiIiIiIDTI0+ERERERGRAaZGn4iIiIiIyABTo09ERERERGSAqdEnIiIiIiIywNToExERERERGWDLer0BIiIyeCb2TbLztvt5dGqa08ZG2Lp5DVvWj/d6s0RERJYkNfpERKRSE/smufLme5memQVgcmqaK2++F0ANPxERkR5Qo09ERCq187b75xp8kemZWXbedr8afSIisiT1ugJGffpERKRSj05Nl7pdwMxebGZfyri/YWa3mtmdZvbj3dw2ERFpT1QBMzk1jTNfATOxb7Jr26BGn4iIVOq0sZFSty91ZrYC+CRwcsZiPwPc4+4bgXeY2fO7snEiItK2rAqYblGjT0REKrV18xpGGsMLbhtpDLN185oebVHtzQKXAk9mLHMecEP4918BG5oXMLMPmNleM9t76NChyjdSRERaU4cKGDX6RESkUlvWj3PtxesYHxvBgPGxEa69eJ3686Vw9yfd/YmcxU4Gojqgx4EXJ6znOnff4O4bVq5cWfVmiohIi+pQAaOBXEREpHJb1o+rkVetp4ER4AngeeH/IiLSB7ZuXrNgVGvofgWMrvSJiIjU3z3Am8K/zwIe7N2miIhIGXWogNGVPhERkRoxs/OB17r778Zu/iTwOTN7M/Ba4O6ebJyIiLSk1xUwutInIiJSA+5+Xvh7T1ODD3d/CLgAuBP4XnefXbwGERGRZLrSJyIi0gfc/VHmR/AUEREpTFf6REREREREBpgafSIiIiIiIgNMjT4REREREZEBpkafiIiIiIjIAOtJo8/MlpvZ583sdjP7MzM7wcw+YWZ/Y2Yf7sU2iYiIiIiIDKJeXem7DPhv7v5W4JvAO4Fhdz8XeKWZvbpH2yUiIiIiIjJQetLoc/ffd/cvhP+uBN7N/DDUtwNvSnqcmX3AzPaa2d5Dhw51YUtFRERERET6W0/79JnZucAK4BFgMrz5ceDFScu7+3XuvsHdN6xcubJLWykiIiIiItK/etboM7NTgN8Bfhx4GhgJ73peL7dLRERERERkkPRqIJcTgBuBK939IeAe5ks6zwIe7MV2iYiIiIiIDJpeXVF7H/A64JfM7IuAAT9qZv8NuATY3aPtEhERERERGSjLevGk7v4HwB/EbzOzW4ALgN9w9yd6sV0iIiIiIiKDpieNviTufpj5ETxFRERERESkAhowRUREREREZICp0SciIiIiIjLA1OgTEREREREZYGr0iYiIiIiIDDA1+kRERERERAaYGn0iIiIiIiIDTI0+ERERERGRAaZGn4iIiIiIyABTo09ERERERGSAqdEnIiIiIiIywNToExERERERGWBq9ImIiIiI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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x133468e3898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(15, 7))\n",
"\n",
"plt.subplot(121)\n",
"plt.scatter(fly, play)\n",
"plt.xlabel(u'每年获得的飞行常客里程数', fontsize=18)\n",
"plt.ylabel(u'玩视频游戏所耗时间百分比', fontsize=18)\n",
"plt.title(u'原始数据', fontsize=18)\n",
"\n",
"plt.subplot(122)\n",
"plt.scatter(fly_normal, play_normal)\n",
"plt.xlabel(u'每年获得的飞行常客里程数', fontsize=18)\n",
"plt.ylabel(u'玩视频游戏所耗时间百分比', fontsize=18)\n",
"plt.title(u'归一化后数据', fontsize=18)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# k 值对结果的影响"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x133469309b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def plot_circle(r, c, s, w, l):\n",
" pts = np.linspace(0, 2 * np.pi, 800)\n",
" x, y = np.cos(pts) * r, np.sin(pts) * r\n",
" plt.plot(x, y, color=c, linestyle=s, linewidth=w, label=l)\n",
"\n",
"x1 = [0.6, 0.3, 0.7, 1.7, -0.2]\n",
"y1 = [0.4, 0.2, 1.8, 1.2, 1.8]\n",
"x2 = [-0.4, -1.0, -1.6, -0.9, -0.8]\n",
"y2 = [-0.3, 0.8, -1.4, -0.7, -1.6]\n",
"x_test = [0.0]\n",
"y_test = [0.0]\n",
"\n",
"plt.figure(figsize=(6,6))\n",
"plot_circle(0.9, 'black', '-', 1.0, 'k=3')\n",
"plot_circle(1.5, 'black', '--', 1.0, 'k=5')\n",
"plt.scatter(x_test, y_test, marker='o', s=150, color='green')\n",
"plt.scatter(x1, y1, marker='^', s=150, color='red')\n",
"plt.scatter(x2, y2, marker='s', s=150, color='blue')\n",
"plt.annotate('?', xy=(0, 0), xytext=(-0.05, 0.11), fontsize=18)\n",
"plt.xlim(-2, 2)\n",
"plt.ylim(-2, 2)\n",
"plt.xticks([])\n",
"plt.yticks([])\n",
"plt.legend(loc='lower right', fontsize=16)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 鸢尾花分类"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 准备数据"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iris Plants Database\n",
"====================\n",
"\n",
"Notes\n",
"-----\n",
"Data Set Characteristics:\n",
" :Number of Instances: 150 (50 in each of three classes)\n",
" :Number of Attributes: 4 numeric, predictive attributes and the class\n",
" :Attribute Information:\n",
" - sepal length in cm\n",
" - sepal width in cm\n",
" - petal length in cm\n",
" - petal width in cm\n",
" - class:\n",
" - Iris-Setosa\n",
" - Iris-Versicolour\n",
" - Iris-Virginica\n",
" :Summary Statistics:\n",
"\n",
" ============== ==== ==== ======= ===== ====================\n",
" Min Max Mean SD Class Correlation\n",
" ============== ==== ==== ======= ===== ====================\n",
" sepal length: 4.3 7.9 5.84 0.83 0.7826\n",
" sepal width: 2.0 4.4 3.05 0.43 -0.4194\n",
" petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)\n",
" petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)\n",
" ============== ==== ==== ======= ===== ====================\n",
"\n",
" :Missing Attribute Values: None\n",
" :Class Distribution: 33.3% for each of 3 classes.\n",
" :Creator: R.A. Fisher\n",
" :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\n",
" :Date: July, 1988\n",
"\n",
"This is a copy of UCI ML iris datasets.\n",
"http://archive.ics.uci.edu/ml/datasets/Iris\n",
"\n",
"The famous Iris database, first used by Sir R.A Fisher\n",
"\n",
"This is perhaps the best known database to be found in the\n",
"pattern recognition literature. Fisher's paper is a classic in the field and\n",
"is referenced frequently to this day. (See Duda & Hart, for example.) The\n",
"data set contains 3 classes of 50 instances each, where each class refers to a\n",
"type of iris plant. One class is linearly separable from the other 2; the\n",
"latter are NOT linearly separable from each other.\n",
"\n",
"References\n",
"----------\n",
" - Fisher,R.A. \"The use of multiple measurements in taxonomic problems\"\n",
" Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\n",
" Mathematical Statistics\" (John Wiley, NY, 1950).\n",
" - Duda,R.O., & Hart,P.E. (1973) Pattern Classification and Scene Analysis.\n",
" (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218.\n",
" - Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\n",
" Structure and Classification Rule for Recognition in Partially Exposed\n",
" Environments\". IEEE Transactions on Pattern Analysis and Machine\n",
" Intelligence, Vol. PAMI-2, No. 1, 67-71.\n",
" - Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\". IEEE Transactions\n",
" on Information Theory, May 1972, 431-433.\n",
" - See also: 1988 MLC Proceedings, 54-64. Cheeseman et al\"s AUTOCLASS II\n",
" conceptual clustering system finds 3 classes in the data.\n",
" - Many, many more ...\n",
"\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"\n",
"iris = load_iris()\n",
"print(iris.DESCR)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 审查数据"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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110+bNgwB/wPf/jD3n0RGaJELiLpEG8ib7TWurtvIfSaWKxjLoijnTcJvXIWOGbG9T/rw4wla2q2Xf+zPhkr13nxxRezefNmZs+eza233krr1q0599xzmTZtGlu2hKb6J0+ezMCBAyPOSyTezZtDjy507do1Yvt3vvMdADZu3EivXr1ixtKmTRsAnnvuOX71q1/x6aefcsghh3DSSSex7777IiIiey/ZgjB5xavviddW+555uhUWFjJx4kQ+/vhjPvvsM6ZMmcKMGTO45ZZb2G+//QA44IADOPXUU2s+xcXFtGnThqqqqkZaD+nUqRMAn3/+ecT2zz77DKDmXnqsWADKyso4++yz6du3Lxs2bGDt2rXMmTNHy4BKzsqW2uIbtm9g0EOD2LB9Q0bjkKanRN6IcBKfsWQNYwZ1Z80tpzNmUHdmLFmTsWQ+bNgwrrsutPpr165dueqqqzj00EN555136N27N127duXRRx+NiO2iiy7inHPOoaBgz295x44dAdi2bVu9PgYOHEjbtm0jnkCvrKxk5syZdO/enV69ejUaC8CHH35IWVkZo0aNqhnNL168mHXr1qXyKxHJGtlSW3zcK+MoKy9j/KvjMxqHNL14lzHNW7c+u6omiYen06//WR8AZixZQ/NCY9xP+qQ1pqOPPpqpU6dSWVlJr169WLp0KatXr+bCCy+koKCAm2++mdGjR/PjH/+YM888k+XLl7No0SLuueeeiHbat29P//79mTRpEl9++SXbtm1j/fr1NU+o33jjjVxxxRUMHz6cIUOG8Mgjj/Duu+/y+OOP10zTx4oFoEePHhQVFfHHP/6RsrIy/vWvf3H//fdTUFDAjh070vq9iTS1urXFRx0+ivYt0j/7tGH7Bv656Z8AvLXxLTZs38CBbQ9MexySJvHcSM/0J5MPu7206ku/+ZmV9R5sq6qq8pufWekvrfqySfqNpaKiwidNmuQ9e/b0Vq1a+UEHHeQTJkzw3bt31xzz0EMPed++fb1ly5beu3dvv//++6O29fHHH/uQIUO8devW3q5dO7/iiisi9s+YMcMPO+wwb9GihR911FH+9NNPJxzL008/7Ycffri3bNnSDz/8cH/44Yd9wIABHs/vazbSw27SkDuX3+nHzT3O+87q68fNPc5L38rMmxm/ePoX3ndW35rPqGdGZSQO2TvE+bCbeYbu8yai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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x13345fbd518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"%matplotlib inline\n",
"\n",
"def plot_iris(iris_data):\n",
" plt.figure(figsize=(8, 6))\n",
" markers = ['x', '+', '^']\n",
" labels = iris.target_names\n",
" for i in range(3):\n",
" data = iris_data[iris.target == i]\n",
" # 第 2、3 列分别表示花瓣长、宽\n",
" plt.scatter(data[:,2], data[:,3], marker=markers[i], s=60, label=labels[i])\n",
" plt.xticks(fontsize=18)\n",
" plt.yticks(fontsize=18)\n",
" plt.legend(loc='best', fontsize=18)\n",
" plt.show()\n",
" \n",
"plot_iris(iris.data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 整理数据"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 归一化"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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NmzYwPz587nlllvo3Lkz5557LjNnzuTzz2On9LrrrmPYsGH16qUz3kSQ7dOnT73yffbZB4DPPvuMfv36pRxLly5dAFi6dCn/+q//yj//+U8OPPBATjzxRHr06JHx8YuIyE7Zukae5O7vufvjUQnisPOaeF11r5lnW3FxMVOnTuW9997j448/Zvr06cyZM4ebb76ZPfbYA4C99tqLk08+OfkpLS2lS5cu1NbWNtN6TK9evQD45JNP6pV//PHHAMlr6anGAlBZWck555zDkUceybp161i7di0LFizQa0CloOVLbvF1m9Yx/E/DWbdpXU7HIa0r64E8ahJBfM6La5gwvC9rbj6NCcP7MufFNTkL5meccQbXXHMNEJsx//znP+eQQw7hjTfeoH///vTp04f777+/3tguvvhixo4dS1HRzr/ynj17AvD117s+AThs2DC6du1a7w70mpoa5s6dS9++fenXr1+zYwH4xz/+QWVlJePGjUvO5pctW8aHH34Y5ikRySv5klt88vOTqayqZMpfpuR0HNK6wrpGXrBueXJlMognltPrXjNvX2xM/t6ArI7p6KOPZsaMGdTU1NCvXz9eeeUVVq9ezUUXXURRURE33XQT48eP57vf/S5nn302y5cvZ8mSJdx5Z/23xnbv3p0hQ4Ywbdo0Pv30U77++ms++uij5B3qN9xwA5dffjlnnXUWI0eO5L777uPNN99k0aJFyWX6VGMBOPjggykpKeFXv/oVlZWV/P3vf2f27NkUFRWxdevWrJ43kWxomFt83BHj6N4h+ytQ6zat428VfwPgtc9eY92mdezbdd+sj0OyIMgdcbn+5PKu9WdXfuo3Pb5il7vTa2tr/abHV/izKz9tlX5T2bFjh0+bNs0PPfRQ79Spk++///5+9dVXe3V1dXKfP/3pT37kkUd6x44dvX///j579uxG23rvvfd85MiR3rlzZ+/WrZtffvnl9bbPmTPHDzvsMO/QoYMPGjTIH3vssbTH8thjj/kRRxzhHTt29COOOMLvvfdeHzp0qAf5e81HumtdUrlj+R1+3MLj/Mh5R/pxC4/zWa/l5umMHz32Iz9y3pHJz7jHx+VkHJI5At61bp6j67zpKCsr8/Ly8pT7vPPOOwwYkN2ZsbRN+lmTplRWVXLyAyeztXrnalNJcQlPn/N0Vmfl6zat49T/OXWX8id/8KRm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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x13346a80cc0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.preprocessing import MinMaxScaler\n",
"\n",
"scaler = MinMaxScaler()\n",
"iris_data = scaler.fit_transform(iris.data)\n",
"\n",
"plot_iris(iris_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 准备数据集"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"dataset_size = iris.data.shape[0]\n",
"\n",
"np.random.seed(42)\n",
"\n",
"# shuffle dataset\n",
"indices = np.random.permutation(dataset_size)\n",
"suffled_data = iris.data[indices]\n",
"suffled_target = iris.target[indices]\n",
"\n",
"# prepare datasets\n",
"ratio = 0.8\n",
"train_data_size = int(dataset_size * 0.8)\n",
"train_data = suffled_data[:train_data_size]\n",
"train_target = suffled_target[:train_data_size]\n",
"test_data = suffled_data[train_data_size:]\n",
"test_target = suffled_target[train_data_size:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 训练模型 - Python"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1 0 1 1 0 1 2 2 0 1 2 2 0 2 0 1 2 2 1 2 1 1 2 2 0 1 1 0 1 2]\n"
]
}
],
"source": [
"import operator\n",
"\n",
"class KNNClassifier:\n",
" \n",
" def __init__(self, k):\n",
" self.k = k\n",
" \n",
" def fit(self, train_data, train_target):\n",
" self.train_data = train_data\n",
" self.train_target = train_target\n",
" \n",
" def distance(self, test_data):\n",
" \"\"\" 计算测试集 test_data 与 训练集的欧式距离 \"\"\"\n",
" train_size = self.train_data.shape[0] # 获取训练样本集的样本数量\n",
" ds = [] # 保存每个测试样本与训练样本的距离\n",
" for data in test_data:\n",
" diff = np.tile(data, [train_size, 1]) - self.train_data # 与训练样本集相减\n",
" diff_squared = diff ** 2 # 计算平方\n",
" distance_squared = diff_squared.sum(axis=1) # 计算平方和\n",
" distance = distance_squared ** 0.5 # 计算开方\n",
" ds.append(distance)\n",
" return np.array(ds)\n",
"\n",
" def predict(self, test_data):\n",
" \"\"\" 预测分类结果 \"\"\"\n",
" \n",
" distances = self.distance(test_data) # 计算距离\n",
" distances_sorted = distances.argsort() # 对索引进行排序\n",
" predicts = [] # 保存预测结果\n",
" for distance in distances_sorted: # 遍历每一个样本的距离,找出最小的 k 个\n",
" predict_dict = {} # 保存预测结果\n",
" for i in range(self.k): # 统计前 k 个最小距离中,每个分类的数量\n",
" key = self.train_target[distance[i]]\n",
" predict_dict[key] = predict_dict.get(key, 0) + 1\n",
" items = predict_dict.items()\n",
" sorted_predict_dict = sorted(predict_dict.items(), key=operator.itemgetter(1), reverse=True)\n",
" predict = sorted_predict_dict[0][0]\n",
" predicts.append(predict)\n",
" return np.array(predicts)\n",
" \n",
"kNN = KNNClassifier(k=3)\n",
"kNN.fit(train_data, train_target)\n",
"predicts = kNN.predict(test_data)\n",
"print(predicts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 评估模型 - Python"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test accuracy: 0.9666666666666667\n"
]
}
],
"source": [
"correct = (predicts == test_target).astype(float)\n",
"accuracy = np.mean(correct)\n",
"print(\"Test accuracy: \", accuracy)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 训练模型 - sklearn"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1 0 1 1 0 1 2 2 0 1 2 2 0 2 0 1 2 2 1 2 1 1 2 2 0 1 1 0 1 2]\n"
]
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"kNN = KNeighborsClassifier(n_neighbors=3)\n",
"kNN.fit(train_data, train_target)\n",
"predicts = kNN.predict(test_data)\n",
"print(predicts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 评估模型 - sklearn"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test accuracy: 0.9666666666666667\n"
]
}
],
"source": [
"accuracy = kNN.score(test_data, test_target)\n",
"print(\"Test accuracy: \", accuracy)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.6.4"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}

评论 ( 0 )

你可以在登录后,发表评论

搜索帮助