{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"seeds_df = pd.read_csv(\"https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" area | \n",
" perimeter | \n",
" compactness | \n",
" length | \n",
" width | \n",
" asymmetry_coefficient | \n",
" groove_length | \n",
" grain_variety | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 14.88 | \n",
" 14.57 | \n",
" 0.8811 | \n",
" 5.554 | \n",
" 3.333 | \n",
" 1.018 | \n",
" 4.956 | \n",
" Kama wheat | \n",
"
\n",
" \n",
" 1 | \n",
" 14.69 | \n",
" 14.49 | \n",
" 0.8799 | \n",
" 5.563 | \n",
" 3.259 | \n",
" 3.586 | \n",
" 5.219 | \n",
" Kama wheat | \n",
"
\n",
" \n",
" 2 | \n",
" 14.03 | \n",
" 14.16 | \n",
" 0.8796 | \n",
" 5.438 | \n",
" 3.201 | \n",
" 1.717 | \n",
" 5.001 | \n",
" Kama wheat | \n",
"
\n",
" \n",
" 3 | \n",
" 13.99 | \n",
" 13.83 | \n",
" 0.9183 | \n",
" 5.119 | \n",
" 3.383 | \n",
" 5.234 | \n",
" 4.781 | \n",
" Kama wheat | \n",
"
\n",
" \n",
" 4 | \n",
" 14.11 | \n",
" 14.26 | \n",
" 0.8722 | \n",
" 5.520 | \n",
" 3.168 | \n",
" 2.688 | \n",
" 5.219 | \n",
" Kama wheat | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" area perimeter compactness length width asymmetry_coefficient \\\n",
"0 14.88 14.57 0.8811 5.554 3.333 1.018 \n",
"1 14.69 14.49 0.8799 5.563 3.259 3.586 \n",
"2 14.03 14.16 0.8796 5.438 3.201 1.717 \n",
"3 13.99 13.83 0.9183 5.119 3.383 5.234 \n",
"4 14.11 14.26 0.8722 5.520 3.168 2.688 \n",
"\n",
" groove_length grain_variety \n",
"0 4.956 Kama wheat \n",
"1 5.219 Kama wheat \n",
"2 5.001 Kama wheat \n",
"3 4.781 Kama wheat \n",
"4 5.219 Kama wheat "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"seeds_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Rosa wheat 14\n",
"Kama wheat 14\n",
"Canadian wheat 14\n",
"Name: grain_variety, dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"seeds_df.grain_variety.value_counts() # grain_variety是标签,分成了3个类别"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"varieties = list(seeds_df.pop('grain_variety')) # 先去掉它,不然就是有监督了\n",
"\n",
"samples = seeds_df.values"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[14.88 , 14.57 , 0.8811, 5.554 , 3.333 , 1.018 , 4.956 ],\n",
" [14.69 , 14.49 , 0.8799, 5.563 , 3.259 , 3.586 , 5.219 ],\n",
" [14.03 , 14.16 , 0.8796, 5.438 , 3.201 , 1.717 , 5.001 ],\n",
" [13.99 , 13.83 , 0.9183, 5.119 , 3.383 , 5.234 , 4.781 ],\n",
" [14.11 , 14.26 , 0.8722, 5.52 , 3.168 , 2.688 , 5.219 ],\n",
" [13.02 , 13.76 , 0.8641, 5.395 , 3.026 , 3.373 , 4.825 ],\n",
" [15.49 , 14.94 , 0.8724, 5.757 , 3.371 , 3.412 , 5.228 ],\n",
" [16.2 , 15.27 , 0.8734, 5.826 , 3.464 , 2.823 , 5.527 ],\n",
" [13.5 , 13.85 , 0.8852, 5.351 , 3.158 , 2.249 , 5.176 ],\n",
" [15.36 , 14.76 , 0.8861, 5.701 , 3.393 , 1.367 , 5.132 ],\n",
" [15.78 , 14.91 , 0.8923, 5.674 , 3.434 , 5.593 , 5.136 ],\n",
" [14.46 , 14.35 , 0.8818, 5.388 , 3.377 , 2.802 , 5.044 ],\n",
" [11.23 , 12.63 , 0.884 , 4.902 , 2.879 , 2.269 , 4.703 ],\n",
" [14.34 , 14.37 , 0.8726, 5.63 , 3.19 , 1.313 , 5.15 ],\n",
" [16.84 , 15.67 , 0.8623, 5.998 , 3.484 , 4.675 , 5.877 ],\n",
" [17.32 , 15.91 , 0.8599, 6.064 , 3.403 , 3.824 , 5.922 ],\n",
" [18.72 , 16.19 , 0.8977, 6.006 , 3.857 , 5.324 , 5.879 ],\n",
" [18.88 , 16.26 , 0.8969, 6.084 , 3.764 , 1.649 , 6.109 ],\n",
" [18.76 , 16.2 , 0.8984, 6.172 , 3.796 , 3.12 , 6.053 ],\n",
" [19.31 , 16.59 , 0.8815, 6.341 , 3.81 , 3.477 , 6.238 ],\n",
" [17.99 , 15.86 , 0.8992, 5.89 , 3.694 , 2.068 , 5.837 ],\n",
" [18.85 , 16.17 , 0.9056, 6.152 , 3.806 , 2.843 , 6.2 ],\n",
" [19.38 , 16.72 , 0.8716, 6.303 , 3.791 , 3.678 , 5.965 ],\n",
" [18.96 , 16.2 , 0.9077, 6.051 , 3.897 , 4.334 , 5.75 ],\n",
" [18.14 , 16.12 , 0.8772, 6.059 , 3.563 , 3.619 , 6.011 ],\n",
" [18.65 , 16.41 , 0.8698, 6.285 , 3.594 , 4.391 , 6.102 ],\n",
" [18.94 , 16.32 , 0.8942, 6.144 , 3.825 , 2.908 , 5.949 ],\n",
" [17.36 , 15.76 , 0.8785, 6.145 , 3.574 , 3.526 , 5.971 ],\n",
" [13.32 , 13.94 , 0.8613, 5.541 , 3.073 , 7.035 , 5.44 ],\n",
" [11.43 , 13.13 , 0.8335, 5.176 , 2.719 , 2.221 , 5.132 ],\n",
" [12.01 , 13.52 , 0.8249, 5.405 , 2.776 , 6.992 , 5.27 ],\n",
" [11.34 , 12.87 , 0.8596, 5.053 , 2.849 , 3.347 , 5.003 ],\n",
" [12.02 , 13.33 , 0.8503, 5.35 , 2.81 , 4.271 , 5.308 ],\n",
" [12.44 , 13.59 , 0.8462, 5.319 , 2.897 , 4.924 , 5.27 ],\n",
" [11.55 , 13.1 , 0.8455, 5.167 , 2.845 , 6.715 , 4.956 ],\n",
" [11.26 , 13.01 , 0.8355, 5.186 , 2.71 , 5.335 , 5.092 ],\n",
" [12.46 , 13.41 , 0.8706, 5.236 , 3.017 , 4.987 , 5.147 ],\n",
" [11.81 , 13.45 , 0.8198, 5.413 , 2.716 , 4.898 , 5.352 ],\n",
" [11.27 , 12.86 , 0.8563, 5.091 , 2.804 , 3.985 , 5.001 ],\n",
" [12.79 , 13.53 , 0.8786, 5.224 , 3.054 , 5.483 , 4.958 ],\n",
" [12.67 , 13.32 , 0.8977, 4.984 , 3.135 , 2.3 , 4.745 ],\n",
" [11.23 , 12.88 , 0.8511, 5.14 , 2.795 , 4.325 , 5.003 ]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"samples"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# 距离计算\n",
"from scipy.cluster.hierarchy import linkage, dendrogram\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# 层次聚类\n",
"mergings = linkage(samples, method='complete')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAGMCAYAAAAV9pyMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAb3ElEQVR4nO3df4xn610X8PfTe7mxZWgpdLnrbbEFwYYfhe+lGxT54cZKAkIAIyFlUmwNZogRbKuJVpSQaNDiDwTkRzICFpQBEiQKxqBGnRQU0L3d0Ut75Uf4ZdneZQUBF1Ba+vjHzNy7d+/u3e9zzvf7nPM9+3olm9ndmc/3+Tzfme+Z9zznzHNKrTUAAKzveVM3AACwawQoAIBGAhQAQCMBCgCgkQAFANBIgAIAaPTgvT6glPIdST43ya/UWj/+7P8+JMn3JXlFkl9I8kW11v99r8d6yUteUl/xileMaBcAoI/HHnvsf9VaL9zpfeVe+0CVUj4jyc0k33VLgPq7SX6t1vrWUspbkry41vpX79XIpUuX6pUrV5onAADQWynlsVrrpTu9756n8Gqtb0/ya7f99+cn+c6zv39nki8Y1SEAwA4Zeg3Uw7XW9yTJ2dsPu9sHllIOSilXSilXbty4MXA4AID52PpF5LXWw1rrpVrrpQsX7ngaEQBgpwwNUNdLKb8/Sc7e/srmWgIAmLehAeoHk7z+7O+vT/IvN9MOAMD83TNAlVK+J8mPJXllKeXdpZQvTfLWJJ9ZSvmZJJ959m8AgPvCPfeBqrV+8V3e9ZoN9wIAsBPsRA4A0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEb33MYAbnV4mBwdTd0FsMv295ODg6m7gHGsQNHk6Cg5OZm6C2BXnZz4IYxlsAJFs9UqOT6eugtgF12+PHUHsBlWoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoNCpAlVLeXEp5ZynlJ0sp31NK+X2bagwAYK4GB6hSykuT/MUkl2qtH5/kgSSv3VRjAABzNfYU3oNJnl9KeTDJC5JcG98SAMC8DQ5QtdZfTvL3k/xSkvck+Y1a67+9/eNKKQellCullCs3btwY3ikAwEyMOYX34iSfn+QjkjyS5ANLKa+7/eNqrYe11ku11ksXLlwY3ikAwEyMOYX3J5L8fK31Rq31vUl+IMkf3UxbAADzNSZA/VKSP1JKeUEppSR5TZInNtMWAMB8jbkG6ieSfH+SdyR5/OyxDjfUFwDAbD04prjW+tVJvnpDvQAA7AQ7kQMANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANHpw6gYAdtXhYXJ0NHUXu+Xk5PTt5cuTtrFz9veTg4Opu+BWVqAABjo6ejoQsJ7V6vQP6zs5EdTnyAoUwAirVXJ8PHUXLJnVunmyAgUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQaFaBKKR9cSvn+Usr/KKU8UUr5lE01BgAwVw+OrP+GJD9ca/3CUspDSV6wgZ4AAGZtcIAqpbwwyWckeUOS1Fp/N8nvbqYtAID5GnMK7yOT3EjyT0opV0sp31ZK+cAN9QUAMFtjAtSDST4pybfWWh9N8ltJ3nL7B5VSDkopV0opV27cuDFiOACAeRgToN6d5N211p84+/f35zRQPUOt9bDWeqnWeunChQsjhgMAmIfBAarW+mSS/1lKeeXZf70mybs20hUAwIyN/S28r0jy3We/gfdzSf7s+JYAAOZtVICqtZ4kubShXgAAdoKdyAEAGglQAACNBCgAgEYCFABAIwEKAKCRAAUA0EiAAgBoJEABADQSoAAAGglQAACNBCgAgEZjbyZMo8PHDnP0+NHUbQx28uTXJ0kuv+1NE3cy3P6r9nPw6oOp2wBghwlQnR09fpSTJ0+yuriaupVBVm/Z3eCUJCdPniSJAAXAKALUBFYXVzl+w/HUbdyXLr/t8tQtALAAroECAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAECjB6duAACmdnjtWo6uX5+6jTs6uflRSZLLV3924k7ubP/hh3PwyCNTt9GdAAXAfe/o+vWc3LyZ1d7e1K08y+ofzzM4JcnJzZtJIkABwP1qtbeX40cfnbqNnXL56tWpW5iMa6AAABoJUAAAjQQoAIBGAhQAQCMBCgCgkQAFANBIgAIAaCRAAQA0EqAAABoJUAAAjQQoAIBGAhQAQCMBCgCgkQAFANBIgAIAaCRAAQA0EqAAABqNDlCllAdKKVdLKf9qEw0BAMzdJlag3pjkiQ08DgDAThgVoEopL0vyOUm+bTPtAADM39gVqK9P8leSvP9uH1BKOSilXCmlXLlx48bI4QAApjc4QJVSPjfJr9RaH3uuj6u1HtZaL9VaL124cGHocAAAszFmBepTk3xeKeUXknxvkj9eSvlnG+kKAGDGBgeoWutfq7W+rNb6iiSvTfIfaq2v21hnAAAzZR8oAIBGD27iQWqtx0mON/FYAABzZwUKAKCRAAUA0Ggjp/AABjs8TI6Opu5imJOvP317+U3T9jHE/n5ycDB1F7CzBChgWkdHyclJslpN3Umz49UOBqfk9PlOBCgYQYACprdaJcfHU3dx/7h8eeoOYOe5BgoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANHIzYWbh8LHDHD1+tPVxTp48vQv95bdd3uo4+6/az8Gr3ekeYKmsQDELR48fPRVutml1cZXVxdVWxzh58qRLGARgOlagmI3VxVWO33A8dRujbXt1C4DpWYECAGh0365A9brm5na9rsG5E9flAMBm3LcrUL2uubldj2tw7sR1OQCwOfftClSynGtu1uG6HADYnPt2BQoAYCgBCgCgkQAFANBIgAIAaCRAAQA0EqAAABoJUAAAjQQoAIBGAhQAQKP7eidyANhlh9eu5ej69cnGP7l5M0ly+erVyXrYf/jhHDzySPdxrUABwI46un79qRAzhdXeXlZ7e5ONf3Lz5mQB0goUAOyw1d5ejh99dOo2JjHlypcVKACARgIUAEAjAQoAoJEABQDQSIACAGgkQAEANBKgAAAaCVAAAI0EKACARgIUAEAjAQoAoJF74QHMzeFhcnS0vcc/OTl9e/ny9sbY308ODrb3+DAxAQpY3za+sW/rm/kufwM/Ojp9Xlar7Tz+th733PnndFeff1iDAAWsbxvf2LfxzXwJ38BXq+T4eOouhtnmyhbMhAAFtNmFb+y+gQNbJkABcF84vHYtR9ev3/F9JzdvJkkuX716x/fvP/xwDh55ZGu9sXv8Fh4A94Wj69efCkq3W+3tZbW3d8f3ndy8edfgxf3LChTcxeFjhzl6vP2C6ZMnT6+/ufy2y4PG3X/Vfg5evcPX7sCMrfb2cvzoo001d1uV4v5mBQru4ujxo6fCUIvVxVVWF4ddGH3y5Mmg0AZAX1agdty6qyQtqyJWQJ62urjK8RuOu403dNUKgL4Gr0CVUj68lPIfSylPlFLeWUp54yYbYz3rrpKsuypiBQQA7m3MCtT7kvzlWus7SikflOSxUsq/q7W+a0O9saZNrpJYAQGAexu8AlVrfU+t9R1nf/8/SZ5I8tJNNQYAMFcbuYi8lPKKJI8m+Yk7vO+glHKllHLlxo0bmxgOAGBSoy8iL6XsJfnnSd5Ua/3N299faz1Mcpgkly5dqmPHAwCW7bk2Pb3VvTZAvdWmN0MdFaBKKR+Q0/D03bXWH9hMSwCwXOuGg3W0BIh1zWHX9fNNT++2uem5e73/3PnzNIsAVUopSb49yRO11q/bWEcAsGDrhoN1bOIxbrWNoDHUkE1P72Ybm6GOWYH61CRfkuTxUsr579F/Za31X49vCwCWa5PhYJPsur6+wQGq1vqjScoGewEA2Alu5QIA0MitXID5OzxMjhp2yD85u6rg8uX1Pn5/Pzlw+yJgfVaggPk7Ono6FK1jtTr9s46Tk7ZwBhArUMCuWK2S4+PNP+66q1QAt9iZAHX42OFGb3J7fgPeTd77bf9V+zl4tdMAALB0O3MK7+jxo6dCzyasLq6yurjmEv8aTp482WjAAwDma2dWoJLT0HP8huOp27ijTa5kAQDztjMrUAAAc7FTK1AAwHqG3HNvzL315nAPvZ6sQAHAAp3fc6/Fam9v0P31Tm7e3NgNkneFFSgAWKhe99y7H++hZwUKAKCRAAUA0MgpvHtYdwPPlo05bbgJALvNCtQ9rLuB57obc9pwEwB2nxWoNWxyA08bbgLA7hOg2CqnQAFYIqfw2CqnQAFYIitQbJ1ToAAsjRUoAIBGVqAAOHV4mBxt4BT5ydlp+8uXxz/W/n5y4JpH5keAYnae68Lze11s7gJzdsZzhZV7BZBthYqjo9OxV/e+HvE5ja0/d/48CFDMkADF7JxfeH6ni8qf60Lz83AlQLETniusPFcA2XaoWK2S4+PtPHarTaxgwZYIUMzSkAvPXWA+wrqnblpOzTj1cm9DwopQAbPgInLg6dWQe1mt1js9c3KymWtpAGbKChR0sBMbim7y1I1VEmDhBCjo4Lmu67rVOpuJJq73Arjd4bVrObp+/Y7vO7l5M0ly+erVZ71v/+GHc/DII83jCVDQiQ1FAbbn6Pr1nNy8mdXe3rPed6f/S54OVgIUAHDfWu3t5fjRR9f++DutSK1LgAKWyW8WAlvkt/CAZfKbhcAWWYEClstvFgJbIkDdh9wqBQDGmTxA7cT+OAvjVilPGxomfY0B3N8mD1D2x5mGW6WcGhImfY0BMHmASpa5P87dVjacIpuf1q+/uXyNATCdWQSoJbrbysb9dooM4H7Ue1ds+hOgtsjKBot3t72W7rW3kv2UWLjeu2LTnwAFDHe+19Lt+yg9175K5+FKgGLheu6K3YNVtWcSoIBxWvdasp8S7CSras8kQAEAa1naqtoYbuUCANDIChQA7Kih1yUly702qRcrUACwo86vS7qT1d7ec16bdLfgxXqsQAHADmu9LilZ9rVJvQhQALeyt1V/nnN2kAAFM+aWQBOwt1V/nnN2kAAFM+aWQBNZ2t5Wd1vhud2tKz7veU/yXNfI3C3cDF0VWtpzzuIJUDBzbgnEaHdb4bndre+/fj25eTO5y0XId2RViPvIzgYopzYAGgxd4bEqBHe0s9sYnJ/auN3q4uqupzdOnjy5Y+gCAGixsytQiVMbAMA0dnYFCgBgKgIUAEAjAQoAoNGoAFVK+axSyk+VUn62lPKWTTUFADBngwNUKeWBJN+c5LOTfGySLy6lfOymGgMAmKsxK1CfnORna60/V2v93STfm+TzN9MWAMB8lVrrsMJSvjDJZ9Va/9zZv78kyR+utX75bR93kOR858pXJvmp4e0CAHTz8lrrhTu9Y8w+UOUO//esNFZrPUxyOGIcAIBZGXMK791JPvyWf78sybVx7QAAzN+YAPVfk3x0KeUjSikPJXltkh/cTFsAAPM1+BRerfV9pZQvT/JvkjyQ5Dtqre/cWGcAADM1+CJyAID7lZ3IAQAaCVAAAI0EKACARpMGqFLKC8/evmibNT3HMqfd6G+Jcxox1p88e/un5lajv/41C+5via9d/Q2sGVN3brIAddb4/tnbL9tWTc+xzGk3+lvinEaM9Q+TvLGU8nVJPn1ONfrrX7Pg/pb42tXfwJoxdbcasxP5WG9O8tFJPizr395lSE3PscxpN/pb4pwG1dVa31xKeSSnP0yt9QNVrxr99a9Zan9Z4GtXf6NqxtQ9ZdJtDEopn5LkNUmeV2v9m9uq6TmWOe1Gf0uc04ixvjXJXk6PB6+bU43++tcsuL8lvnb1N7BmTN25KVegkuQLkvx8kvdvuabnWObUfyxzGlf3ziTvTfIbM6zpOdYS+1vinIbWLfG1q7/hNWPqkkwfoK4leX6SF265pudY5tR/LHMaV/f2nP40/4kzrOk51hL7W+KchtYt8bWrv+E1Y+qSTHwKL0lKKR+U5ENrrb+wzZqeY5nTbvS3xDkNqSunv8n00iRXa63/aU41+utfs9T+zuoW9drV37iaMXXJxCtQpZSvOevhp5N8+7Zqeo5lTrvR3xLnNKLuY5K8O8knJFn3m1GvGv31r1lkf0t87epveM2YunNTn8L7tSQ3knzIlmt6jmVO/ccyp3F1L0nywUkemmFNz7GW2N8S5zS0bomvXf0NrxlTl2T6ncifl+RL0vYiGFLTcyxz6j+WOY2r+5okP57kb82wpudYS+xviXMaWrfE167+hteMqUsy/TYGDyR55KyPX9pWTc+xzGk3+lvinEaM9ZYkF5O8v9b6l+ZUo7/+NQvub4mvXf0NrBlTd27qU3hvS/JYTn+F8Bu3WNNzrF41+utfs9T+3ldrfVPDGD1reo61xP6WOKehdW/L8l67+hteM6YuyfQB6r/UWv9Rh5qeY5lT/7HMaWBdOb0txieVUl6e5L3r/DTfq0Z//WuW2t+ZRb12O9f0HGvuc3rKZKfwzl4EDyX5vZz+NLHuC66ppudY5rQb/S1xTiPrPqLW+vPrfGzvmp5jLbG/Jc5pSN0SX7v6G14zpu4ZjzFVgEqSUspXJvn3OU2BazUypKbnWOa0G/0tcU4jxvrSJH8wSa21/vU51eivf82C+1via1d/A2vG1J2b+rfwviHJ5yR515Zreo5lTv3HMqdxdQ8nuZnT22PMrabnWEvsb4lzGlq3xNeu/obXjKlLMn2A+pEkv5627fiH1PQcy5z6j2VO4+p+Ocn7krx8hjU9x1pif0uc09C6Jb529Te8ZkxdkukD1KcneXGSd2y5pudY5tR/LHMaV/dRSS4k+dUZ1vQca4n9LXFOQ+uW+NrV3/CaMXWnaq2T/Uny1pzeDfmDtlnTcyxz2o3+ljinEWM91DJGzxr9mdMGx1ria1d/ned065/JbyYMALBrpt4HCphYKeWFSV6V5IFa69vnVKO//jVL7Q82bdIAVUp5fZJVTn8Vdd29G5preo5lTs+o+9NJPiPJ82qtX7HFmiFzah5nxFiz/ppI8veS/HaSkmTdb0a9avTXv2aR/XU8Hg09tuivY82YunNTr0C9sNb65g41Pccyp6d9XE4vznvflmuG9DdknKFjzf1r4vGzt789w5qeYy2xvyXOaWhdr+PR0GOL/vrWjKlLMn2A+mOllA/I6S6g696HZkhNz7HM6WnXkrwoycuSfPcWa4b0N2ScoWPN/Wvih5K8IMnHNIzTq6bnWEvsb4lzGlrX63g09Niiv741Y+qSTL8T+cuT1CSp6991ubmm51jm9KzakuT5tda1f1JsrRnx/A3pbdbP+cCxPjunB5GPr7X+jTnV6K9/zVL7O6vb+vFoaI3++teMqUumX4F6XZJPSPJAki/cYk3PsczpTCnlG3N6l+v3J1n32p/mmiH9DRxn0Fgda4bWfXSSD8jp5oTr6lXTc6wl9rfEOQ2q63U8Gnps0V/fmjF156YOUL+V5IeT/N8t1/Qcy5ye9tO11m/qUDOkvyHjDB1r7l8T703yY0k+ZIY1PcdaYn9LnNPQul7Ho6HHFv31rRlTl2T6nch/KsnvJHnllmt6jmVOT3u0lPLNpZSv23LNkP6GjDN0rLl/TTyR05WrltDVq6bnWEvsb4lzGlrX63g09Niiv741Y+pO1QG7b27iT04v2vqEnN6D5hO3VdNzLHN6Vu2bB3xdNNWMeP6G9Dbr53xE3VcleSjJV82tRn/mtMGxtn48Glqjv92Z061/pjyF9+E5PY997r9tqabnWOb0TK8ppXxkkvfW9fckaq0Z2t+Q3ub+nA+te3GSTzt7u65eNT3HWmJ/S5zT0Loex6OhNfrrXzOmLsm010B9ck5/W6icvd1WTc+xzOmZPi/JI2k7VdxaM7S/Ib3N/TkfWve1Od1M7q0zrOk51hL7W+Kchtb1OB4Nrek51hL76zmnp0x5DdS/yOlPDz+S5PlbrOk5ljk90zcl+TtJ/vYWa4b2N6S3uT/nzXWllE9K8uok70zyD+ZUo7/+NUvt70yP49HQmp5jLbG/nnN6ymQrULXWXyylfGCSX123jyE1Pccyp2d5V05/W+Y3t1Uzor/m3ub+nA+s+7Ik35bTW2P8mZnV6K9/zVL7Szocj0bU9Bxrif31nNNTpv4tvH+a5IuS/OCWa3qOZU5Pe3tOb7nwwVuuGdLfkHGGjjXnr4lfT/L/klxN8tKZ1eivf81S+0v6HY+GHlv017dmTF2S6QPUH8rpha8HW67pOZY5JSmlvLbW+t9rrf85yYduq2ZIfyPGaR6rc82QuncleTTJz+T0JsRzqtFf/5pF9tfreDT02KK/vjVj6m419UaaH5fkSpLf23JNz7HM6dSLSimfltMD3JUt1gzpb+g4Q8bqWdNcV2v9zsbH71bTc6wl9rfEOY2o63U8Gnps0V/fmjF1T5l6BepaTpfOPnHLNT3HMqdTP57kjUn+wFn9tmqG9Dd0nCFj9awZUwdL1ut4NPTYor++NWPqnjLpzYST+d80cM41c+6vlPL6W/5Za63ftY2aIf2NGad1rN41Y+pgqXodj4YeW/TXt2ZM3TMeY8oAVUr55pxeDJh1N7EaUtNzLHPqr2d/c3/O5/65AliKqa+B+tFa6/d0qOk5ljn117O/uT/nc/9cASzC1CtQ35fkepL3Nfxk3lzTcyxz6q9nf3N/zuf+uQJYiqkD1IuSvCrJ82qtb99WTc+xzKm/nv3N/Tmf++cKYCmmPoX3tUl+J6f37lr3YD+kpudY5tRfz/7m/pzP/XMFsAhTB6ifPHvb8ttCQ2p6jmVO/fXsb+7P+dw/VwCLMHWA+qEkL0jyMVuu6TmWOfXXs7+5P+dz/1wBLMJkG2mWUv58rfUXa61PJHl4WzU9xzKn/nr2N/fnfO6fK4AlmXIn8ofu8vdN1/Qcy5z669nf3J/zuX+uABZjylN4LymlvOD871us6TmWOfXXs7+5P+dz/1wBLMZk2xiUUi4m+Qtn//yWWut7tlHTcyxz6q9nf3N/zuf+uQJYksnvhQcAsGumvAYKAGAnCVAAAI0EKACARgIUAECj/w/nIwc/tXgBWQAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 树状图结果\n",
"fig = plt.figure(figsize=(10,6))\n",
"dendrogram(mergings,\n",
" labels=varieties, # 指定标签,x轴\n",
" leaf_rotation=90,\n",
" leaf_font_size=6,\n",
" )\n",
"plt.show() # 从上往下看"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" varieties | \n",
" Canadian wheat | \n",
" Kama wheat | \n",
" Rosa wheat | \n",
"
\n",
" \n",
" labels | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 14 | \n",
" 3 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 14 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" 11 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"varieties Canadian wheat Kama wheat Rosa wheat\n",
"labels \n",
"1 14 3 0\n",
"2 0 0 14\n",
"3 0 11 0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 得到标签结果\n",
"from scipy.cluster.hierarchy import fcluster\n",
"#指定结果、高度等,指定在6那里,可以看到上图是分成3类\n",
"labels = fcluster(mergings, 6, criterion='distance') \n",
"\n",
"df = pd.DataFrame({'labels':labels, 'varieties':varieties})\n",
"ct = pd.crosstab(df['labels'], df['varieties'])\n",
"ct # 可以看到只有label 1的结果里面,多分了3个Kama wheat,其它都能分的清"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 不同距离的选择产生不同的结果\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"# 获取数据,并补0\n",
"df = pd.read_csv('https://s3.amazonaws.com/assets.datacamp.com/production/course_2072/datasets/eurovision-2016.csv').fillna(0)\n",
"\n",
"# 打分满分12\n",
"scores = pd.crosstab(index=df['From country'], columns=df['To country'], values=df['Televote Points'], aggfunc='first').fillna(12)\n",
"samples = scores.values\n",
"country_names = list(scores.index)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"# 归一化,因为数据可能某些很大,可以看到Points的值小,\n",
"# 越大的值,在计算种贡献越多,算法会认为值越大,越重要\n",
"\n",
"from sklearn.preprocessing import normalize\n",
"samples = normalize(samples) # 数据压缩到0-1之间"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.09449112, 0.56694671, 0. , ..., 0. , 0.28347335,\n",
" 0. ],\n",
" [0.49319696, 0. , 0.16439899, ..., 0. , 0.41099747,\n",
" 0. ],\n",
" [0. , 0.49319696, 0.12329924, ..., 0. , 0.32879797,\n",
" 0.16439899],\n",
" ...,\n",
" [0.32879797, 0.20549873, 0.24659848, ..., 0.49319696, 0.28769823,\n",
" 0. ],\n",
" [0.28769823, 0.16439899, 0. , ..., 0. , 0.49319696,\n",
" 0. ],\n",
" [0. , 0.24659848, 0. , ..., 0. , 0.20549873,\n",
" 0.49319696]])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"samples"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"