{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 使用 K 均值算法来分类安然的财务数据" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "import numpy\n", "import matplotlib.pyplot as plt\n", "import sys\n", "sys.path.append(\"../tools/\")\n", "from feature_format import featureFormat, targetFeatureSplit" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def Draw(pred, features, poi, mark_poi=False, name=\"image.png\", f1_name=\"feature 1\", f2_name=\"feature 2\"):\n", " \"\"\" some plotting code designed to help you visualize your clusters \"\"\"\n", "\n", " ### plot each cluster with a different color--add more colors for\n", " ### drawing more than five clusters\n", " colors = [\"b\", \"c\", \"k\", \"m\", \"g\"]\n", " for ii, pp in enumerate(pred):\n", " plt.scatter(features[ii][0], features[ii][1], color = colors[pred[ii]])\n", "\n", " ### if you like, place red stars over points that are POIs (just for funsies)\n", " if mark_poi:\n", " for ii, pp in enumerate(pred):\n", " if poi[ii]:\n", " plt.scatter(features[ii][0], features[ii][1], color=\"r\", marker=\"*\")\n", " plt.xlabel(f1_name)\n", " plt.ylabel(f2_name)\n", " plt.savefig(name,dpi=150)\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "移除 TOTAL 项目,此处其属于异常值" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Removed the outlier.\n" ] } ], "source": [ "### load in the dict of dicts containing all the data on each person in the dataset\n", "data_dict = pickle.load( open(\"../final_project/final_project_dataset.pkl\", \"rb\") )\n", "\n", "### there's an outlier--remove it! \n", "data_dict.pop(\"TOTAL\")\n", "print(\"Removed the outlier.\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The max value of exercised_stock_options is LAY KENNETH L 34348384\n", "The min value of exercised_stock_options is BELFER ROBERT 3285\n", "The max value of salary is SKILLING JEFFREY K 1111258\n", "The min value of salary is BANNANTINE JAMES M 477\n" ] } ], "source": [ "# 定义了一个函数来直接给出数据集中某项的最大值和最小值\n", "def min_and_max(obj):\n", " obj_want_to_check = obj\n", " max_v = 0\n", " max_name = None\n", " for v in data_dict.keys():\n", " if data_dict[v][obj_want_to_check] != \"NaN\":\n", " if data_dict[v][obj_want_to_check] > max_v:\n", " max_v = data_dict[v][obj_want_to_check]\n", " max_name = v\n", " min_v = max_v\n", " min_name = None\n", " for v in data_dict.keys():\n", " if data_dict[v][obj_want_to_check] != \"NaN\":\n", " if data_dict[v][obj_want_to_check] < min_v:\n", " min_v = data_dict[v][obj_want_to_check]\n", " min_name = v\n", " print (f\"The max value of {obj_want_to_check} is \", max_name, max_v)\n", " print (f\"The min value of {obj_want_to_check} is \", min_name, min_v)\n", " \n", "min_and_max(\"exercised_stock_options\")\n", "min_and_max(\"salary\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "### the input features we want to use \n", "### can be any key in the person-level dictionary (salary, director_fees, etc.) \n", "feature_1 = \"salary\"\n", "feature_2 = \"exercised_stock_options\"\n", "#fearure_3 = \"total_payments\"\n", "poi = \"poi\"\n", "features_list = [poi, feature_1, feature_2]\n", "data = featureFormat(data_dict, features_list )\n", "poi, finance_features = targetFeatureSplit( data )" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "### in the \"clustering with 3 features\" part of the mini-project,\n", "### you'll want to change this line to \n", "### for f1, f2, _ in finance_features:\n", "### (as it's currently written, the line below assumes 2 features)\n", "for f1, f2 in finance_features:\n", " plt.scatter( f1, f2 )\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 以下为使用 Sklearn 中的 KMeans 函数来生成、训练一个 K 均值分类器" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAERCAYAAACZystaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3df5xcdX3v8dd7Q7IQEIGQxgjZLNtiWrTKj4igbf2BUsxV0Cu2YERAbCTgNV7tbUlzSyu3udZ71VrEX1FAhC2CoDZyoUjFiHojdkP5KazGSEIKDQuUAAYXwn76xzlLZifz6+zOmTOz834+HueROd85M+dzZmA+e74/FRGYmVl36yk6ADMzK56TgZmZORmYmZmTgZmZ4WRgZmY4GZiZGR2cDCRdIulhSXc3cOzfSbo93X4m6fFWxGhm1inUqeMMJP0B8BTw1Yh4WYbX/TfgiIh4b27BmZl1mI69M4iIW4DHSssk/aakf5K0QdIPJP12hZeeClzZkiDNzDrEHkUH0GRrgLMj4ueSXgV8DnjD+JOSFgKHADcXFJ+ZWVuaNslA0j7Aq4GvSxov7i077BTgmoh4rpWxmZm1u2mTDEiqvB6PiMNrHHMKcG6L4jEz6xgd22ZQLiKeAH4p6Z0ASrxi/HlJi4D9gfUFhWhm1rY6NhlIupLkh32RpK2SzgKWAmdJugO4Bzip5CWnAl+LTu0+ZWaWo47tWmpmZs3TsXcGZmbWPB3ZgHzggQdGf39/0WGYmXWUDRs2PBIRcys915HJoL+/n6GhoaLDMDPrKJI2V3vO1URmZuZkYGZmOScDSXtK+omkOyTdI+mjFY45Q9JIyayi78szJjMz213ebQajwBsi4ilJM4EfSrohIn5cdtxVEfGBnGMxM7Mqck0G6QCvp9LdmenmgQ1mZm0m9zYDSTMk3Q48DNwUEbdWOOwdku6UdI2kBVXeZ5mkIUlDIyMjucZsZtZtck8GEfFcOnncwcDRksoXovk20B8RLwf+GbisyvusiYjFEbF47tyK3WTNzNre4LZt9K9fT8+6dfSvX8/gtm1FhwS0sDdRRDwOrANOKCt/NCJG090vAUe1KiYzs1Ya3LaNZcPDbB4dJYDNo6MsGx5ui4SQd2+iuZL2Sx/vBbwRuK/smPkluycC9+YZk5lZUVZt2sSOsbEJZTvGxli1aVNBEe2Sd2+i+cBlkmaQJJ6rI+I6SRcAQxGxFvigpBOBnSTLWJ6Rc0xmZoXYMjqaqbyV8u5NdCdwRIXy80serwRW5hmHmVk76OvtZXOFH/6+3vJFGVvPI5DNzFpk9cAAs3sm/uzO7ulh9cBAQRHt4mRgZtYiS+fNY82iRSzs7UXAwt5e1ixaxNJ584oOrTNnLTUz61RL581rix//cr4zMDMzJwMzM3MyMDMznAzMzAwnAzMzw8nAzMxwMjAzM5wMzMwMJwMzM8PJwMzMcDIwMzOcDMzMjC5NBu26BqmZWVG6btbS8TVIx5eeG1+DFGjLmQTNzFqh6+4M2nkNUjOzonRdMmjnNUjNzIqSazKQtKekn0i6Q9I9kj5a4ZheSVdJ2ijpVkn9ecZUba3RdliD1MysKHnfGYwCb4iIVwCHAydIOqbsmLOA/4iI3wL+Dvh4ngG18xqkZmZFyTUZROKpdHdmukXZYScBl6WPrwGOk6S8YmrnNUjNzIqSe28iSTOADcBvAZ+NiFvLDjkIeAAgInZK2g7MAR4pe59lwDKAvr6+KcXUrmuQmpkVJfcG5Ih4LiIOBw4Gjpb0srJDKt0FlN89EBFrImJxRCyeO3duHqGamXWtlvUmiojHgXXACWVPbQUWAEjaA3gh8Fir4jIzs/x7E82VtF/6eC/gjcB9ZYetBU5PH58M3BwRu90ZmJlZfvJuM5gPXJa2G/QAV0fEdZIuAIYiYi1wMXC5pI0kdwSn5ByTmZmVyTUZRMSdwBEVys8vefxr4J15xmFmZrV13QhkMzPbnZOBmZk5GZiZmZOBmZnhZGBmZjgZmJkZTgZmZoaTgZmZ4WRgZmY4GZiZGU4GZmZGhmQgaYWkfZW4WNJtko7PMzgzM2uNLHcG742IJ4DjgbnAmcDf5hKVmZm1VJZkML4i2RLg0oi4g8qrlJmZWYfJkgw2SPoOSTK4UdILgLF8wjIzs1bKsp7BWcDhwKaI2CFpDklVkZmZdbiGk0FEjEnaBhyWrlVsZmbTRMM/6pI+Dvwx8FPgubQ4gFtyiMvMzFooy1/4bwMWRcRoXsGYmVkxsjQgbwJmZnlzSQskfU/SvZLukbSiwjGvk7Rd0u3pdn6l9zIzs/xkuTPYAdwu6bvA83cHEfHBGq/ZCXwkIm5Lex9tkHRTRPy07LgfRMRbMsRiZmZNlCUZrE23hkXEQ8BD6eMnJd0LHETS7mBmZm0iS2+iyyTNAl6SFg1HxLONvl5SP3AEcGuFp4+VdAfwIPCnEXFPo+9rZmZTl6U30euAy4D7SUYeL5B0ekTU7U0kaR/gWuBD6ZQWpW4DFkbEU5KWAN8CDq3wHsuAZQB9fX2Nhm1mZg1QRDR2oLQBeFdEDKf7LwGujIij6rxuJnAdcGNEfKqB89wPLI6IR6ods3jx4hgaGmoobjMzS0jaEBGLKz2XpTfRzPFEABARP6NO7yJJAi4G7q2WCCS9KD0OSUenMT2aIS4zM5uiLA3IQ5IuBi5P95cCG+q85jXAacBdkm5Py/4C6AOIiC8AJwPLJe0EngZOiUZvV8zMrCmyJIPlwLnAB0naDG4BPlfrBRHxQ+rMbBoRFwEXZYjDzMyaLEtvolHgU+lmZmbTSN1kIOnqiPgjSXeRzEU0QUS8PJfIzMysZRq5MxifQsIjhM3Mpqm6vYnSUcQA50TE5tINOCff8MzMrBWydC19U4WyNzcrEDMzK04jbQbLSe4ABiTdWfLUC4Af5RWYmZm1TiNtBv8A3AB8DDivpPzJiHgsl6jMzKyl6iaDiNgObAdOlXQk8HskvYp+BDgZmJlNAw23GUj6S5KJ6uYABwKXSvqfeQVmZmatk2UE8ruAIyLi1wCS/pZkxtG/ySMwMzNrnSy9ie4H9izZ7wV+0dRozMysEFnuDEaBeyTdRNJm8Cbgh5IuhLrLX5qZWRvLkgy+mW7j1jU3FDMzK0rLlr00M7P21ZJlL83MrL1lqSb6JHB8+bKXQM1lL83MrP3luuylmZl1hryXvTQzsw6Q67KXZmbWGZq27KWkayPiHc0KzMzMWidLm0E9A+UFkhZI+p6keyXdI2lFhWMk6UJJGyXdmU6GZ2ZmLdTMZLDb+sjATuAjEfE7wDHAuZIOKzvmzcCh6bYM+HwTY7JpanDbNvrXr6dn3Tr6169ncNu2okMy62jNTAa7iYiHIuK29PGTwL3AQWWHnQR8NRI/BvaTND/PuKyzDW7bxrLhYTaPjhLA5tFRlg0POyGYTUEzk4FqPin1A0cAt5Y9dRDwQMn+VnZPGEhaJmlI0tDIyMjUIrWOtmrTJnaMjU0o2zE2xqpNmwqKyKzzZVnPYLfBZZLeWrL75zVeuw9wLfChiHii/OkKL9mtyiki1kTE4ohYPHfu3Aajtuloy+hopnKzTtXK6tAsdwZfkvS74zuSTgWeX9wmIr5T6UWSZpIkgsGI+EaFQ7YCC0r2DwYezBCXdZm+3t5M5WadqNXVoVmSwcnAZZJ+R9KfAOcAx9d6gSQBFwP3RkTFLqnAWuA9aa+iY4DtEfFQhrisy6weGGB2z8T/dGf39LB6YLcObWYdq9XVoVnGGWySdArwLZI6/uMj4uk6L3sNcBpwl6Tb07K/APrS9/wCcD2wBNgI7ADOzHQF1nWWzpsHJP+zbBkdpa+3l9UDA8+Xm00Hra4OrZsMJN3FxDr8A4AZwK2SiIiXV3ttRPyQOg3LEREkI5vNGrZ03jz/+Nu01tfby+YKP/x5VYc2cmfwllzObGZmVa0eGGDZ8PCEqqI8q0PrthlExOaI2AzMBx4r2X8MeFEuUZmZdbml8+axZtEiFvb2ImBhby9rFi3K7Y44y0R1nwdKp4r4VYUyMzNrklZWh2bpTaS0fh+AiBgjWzIxM7M2lSUZbJL0QUkz020F4CGfZmbTQJZkcDbwauDf0u1VJBPLmZlZh8syzuBh4JQcYzEzs4JkmZvoYEnflPSwpG2SrpV0cJ7BmZlZa2SpJrqUZOqIF5PMKvrttMzMzDpclmQwNyIujYid6fYVwNOHmplNA1mSwSOS3i1pRrq9G3g0r8DMzKx1siSD9wJ/BPw78BDJLKaeVM7MbBrIMmhsQUScWFog6TXAluaGZGZmrZblzuAzDZaZmVmHaWQK62NJBpvNlfThkqf2JZnK2szMOlwj1USzgH3SY19QUv4ESbuBmZl1uLrJICK+D3xf0lfSqauR1APsU2FxezMz60BZ2gw+JmlfSXsDPwWGJf2PnOKyggxu20b/+vX0rFtH//r1uS2+bWbtJUsyOCy9E3gbybrFfSTrG9s0MbhtG8uGh9k8OkoAm0dHWTY87IRg1gWyJIOZkmaSJIN/jIhnmbg28m4kXZLOZXR3ledfJ2m7pNvT7fwM8ViTrdq0acISewA7xsZYtckzlZtNd1mSwReB+4G9gVskLSRpRK7lK8AJdY75QUQcnm4XZIjHmmxLhcW3a5Wb2fTRcDKIiAsj4qCIWJKueLYFeP3485JOr/CaW0jWSrYO0Nfbm6nczKaPLHcGE0RiZ0nRikm+1bGS7pB0g6SXVjtI0jJJQ5KGRkZGJnkqq2X1wACzeyb+JzG7p4fVAwMFRWRmrTLpZFCBJvGa24CFEfEKktHM36p2YESsiYjFEbF47lxPlpqHpfPmsWbRIhb29iJgYW8vaxYtatmC3GZWnGYuaF+zMbniC0rGKUTE9ZI+J+nAiHikiXFZBkvnzfOPv1kXKvTOQNKLJCl9fHQaj6fFNjNrsWbeGfyovEDSlcDrgAMlbQX+CpgJEBFfIJnOYrmkncDTwClp47SZmbVQIxPVfbjW8xHxqfTfD1R47tQ6r70IuKheDGZmlq9G7gzGJ6dbBLySZB1kgLcCt+QRlJmZtVYjE9V9FEDSd4AjI+LJdP+vga/nGp2ZmbVElgbkPuCZkv1ngP6mRmNmZoXI0oB8OfATSd8k6Ub6duCruURlZmYt1XAyiIjVkm4Afj8tOjMi/jWfsMzMrJWyjjOYDTwREX8PbJV0SA4xmZlZizWcDCT9FfDnwMq0aCZwRR5BmZlZa2W5M3g7cCLwK4CIeJCJayKbmVmHypIMnklHBwdAuvylmZlNA1mSwdWSvgjsJ+lPgH8GvpRPWGZm1kpZehN9QtKbSFY3WwScHxE35RaZmZm1TMPJIK0WujkibpK0CFgkaWa6FrKZmXWwLNVEtwC9kg4iqSI6k2SNYzMz63BZkoEiYgfwX4HPRMTbgcPyCcvMzFopUzKQdCywFPh/aVkz10MwM7OCZEkGHyIZcPbNiLhH0gDwvXzCMjOzVsrSm+j7wPdL9jcBH8wjKDMza626dwaSPp3++21Ja8u3/EM0M+tsg4PQ3w89Pcm/g4NFR7S7Ru4MLk///USegZiZTUeDg7BsGezYkexv3pzsAyxdWlxc5dTo+vPpOIOnI2Is3Z8B9KY9jKq95hLgLcDDEfGyCs8L+HtgCbADOCMibqsXy+LFi2NoaKihuM3MitTfnySAcgsXwv33tzYWSRsiYnGl57I0IH+XZArrcXuRjDeo5SvACTWefzNwaLotAz6fIR4zs7a3ZUu28qJkSQZ7RsRT4zvp49k1jicibgEeq3HIScBXI/FjknmP5meIycysrfX1ZSsvSpZk8CtJR47vSDoKeHqK5z8IeKBkf2tathtJyyQNSRoaGRmZ4mnNzFpj9WqYXfZn8+zZSXk7yTJobAXwdUkPpvvzgT+e4vlVoaxiI0ZErAHWQNJmMMXzmpm1xHgj8apVSdVQX1+SCNqp8RgaTAaSeoBZwG+TzFgq4L4mTFK3FVhQsn8w8GCVY83MOtLSpe3341+uoWqitAfRJyPi2Yi4OyLuatJspWuB9yhxDLA9Ih5qwvuamVkGWdoMviPpHWl30IZIuhJYTzLd9VZJZ0k6W9LZ6SHXA5uAjSQL5ZyTIR6zpumEQUFmecrSZvBhYG/gOUlPk1QVRUTsW+0FEXFqrTdMl9E8N0MMZk3XKYOCzPLU8J1BRLwgInoiYmZE7JvuV00EZp1i1apdiWDcjh1JuVm3aDgZpPX675b0l+n+AklH5xeagasvWqFTBgWZ5SlLm8HngGOBd6X7TwGfbXpE9rzx6ovNmyFiV/VFngmhG5NPpwwKMstTlmTwqog4F/g1QET8B0l3U8tJq6svikg+7aBTBgWZ5SlLMng2nZwuACTNBcZyicqA1ldfdGvd+dKlsGZNMnGYlPy7Zo0bj627ZEkGFwLfBH5D0mrgh8D/ziWqaWKqVS6trr7o5rrzpUuTGSTHxpJ/nQis22TpTTQI/BnwMeAh4G0R8fW8Aut0zahyaXX1hevOzbpXlt5Eb4yI+yLisxFxUUTcK+n0PIPrZM2ocml19YXrzs26V5bFbW4B7gH+FNgH+DIwGhEn5xdeZZ2wuE1PT3JHUE5KqiLa1eBg+0+oZWaTU2txmywjkF8LfAS4Pd0/PyKunGpw01VfX+XVjdq9yqUTJtQys+bL0oC8P/Aq4BfAKLAwyzxF3aaTq1y6cayBWbfLkgx+DNwQEScArwReDPwol6imgU7trtitYw3Mul2WNoM+kqqiQyLignS/P13asqU6oc2gU7XT4t1m1ly12gyy3BmsBI4BxmcifRL45BRjszbTzWMNzLqZp6OwCTzWwKw7eToKm6CTG77NbPI8HYVN0KkN32Y2NZ6OootV60LqeXrMuk+WOwPKp6PIK6i8taoffTv313cXUjMr1XDX0nYyla6lg4Nw5pnw7LO7ymbOhEsvbe5fwOXr6kJS994uVS7uQmrWfZrVtXSyJz9B0rCkjZLOq/D8GZJGJN2ebu/LM54VKyYmAkj2V6xo7nnyWBugmXca7kJqZqWyzE2UWdr76LPAm4CtwL9IWhsRPy079KqI+ECesYx79NFs5ZPV7B/b8juN8WodmNydRqfOnWRm+cj7zuBoYGNEbIqIZ4CvASflfM620Oz++s2+03AXUjMrlXcyOAh4oGR/a1pW7h2S7pR0jaQFld5I0jJJQ5KGRkZGJh3QnDnZyier2T+2U7nTqFS9VGQX0nZuWDfrWhGR2wa8E/hyyf5pwGfKjpkD9KaPzwZurve+Rx11VEzWFVdEzJoVkfShSbZZs5LyqbjiioiFCyOk5N8rrqhcNlkLF06MeXxbuLB+XLNnT3zN7NlTv95GlX8Gy5cXG49ZNwOGotrvdbUnmrEBxwI3luyvBFbWOH4GsL3e+04lGUQkP0gzZiRXP2NGsj8VrfjBnew5JptE8opZKi4es25XZDLYA9gEHEIyj9EdwEvLjplf8vjtwI/rve9U7wya/cPdqh/cydxpVPvxlZobWyXVPpei4jHrdrWSQe7jDCQtAT6d/tV/SUSslnRBGtRaSR8DTgR2Ao8ByyPivlrvOZVxBnn0r2/nJS6LHE9Q7XOpxOMbzPJX6DiDiLg+Il4SEb8ZEavTsvMjYm36eGVEvDQiXhERr6+XCKYqj/717TzTZ5G9hqpdf/n6eO7FZFa83JNBu8njh7udu2kW2Wuo2udy9tntPxGeezxZ16lWf9TOW7u1GYy/b7N6DhWtmdfSiZ9L0T2wzPJCkW0GeZjqspeDg8lgrS1bkjuC1avb7y/TorT7nEqt4HmbbLqq1WbQlcnAqvMPYXt3CDCbikIbkNuR64Or8wR27d0hwCwvXZcMPI9/7WTYrB/CTk647dwhwCw31RoT2nmbSgNykSNyK2l1A2u9xtFmNJ42+h7t3LjczrGZTRZFjUDOa5tKMqg1CrYZsvyI5NlrpVocjSTDqf4QVjvHnDm73nfOnIiZMxu/dv84m02dk0GJ8TmJyrcZMyb9ls/L+uOe111KrThaMT1FtXM0slW6dnf1NGuOWsmg69oMnnsuW3kWWdccyKOxdnAQTj+9ehy12gSaVc8/lYbWStde63Pt5LYJs7ZSLUu08zaVO4M5cyr/RTpnzqTf8nlZJ2Fr9p1Bpb+gy7dGjpnqX9+Vpgmfyp1BrTsN3zGYNQ7fGeRvcHD3OXfGVftLudFeK43+9VvpL+hKxqenqKfeSmq14oqo//6VLFmye1m1z2/GjOavM23WtapliXbe2rEBudpf+VL9RuRaDaNZ6ssbqasvvQNqZIrpanc1leKaObP6ndf4ezWzzSBrzGbdDjcgl34Y+SSDWj90U5GlKqnR9QMaibnWebKcq9L71TtvpURXKWm2Wzdhs3ZXKxm4mqhJqlVlNFIdU0ujjcyDg/DUU9neu15D76xZyXtWqgaaTCP3+JQWY2O1P5dKgwCXLt312vvvT/Y9OMyseZwMmiSvH6ZGRgSPj6p+9NH67zdr1q56/nrHP/NMckxEMlL7tNPgnHOS5w44oKHwn1f+WVT6vMbt2AErVtR/zyKn5zabdqrdMrTz1o7VRBH5DIyqVl++fPmuc1UbO5HHNt4GUqttoFK1TbWqn6zVRWY2eXgK612q9fiB5CeoHZVPub1kCVx2WWM9h/KwcGESS73Pq5Gpr6vNkjp+nm6ZKdWsFTxraYcrry+//vriEgEkP949DfyX00iVTa1qtG6aKdWsaLknA0knSBqWtFHSeRWe75V0Vfr8rZL6846pmiyjV4sa+To4WP0v6VaqN2K71h1YuWqJpVp7Sa3PvhtGJHfDNVoBqtUfNWMDZgC/AAaAWcAdwGFlx5wDfCF9fApwVb33zavNoNHRq0XNlZNl9HA7bPW6eNa6nmqfZ63PvhvmMOqGa7T8UNQ4A+BY4MaS/ZXAyrJjbgSOTR/vATxCugJbtS2vZNDID1hEcf3bJ9u3v6it3uCvatczY8bkJvfrhnEH3XCNlp9aySDvaqKDgAdK9remZRWPiYidwHZgTvkbSVomaUjS0MjISE7hNlZPXdRqYO1ah15tzEC9cQzVrmdsrHpbQ63PvhtWaeuGa7Ri5J0MKtUcxySOISLWRMTiiFg8d+7cpgRXSSMzbha1LGI7LrvY0zP5MRaT+RxrvaYblqvshmu0YuSdDLYCC0r2DwYerHaMpD2AFwKP5RXQccdVf67RQWJFjXytNVCrVJbG26l6//snP/hrMp9jrdd0w4jkbrhGK0i1+qNmbCRtAJuAQ9jVgPzSsmPOZWID8tX13ncqbQYREccdV7nONevSjkWsvFV63jlzIvbZZ9c1zJmzqyG1dFDY3ntPPG68Xr50/7DD6rdJ9PZG9PTsev3y5c29nkY/x1qv6YYV0brhGi0fFDnoTNIS4NMkPYsuiYjVki5Ig1oraU/gcuAIkjuCUyJiU633nMqgMzOzblVr0NkeeZ88Iq4Hri8rO7/k8a+Bd+Ydh5mZVecRyGZm5mRgZmZOBmZmhpOBmZnhZGBmZjgZmJkZTgZmZgadudKZpBGgGbP6H0gyS+p04+vqHNPxmsDX1a4WRkTFyd06Mhk0i6ShaqPxOpmvq3NMx2sCX1cncjWRmZk5GZiZmZPBmqIDyImvq3NMx2sCX1fH6eo2AzMzS3T7nYGZmeFkYGZmdHEykHSCpGFJGyWdV3Q8AJIWSPqepHsl3SNpRVp+gKSbJP08/Xf/tFySLkyv4U5JR5a81+np8T+XdHpJ+VGS7kpfc6GULJJZ7RxNvLYZkv5V0nXp/iGSbk3Pd5WkWWl5b7q/MX2+v+Q9Vqblw5L+sKS84ndZ7RxNvKb9JF0j6b70Ozt2mnxX/z397+9uSVdK2rMTvy9Jl0h6WNLdJWWFfT+1ztEWqi2BNp03klXXfgEMsGs5zsPaIK75wJHp4xcAPwMOA/4PcF5afh7w8fTxEuAGQMAxwK1p+QEky40eAOyfPt4/fe4nwLHpa24A3pyWVzxHE6/tw8A/ANel+1eTrGoH8AVgefr4HCYug3pV+viw9HvqJVlG9Rfp91j1u6x2jiZe02XA+9LHs4D9Ov27Ag4CfgnsVfIZntGJ3xfwB8CRwN0lZYV9P9XO0S5b4QEUctHJF3hjyf5KYGXRcVWI8x+BNwHDwPy0bD4wnD7+InBqyfHD6fOnAl8sKf9iWjYfuK+k/Pnjqp2jSddxMPBd4A3Aden/DI8Ae5R/H8CNwLHp4z3S41T+HY0fV+27rHWOJl3TviQ/mior7/Tv6iDggfTHb4/0+/rDTv2+gH4mJoPCvp9q52jWdzfVrVuricb/gx+3NS1rG+nt9hHArcC8iHgIIP33N9LDql1HrfKtFcqpcY5m+DTwZ8BYuj8HeDwidlaI4/nY0+e3p8dnvdZa52iGAWAEuFRJ9deXJe1Nh39XEfFvwCeALcBDJJ//Bjr/+xpX5PfT1r873ZoMVKGsbfrYStoHuBb4UEQ8UevQCmUxifLcSHoL8HBEbCgtrhFHs64p72vdg6QK4vMRcQTwK5IqgWraLf6K0vrtk0iqdl4M7A28uUYsnfJ91dOKeIu+xpq6NRlsBRaU7B8MPFhQLBNImkmSCAYj4htp8TZJ89Pn5wMPp+XVrqNW+cEVymudY6peA5wo6X7gayRVRZ8G9pO0R4U4no89ff6FwGN1rqlS+SM1ztEMW4GtEXFrun8NSXLo5O8K4I3ALyNiJCKeBb4BvJrO/77GFfn9tO3vDnRvMvgX4NC098IskoavtQXHRNob4WLg3oj4VMlTa4HxXgynk7QljJe/J+2lcAywPb0tvRE4XtL+6V96x5PUvz4EPCnpmPRc7yl7r0rnmJKIWBkRB0dEP8nnfHNELAW+B5xc5ZrG4zg5PT7S8lPS3iuHAIeSNOBV/C7T11Q7RzOu69+BByQtSouOA35KB39XqS3AMZJmp+cdv66O/r5KFPn9VDtHeyi60aKojaRl/2ckPRtWFR1PGtPvkdw23gncnm5LSOpTvwv8PP33gPR4AZ9Nr+EuYHHJe70X2JhuZ5aULwbuTl9zEbtGoVc8R5Ov73Xs6k00QPLjsBH4OtCblu+Z7m9Mnx8oef2qNO5h0p4btb7Laudo4vUcDgyl39e3SHqbdPx3BXwUuC899yEHBY8AAAG/SURBVOUkPYI67vsCriRp93iW5K/ys4r8fmqdox02T0dhZmZdW01kZmYlnAzMzMzJwMzMnAzMzAwnAzMzw8nAbMokfUXSyfWPNGtfTgZmLVYyytasbfg/SrMK0knnriaZMmAG8L+ARcBbgb2A/w+8P8oG6kg6v9Ixktal+68BbpZ0BvCSiHhW0r4kA9cOjWQKCLOW852BWWUnAA9GxCsi4mXAPwEXRcQr0/29gLdUeF2tY/aLiNdGxEeBdcB/SctPAa51IrAiORmYVXYX8EZJH5f0+xGxHXi9kpW47iKZcO+lFV5X65irSh5/GTgzfXwmcGnzL8Gsca4mMqsgIn4m6SiSeXQ+Juk7wLkk88k8IOmvSebleZ6kPYHP1TjmVyXv/yNJ/ZJeC8yIiLsxK5DvDMwqkPRiYEdEXEGy2Mv4erWPpOtNVOo9tGcDx5T6Kslkar4rsML5zsCsst8F/q+kMZJZL5cDbyOpPrqfZCrmCSLicUlfqnVMmUHgb0gSglmhPGupWUHSsQknRcRpRcdi5jsDswJI+gzJcpJLio7FDHxnYGZmuAHZzMxwMjAzM5wMzMwMJwMzM8PJwMzMgP8E6PTAW0mhOfsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "### cluster here; create predictions of the cluster labels\n", "### for the data and store them to a list called pred\n", "from sklearn.cluster import KMeans\n", "\n", "clst = KMeans(n_clusters=2,n_init=100,max_iter=100)\n", "clst.fit(finance_features)\n", "pred = clst.predict(finance_features)\n", "\n", "\n", "\n", "\n", "### rename the \"name\" parameter when you change the number of features\n", "### so that the figure gets saved to a different file\n", "try:\n", " Draw(pred, finance_features, poi, mark_poi=False, name=\"clusters_2.png\", f1_name=feature_1, f2_name=feature_2)\n", "except NameError:\n", " print (\"no predictions object named pred found, no clusters to plot\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 此时对数据进行特征缩放\n", "这里是使用了两个特征缩放的缩放器,分别处理薪资和股票的数据。" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAeWElEQVR4nO3df5xddX3n8dd7QjIYAa3JmCrJzDCPB6Sm1l1girJuV13UR8zaoFvWgsEidR0NUtPVuguPtKho1tYfbf2B1fgDEMYfWB/W2I1FV0G2LLiEqijQ6SNOSUixIaLF6ugAzmf/OGeSm5v768ycc8+9c97Px+M8Zs655977OTeT87nf34oIzMysugbKDsDMzMrlRGBmVnFOBGZmFedEYGZWcU4EZmYVd1zZASzE6tWrY3R0tOwwzMz6yp133vmDiBiqP96XiWB0dJQ9e/aUHYaZWV+RtK/RcVcNmZlVnBOBmVnFORGYmVWcE4GZWcU5EZiZVZwTgZlZxRWaCCR9XNKDkr7b5HFJep+kvZLuknRGkfGYmZVt8uBBRm+7jYGbb2b0ttuYPHiw7JAKLxFcA2xs8fiLgFPTbQL4i4LjMTMrzeTBg0xMTbFvdpYA9s3OMjE1VXoyKDQRRMQtwA9bnHIu8IlI3A48UdJTiozJzKws26enmZmbO+rYzNwc26enS4ooUXYbwcnA/TX7B9Jjx5A0IWmPpD2HDh3qSnBmZnnaPzub6Xi3lJ0I1OBYwyXTImJnRIxHxPjQ0DFTZZiZ9bzhwcFMx7ul7ERwAFhXs78WeKCkWMzMCrVjbIyVA0ffdlcODLBjbKykiBJlJ4JdwO+kvYeeBTwcEd8vOSYzs0JsWbOGnevXMzI4iICRwUF2rl/PljVrSo2r0NlHJX0KeC6wWtIB4M3AcoCI+BCwG9gE7AVmgIuLjMfMrGxb1qwp/cZfr9BEEBEXtHk8gNcVGYOZmbVWdtWQmZmVzInAzKzinAjMzCrOicDMrOKcCMzMKs6JwMys4pwIzMwqzonAzKzinAjMzCrOicDMrOKcCMzMKq6SiaAX1ww1MytLoZPO9aL5NUPnl4ubXzMU6LkZAc3MuqFyJYJeXTPUzKwslUsEvbpmqJlZWSqXCHp1zVAzs7JULhH06pqhZmZlqVwi6NU1Q83MylK5XkPQm2uGmpmVpXIlAjMzO5oTgZlZxTkRmJlVnBOBmVnFORGYmVWcE4GZWcU5EZiZVZwTgZlZxTkRmJlVnBOBmVnFORGYmVVc4YlA0kZJU5L2SrqswePDkm6S9E1Jd0naVHRMZmZ2RKGJQNIy4CrgRcAG4AJJG+pO+0Pghog4HTgf+GCRMZmZ2dGKLhGcBeyNiOmIeAT4NHBu3TkBnJT+/gTggYJjMjOzGkUngpOB+2v2D6THar0FuFDSAWA38HuNXkjShKQ9kvYcOnSoiFjNzCqp6ESgBseibv8C4JqIWAtsAq6TdExcEbEzIsYjYnxoaKiAUM3MqqnjRCBpm6STlPiYpL+T9MI2TzsArKvZX8uxVT+vAm4AiIjbgOOB1Z3GZWZmi5OlRPC7EfFj4IXAEHAx8MdtnnMHcKqkUyStIGkM3lV3zn7gHABJTyNJBK77MTPrkiyJYL6aZxNwdUR8m8ZVP4dFxGPApcCNwL0kvYPulnSlpM3paW8EXi3p28CngFdGRH31kZmZFSTLmsV3SvoycApwuaQTgbl2T4qI3SSNwLXHrqj5/R7g2RniMDOzHGVJBK8C/i0wHREzklaRVA+ZmVkf6zgRRMScpIPABklZEoiZmfWwjm/okv4E+G3gHuAX6eEAbikgLjMz65Is3+xfAqyPiNmigjEzs+7L0mtoGlheVCBmZlaOLCWCGeBbkr4KHC4VRMTrc4/KzMy6Jksi2MWxg8HMzKzPZek1dG06Ovi09NBURDxaTFhmZtYtWXoNPRe4FriPZETxOkkXRYR7DZmZ9bEsVUPvAV4YEVMAkk4jmRLizCICMzOz7sjSa2j5fBIAiIh/wL2IzMz6XpYSwR5JHwOuS/e3AHfmH5KZmXVTlkSwFXgd8HqSNoJb8PrCZmZ9L0uvoVngT9PNzMyWiLaJQNINEfEySd/h2GUmiYhnFBKZmZl1RSclgm3pzxcXGYiZmZWjba+hiPh++uslEbGvdgMuKTY8MzMrWpbuoy9ocOxFeQViZmbl6KSNYCvJN/8xSXfVPHQicGtRgZmZWXd00kbwSeBLwDuAy2qO/2tE/LCQqMzMrGvaJoKIeBh4GLhA0hnAvyfpPXQr4ERgZtbnOm4jkPRHJJPOrQJWA1dL+sOiAjMzs+7IMrL45cDpEfFzAEl/DPwd8PYiAjMzs+7I0mvoPuD4mv1B4Hu5RmNmZl2XpUQwC9wt6SskbQQvAP5W0vvAS1aamfWrLIng8+k27+Z8QzEzszJ4qUozs4rzUpVmZhXnpSrNzCqu8KUqJW2UNCVpr6TLmpzzMkn3SLpb0iczxGRmZotU6FKVkpYBV5H0MDoA3CFpV0TcU3POqcDlwLMj4keSnpzlAszMbHGylAi2AneTLFW5DbgHeG2b55wF7I2I6Yh4BPg0cG7dOa8GroqIHwFExIMZYjIzs0XKbalKSZ+LiN+qO3wycH/N/gHgmXXnnJY+/1ZgGfCWiPibBq8/AUwADA8Pdxq2mZm1kaVE0M5Yg2NqcKx+ucvjgFOB5wIXAB+V9MRjnhSxMyLGI2J8aGhosbGamVkqz0RwzHrGJCWAdTX7a4EHGpzzhYh4NCL+EZgiSQxmTU0ePMjobbcxcPPNjN52G5MHD5YdklnfyjMRNHIHcKqkU9LBaOcDu+rO+SvgeQCSVpNUFU0XHJf1scmDB5mYmmLf7CwB7JudZWJqysnAbIHyTATHVANFxGPApcCNwL3ADRFxt6QrJW1OT7sReEjSPcBNwJsi4qEc47IlZvv0NDNzc0cdm5mbY/u0vz+YLUSWkcVnRsSddcd+MyK+mO7+j0bPi4jdwO66Y1fU/B7AG9LNrK39s7OZjpv1q8mDB9k+Pc3+2VmGBwfZMTbGljVrcn+fLCWCj0j6tfkdSRcAhxemiYgv5xmYWTPDg4OZjpv1o25WgWZJBOcB10p6mqRXkyxo/8LcIzJrY8fYGCsHjv7TXTkwwI6xRh3XzPpTN6tAs4wjmJZ0Pknj7v0k8w79LPeIzNqYLxp3o8hsVpZuVoG2TQSSvsPRXUOfRDLw6xuSiIhn5B6VWRtb1qzxjd+WtOHBQfY1uOkXUQXaSYngxbm/q5mZtbRjbIyJqamjqoeKqgJt20YQEfsiYh/wFOCHNfs/BH4594jMzIwta9awc/16RgYHETAyOMjO9esLKQlnmX30L4AzavZ/2uCYmZnlpFtVoFl6DSnt8w9ARMyRLZGYmVkPypIIpiW9XtLydNuGp4IwM+t7WRLBa4F/B/xTuj2TdFpoMzPrX1nGETxIMmmcmZktIR2XCCStlfR5SQ9KOijpc5LWFhmcmZkVL0vV0NUkU0g/lWTlsS+mx8zMrI9lSQRDEXF1RDyWbtcAXirMzKzPZUkEP5B0oaRl6XYh4HUDzMz6XJZE8LvAy4B/Br5PMhvpxUUEZWZm3ZNlQNi6iNhce0DSs4H9+YZkZmbdlKVE8P4Oj5mZWR/pZBrqs0kGkg1Jql1O8iSS6ajNzKyPdVI1tAI4IT33xJrjPyZpJzAzsz7WNhFExNeBr0u6Jp1+GkkDwAkR8eOiAzQzs2JlaSN4h6STJD0euAeYkvSmguKykkxOwugoDAwkPycny47IzIqWJRFsSEsALwF2A8PAKwqJykoxOQkTE7BvH0QkPycmnAzMlrosiWC5pOUkieALEfEoR69lbH1u+3aYmTn62MxMctzMlq4sieDDwH3A44FbJI2QNBjbErG/yYiQZsfNbGnoOBFExPsi4uSI2JSuVLYfeN7845IuKiJA657h4WzHzWxpyFIiOEokHqs5tC2HeKxEO3bAypVHH1u5MjluZkvXghNBA8rxtawEW7bAzp0wMgJS8nPnzuS4mS1deS4+74bjJWDLFt/4zarGJQIzs4rLMxHc2uigpI2SpiTtlXRZsydLOk9SSBrPMSYzM2ujk0nn3tDq8Yj40/TnpQ2euwy4CngBcAC4Q9KuiLin7rwTgdcD3+g8dDMzy0MnJYIT020c2EqyXvHJwGuBDW2eexawNyKmI+IR4NPAuQ3OexvwTuDnHcZtZmY5aZsIIuKtEfFWYDVwRkS8MSLeCJwJrG3z9JOB+2v2D6THDpN0OsmiN3/d6oUkTUjaI2nPoUOH2oVtZmYdytJGMAw8UrP/CDDa5jmNGpAP9y5KZzH9M+CN7d48InZGxHhEjA8NDbWP1szMOpKl++h1wP+T9HmSm/lLgU+0ec4BYF3N/lrggZr9E4GnAzdLAvhlYJekzRGxJ0NsZma2QB0ngojYIelLwG+khy6OiG+2edodwKmSTgH+CTgfeHnNaz5MUuUEgKSbgT9wEjAz656s3UdXAj+OiPcCB9IbfFPpFBSXAjcC9wI3RMTdkq6UtHlBEZuZWa46LhFIejNJz6H1wNXAcuB64NmtnhcRu0nWL6g9dkWTc5/baTxmZpaPLCWClwKbgZ8CRMQDHL2GsZmZ9aEsieCRdPrpAEiXrDQzsz6XJRHcIOnDwBMlvRr438BHignLzMy6JUuvoXdLegHJqmTrgSsi4iuFRWZmZl2RpbH48cDXIuIrktYD6yUtT9cuNjOzPpWlaugWYFDSySTVQhcD1xQRlJmZdU+WRKCImAH+M/D+iHgp7SedMzOzHpcpEUg6G9gC/K/0WJ4rnJmZWQmyJILfBy4HPp+ODh4DbiomLDMz65YsvYa+Dny9Zn+aZDEZMzPrY52sUPbnEfH7kr5IgwXqI8JzBpmZtTB58CDbp6fZPzvL8OAgO8bG2LJmTdlhHdZJieC69Oe7iwzEzGwpmjx4kImpKWbm5gDYNzvLxNQUQM8kg7aJICLuTH/dA/wsIubg8HrEgwXGZmbW97ZPTx9OAvNm5ubYPj3dM4kgS2PxV0mmoZ73OJLxBGZm1sT+2dlMx8uQJREcHxE/md9Jf1/Z4nwzs8obHmxccdLseBmyJIKfSjpjfkfSmcDP8g/JzGzp2DE2xsqBo2+1KwcG2DE2VlJEx8oyIGwb8FlJ82sOPwX47fxDMjNbOubbAfq91xCSBoAVwK+QzDwq4O894ZyZWXtb1qzpqRt/vY4SQUTMSXpPRJwNfLfgmMzMrIuytBF8WdJvSVJh0ZiVYHISRkdhYCD5OTlZdkRm3ZWljeANwOOBX0j6GUn1UETESYVEZtYFk5MwMQEzM8n+vn3JPsCWLeXFZdZNHZcIIuLEiBiIiOURcVK67yRgfW379iNJYN7MTHLcrCo6TgRKXCjpj9L9dZLOKi40A1dbFG3//mzHzZaiLG0EHwTOBl6e7v8EuCr3iOyw+WqLffsg4ki1RZHJoGqJZ3g423GzpShLInhmRLwO+DlARPyIpEupFaTb1RZlJJ6y7dgBK+vGx69cmRw3q4osieDRdKK5AJA0BMy1footRrerLapYX75lC+zcCSMjICU/d+50Q7FVS5ZE8D7g88CTJe0A/hb4n4VEtUQstpql29UWVa0v37IF7rsP5uaSn04CVjVZeg1NAv8deAfwfeAlEfHZogLrd3lUs3S72sL15WbVlKXX0PMj4u8j4qqI+EBE3CvpoiKD62d5VLN0u9rC9eVm1aSIY1afbHyidAtwN/AHwAnAR4HZiDivuPAaGx8fjz179nT7bTMZGEhKAvWkpAqiV01OJslq//6kJLBjh6tKzJYKSXdGxHj98SxtBM8Bvgd8i6R94JOdJAFJGyVNSdor6bIGj79B0j2S7pL0VUkjGWLqWf1azeL6crPqyZIIfgl4JkkymAVG2s07lPYyugp4EbABuEDShrrTvgmMR8QzgL8E3pkhpp7Vz9UsVRtLYFZ1WRLB7cCXImIj8OvAU4Fb2zznLGBvRExHxCPAp4Fza0+IiJsiYr42/XZgbYaYela/dkus4lgCs6rL0kYwTFI9dEpEXJnuj0bELS2ecx6wMSL+a7r/CpKBaZc2Of8DwD9HxNsbPDYBTAAMDw+fuW/fvo7itmxGR5Obf72RkaSqyMz6Vx5tBJcDzwIuSPf/FXhPu/dtcKxh5pF0ITAOvKvR4xGxMyLGI2J8aGios4gts6qOJTCrsqKnmDgArKvZXws8UH+SpOcD24HNETGbISbLWb82cpvZwhU9xcQdwKmSTpG0Ajgf2FV7gqTTgQ+TJIEHM8RjBejnRm4zW5hCp5iIiMeAS4EbgXuBGyLibklXStqcnvYuknEJn5X0LUm7mrycdUG/NnKb2cJ13FgMIOlXgHNI6v6/GhH3FhVYK/0woKwfePCYWbXk0VhM/RQT+YXXXd3qJ9/L/fHdTdTM5mUqEfSKxZQIJifh4ovh0UePHFu+HK6+Ot9vw/Vr4UJS194r1SzuJmpWPbmUCJaCbduOTgKQ7G/blu/7FDG3f54lDHcTNbN5lUsEDz2U7fhC5X2jzbsqx91EzWxe5RJBt+R9o827hOFuomY2r3KJYNWqbMcXKu8b7WJKGI2qlMrsJtrLjehmVVS5RPDe98KKuvHQK1Ykxxej/uYG+d5oF1rCaFWl1I0pp+s/l0sucW8ls54TEX23nXnmmbEYW7dGLFsWAcnPrVsX9XJx/fURK1cmrze/rVyZHM/LQt9jZOTo58xvIyP5xZYlZqm8eMyqDtgTDe6plew+mne3zm51xVzIALAyV0pr9rk00usrt5ktBc26j1YuERRx0+7lZSnLHC/Q7HNpxOMXzIrncQSpIvrP93JXzDJ7BzW7/vp17dxbyaxclUsERdy0e7krZpm9g5p9Lq99be9PaueeTVYpjRoOen1bTGNxUQ2711+fNHhKyc88G4q7Ke/r6MfPpRuN/2ZlwI3FR3jWzcZ6fX6kbvE8TLZUubHY2vINMNHLjf9mi+HG4hqu/23ME9Elernx36wIlUsEnoe/eSLM8wbYz8m2lxv/zQrRqOGg17fFNBaXOdK2kW43prZqCM2rkbTT1+nlhuRejs1soWjSWFz6TX0h22ISQaMkML/lIcsNpMjeKc3iaJcI87gBNnuPVauOvPaqVRHLl3d+7b4xmy2eE0Fqfo6h+m3ZsgW/5GFZb+xFlU5axdFsrh9pce9Zq9l7dLI1unZ35zTLR7NEULk2gl/8ItvxLLKuGVDE4jWjo3Dhhc3jaNUOkFe9/mIaVRtde6vPtZ/bIsx6RqPs0OvbYkoEq1Y1/ia6atWCX/KwZt9ym33bzrNE0Ohbc6Ot0/MW8637+usjVqzIr0TQqoThkoJZ53CJoFiTk8fOoTOv2TfkTnundPKtt9G35mbmp5xop90KaK3iiugslnqbNh17rNnnt2xZ/utCm1VSo+zQ61svNhY3+3YvtW8wbtUI2mn9eKf18rUln2btJZ2UZlqtNdDsdTuJMUsbQdaYzaoONxbPfxDFJIJWN7nF6LT6qNl5reJZaFVN1verf712CaFR4myUMHutK7BZr2uWCFw1lJNm1RedVMG00mmD8qZNzaummlm2rPXjK1bAT37SuOpnIQ3a81NVzM21/lwaDfBrtKymB36Z5cOJICdF3ZQ6Ge07OQnXXttZvbx05Ma+fn3rcx95BB56KHndffvgFa9I1hwGeNKTOgr/sPrPotHnNW9mBrZta/+aZU6xbbakNCom9PrWi1VDEcUMempWP75165H36qSuP69tvs2jWe+r2m3ZstafxfXXZ68iMrOFw9NQJ1pVn/TqR1E/bfamTUkJoNNeQnkbGUliafV5dTp9dat1jas266lZ0Tz7aB+rrx/fvbu8JADJjXugzV/ORRd1VkXTquqsarOempWl8EQgaaOkKUl7JV3W4PFBSZ9JH/+GpNGiY2omy6jUska0Tk42/wbdTe1GYl97bfvPZL6k00yz9pFWn30VRhpX4RqtyxrVF+W1AcuA7wFjwArg28CGunMuAT6U/n4+8Jl2r1tUG0Gno1LLmvsmy6jgXthadeNsdy3NPs9uzJ7ay6pwjVYcyhhHAJwN3Fizfzlwed05NwJnp78fB/yAdOW0ZltRiaDdzWteWf3XF9p3v6yt1cCuVtfSqqG91WdfhXEFVbhGK06zRHBcwQWOk4H7a/YPAM9sdk5EPCbpYWBVmhAOkzQBTAAMF7hUVCf10mWt5NWrdeYjI42rq1r9MzW7Fql1A/FCPvte/dwWwqvIWRGKbiNo1EcnFnAOEbEzIsYjYnxoaCiX4BrpJMeUtZRhLy6VODCwsDEUC/0MWz2vCktMVuEarfuKTgQHgHU1+2uBB5qdI+k44AnAD4sK6Jxzmj/W6QCwska0thqEVSvrCOPFeM1rFjawa6GfYavnVWGkcRWu0UrQqL4or42kzn8aOIUjjcW/WnfO6zi6sfiGdq+7mDaCiIhzzslWL91IWStm1b7vqlURJ5xw5BpWrTrSaFo74GvFioiBgaOvt36a6A0b2g8SGxw88jrLliWD2vK6liyfYavnVWElsypcoxWDsgaUSdoE/DlJD6KPR8QOSVemAe2SdDxwHXA6SUng/IiYbvWaixlQZmZWVc0GlBXdWExE7AZ21x27oub3nwP/peg4zMysMY8sNjOrOCcCM7OKcyIwM6s4JwIzs4pzIjAzqzgnAjOzinMiMDOruL5coUzSISCPWflXUze53RLn6126qnSt4OtdqJGIOGaytr5MBHmRtKfRKLulyte7dFXpWsHXmzdXDZmZVZwTgZlZxVU9EewsO4Au8/UuXVW6VvD15qrSbQRmZuYSgZlZ5TkRmJlVXCUSgaSNkqYk7ZV0WYPHByV9Jn38G5JGux9lfjq43jdIukfSXZK+KmmkjDjz0O5aa847T1JI6usuh51cr6SXpf++d0v6ZLdjzFMHf8vDkm6S9M3073lTGXHmQdLHJT0o6btNHpek96WfxV2SzsjtzRstW7aUNpKV0b4HjHFkucwNdedcwtHLZX6m7LgLvt7nASvT37f26/V2cq3peScCtwC3A+Nlx13wv+2pwDeBX0r3n1x23AVf705ga/r7BuC+suNexPX+B+AM4LtNHt8EfAkQ8CzgG3m9dxVKBGcBeyNiOiIeAT4NnFt3zrnAtenvfwmcI3VzCfhctb3eiLgpImbS3duBtV2OMS+d/NsCvA14J/DzbgZXgE6u99XAVRHxI4CIeLDLMeapk+sN4KT09ycAD3QxvlxFxC0ky/U2cy7wiUjcDjxR0lPyeO8qJIKTgftr9g+kxxqeExGPAQ8Dq7oSXf46ud5aryL5ltGP2l6rpNOBdRHx190MrCCd/NueBpwm6VZJt0va2LXo8tfJ9b4FuFDSAZIlcX+vO6GVIuv/7Y4VvmZxD2j0zb6+z2wn5/SLjq9F0oXAOPCcQiMqTstrlTQA/Bnwym4FVLBO/m2PI6keei5JSe//SHp6RPxLwbEVoZPrvQC4JiLeI+ls4Lr0eueKD6/rCrtPVaFEcABYV7O/lmOLj4fPkXQcSRGzVRGtl3VyvUh6PrAd2BwRs12KLW/trvVE4OnAzZLuI6lX3dXHDcad/i1/ISIejYh/BKZIEkM/6uR6XwXcABARtwHHk0zQthR19H97IaqQCO4ATpV0iqQVJI3Bu+rO2QVclP5+HvC1SFtn+lDb602rSz5MkgT6uQ655bVGxMMRsToiRiNilKQ9ZHNE7Ckn3EXr5G/5r0g6AyBpNUlV0XRXo8xPJ9e7HzgHQNLTSBLBoa5G2T27gN9Jew89C3g4Ir6fxwsv+aqhiHhM0qXAjSS9ED4eEXdLuhLYExG7gI+RFCn3kpQEzi8v4sXp8HrfBZwAfDZtE98fEZtLC3qBOrzWJaPD670ReKGke4BfAG+KiIfKi3rhOrzeNwIfkfTfSKpJXtmvX+IkfYqkSm912ubxZmA5QER8iKQNZBOwF5gBLs7tvfv0MzMzs5xUoWrIzMxacCIwM6s4JwIzs4pzIjAzqzgnAjOzinMiMFskSddIOq/sOMwWyonArMvS0etmPcN/kGYNSHo8ydQFa0kGM70NWA/8JvA44P8Cr6kfvCTpikbnSLo53X828DVJrwROi4hHJZ0E3AWcGhGPduHyzI7iEoFZYxuBByLi30TE04G/AT4QEb+e7j8OeHGD57U654kR8ZyIeCtwM/Cf0uPnA59zErCyOBGYNfYd4PmS/kTSb0TEw8Dz0hXsvgP8R+BXGzyv1Tmfqfn9oxyZIuBi4Or8L8GsM64aMmsgIv5B0pkkc7u8Q9KXgdeRrHB2v6S3kExwdpik44EPtjjnpzWvf6ukUUnPAZZFRMPlCc26wSUCswYkPRWYiYjrgXeTLCEI8ANJJ5DMUlvv+A7OqfUJ4FO4NGAlc4nArLFfA94laQ54lGRt55eQVBndRzJF8lEi4l8kfaTVOXUmgbeTJAOz0nj2UbOSpGMPzo2IV5Qdi1WbSwRmJZD0fuBFJG0QZqVyicDMrOLcWGxmVnFOBGZmFedEYGZWcU4EZmYV50RgZlZx/x9dwDufwjNeGAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.preprocessing import MinMaxScaler\n", "f1_scaler = MinMaxScaler()\n", "f2_scaler = MinMaxScaler()\n", "feature1_list = []\n", "feature2_list = []\n", "for v in data_dict.keys():\n", " if data_dict[v][feature_1] != \"NaN\" and data_dict[v][feature_2] != \"NaN\":\n", " feature1_list.append([data_dict[v][feature_1]])\n", " feature2_list.append([data_dict[v][feature_2]])\n", "\n", "\n", "feature1_list = f1_scaler.fit_transform(feature1_list)\n", "feature2_list = f2_scaler.fit_transform(feature2_list)\n", "new_finance_feature = []\n", "for feature in range(0,len(feature1_list)):\n", " temp = [feature1_list[feature],feature2_list[feature]]\n", " new_finance_feature.append(temp)\n", "#print(new_finance_feature)\n", "\n", "clst = KMeans(n_clusters=2,n_init=100,max_iter=100)\n", "clst.fit(finance_features)\n", "pred = clst.predict(finance_features)\n", "\n", "\n", "\n", "\n", "### rename the \"name\" parameter when you change the number of features\n", "### so that the figure gets saved to a different file\n", "try:\n", " Draw(pred, finance_features, poi, mark_poi=False, name=\"clusters_scaled.png\", f1_name=feature_1, f2_name=feature_2)\n", "except NameError:\n", " print (\"no predictions object named pred found, no clusters to plot\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.17962407]]\n", "[[0.00531945]]\n", "[[0.028622]]\n" ] } ], "source": [ "# 测试两个值在缩放后的输出\n", "print(f1_scaler.transform([[200000.0]]))\n", "print(f2_scaler.transform([[200000]]))\n", "print(f2_scaler.transform([[1000000.0]]))" ] }, { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }