{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "

Методы машинного обучения

\n", "

Кластеризация

" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrey.shestakov/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88\n", " return f(*args, **kwds)\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.figsize'] = (12,8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Применение K-means" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Загрузите [данные](https://github.com/brenden17/sklearnlab/blob/master/facebook/snsdata.csv) в которых содержится описание интересов профилей учеников старшей школы США." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "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", " \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", "
gradyeargenderagefriendsbasketballfootballsoccersoftballvolleyballswimming...blondemallshoppingclotheshollisterabercrombiediedeathdrunkdrugs
02006M18.9827000000...0000000000
12006F18.8010010000...0100000000
22006M18.33569010000...0000000100
32006F18.8750000000...0000000000
42006NaN18.99510000000...0020000011
\n", "

5 rows × 40 columns

\n", "
" ], "text/plain": [ " gradyear gender age friends basketball football soccer softball \\\n", "0 2006 M 18.982 7 0 0 0 0 \n", "1 2006 F 18.801 0 0 1 0 0 \n", "2 2006 M 18.335 69 0 1 0 0 \n", "3 2006 F 18.875 0 0 0 0 0 \n", "4 2006 NaN 18.995 10 0 0 0 0 \n", "\n", " volleyball swimming ... blonde mall shopping clothes hollister \\\n", "0 0 0 ... 0 0 0 0 0 \n", "1 0 0 ... 0 1 0 0 0 \n", "2 0 0 ... 0 0 0 0 0 \n", "3 0 0 ... 0 0 0 0 0 \n", "4 0 0 ... 0 0 2 0 0 \n", "\n", " abercrombie die death drunk drugs \n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 1 0 0 \n", "3 0 0 0 0 0 \n", "4 0 0 0 1 1 \n", "\n", "[5 rows x 40 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_sns = pd.read_csv('data/snsdata.csv', sep=',')\n", "df_sns.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Данные устроены так: \n", "* Год выпуска\n", "* Пол\n", "* Возраст\n", "* Количество друзей\n", "* 36 ключевых слов, которые встречаются в профилe facebook (интересы, сообщества, встречи)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['basketball', 'football', 'soccer', 'softball', 'volleyball',\n", " 'swimming', 'cheerleading', 'baseball', 'tennis', 'sports', 'cute',\n", " 'sex', 'sexy', 'hot', 'kissed', 'dance', 'band', 'marching',\n", " 'music', 'rock', 'god', 'church', 'jesus', 'bible', 'hair',\n", " 'dress', 'blonde', 'mall', 'shopping', 'clothes', 'hollister',\n", " 'abercrombie', 'die', 'death', 'drunk', 'drugs'], dtype=object)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_sns.columns[4:].values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Задание\n", "\n", "* Удалите все признаки кроме 36 ключевых слов.\n", "* Нормализуйте данные - из каждого столбца вычтите его среднее значение и поделите на стандартное отклонение.\n", "* Используйте метод k-means чтобы выделить 9 кластеров\n", "* Попробуйте проинтерпретировать каждый кластер проанализировав полученные центройды (Некоторые кластеры могут быть очень большие и очень маленькие - плохо интерпретируются)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from sklearn.cluster import KMeans\n", "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "X = df_sns.iloc[:, 4:].values" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrey.shestakov/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py:590: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n", " warnings.warn(msg, DataConversionWarning)\n", "/Users/andrey.shestakov/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py:590: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n", " warnings.warn(msg, DataConversionWarning)\n" ] } ], "source": [ "# нормализуем данные\n", "scaler = StandardScaler()\n", "X_ = scaler.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", " n_clusters=9, n_init=10, n_jobs=None, precompute_distances='auto',\n", " random_state=123, tol=0.0001, verbose=0)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#применим к-средних с к=9\n", "kmeans = KMeans(n_clusters=9, random_state=123)\n", "kmeans.fit(X_)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "labels = kmeans.labels_ # метки кластеров для объектов из Х" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "centroids = kmeans.cluster_centers_ # координаты центройдов\n", "criterion = kmeans.inertia_ # значения критерия для разбиения" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "861745.6454158238" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "criterion" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9, 36)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "centroids.shape" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "df_sns.loc[:, 'cluster_label'] = labels" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "4 20024\n", "0 5036\n", "1 1337\n", "6 846\n", "8 841\n", "2 752\n", "3 697\n", "7 466\n", "5 1\n", "Name: cluster_label, dtype: int64" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_sns.cluster_label.value_counts()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "==========\n", "Cluster 0\n", "music 1.066521\n", "dance 1.051033\n", "shopping 0.890191\n", "cute 0.828435\n", "basketball 0.722597\n", "hair 0.691223\n", "mall 0.652502\n", "football 0.617752\n", "god 0.573272\n", "church 0.496426\n", "dtype: float64\n", "==========\n", "Cluster 1\n", "drunk 1.409873\n", "music 0.707554\n", "hair 0.629020\n", "god 0.522064\n", "dance 0.439043\n", "cute 0.384443\n", "sex 0.380703\n", "shopping 0.326103\n", "mall 0.287210\n", "die 0.275991\n", "dtype: float64\n", "==========\n", "Cluster 2\n", "band 4.105053\n", "marching 1.418883\n", "music 1.215426\n", "god 0.505319\n", "dance 0.464096\n", "hair 0.371011\n", "rock 0.344415\n", "shopping 0.289894\n", "football 0.275266\n", "cute 0.275266\n", "dtype: float64\n", "==========\n", "Cluster 3\n", "soccer 4.901004\n", "music 0.773314\n", "shopping 0.499283\n", "god 0.469154\n", "hair 0.440459\n", "basketball 0.428981\n", "dance 0.398852\n", "football 0.397418\n", "cute 0.337159\n", "church 0.321377\n", "dtype: float64\n", "==========\n", "Cluster 4\n", "music 0.554035\n", "god 0.311626\n", "dance 0.230423\n", "hair 0.192419\n", "shopping 0.181632\n", "cute 0.162855\n", "band 0.156962\n", "rock 0.152867\n", "football 0.136187\n", "church 0.135238\n", "dtype: float64\n", "==========\n", "Cluster 5\n", "blonde 327.0\n", "sex 22.0\n", "hair 12.0\n", "god 10.0\n", "death 6.0\n", "die 6.0\n", "drunk 6.0\n", "football 2.0\n", "dress 2.0\n", "sexy 1.0\n", "dtype: float64\n", "==========\n", "Cluster 6\n", "hair 3.475177\n", "sex 2.760047\n", "music 2.374704\n", "kissed 1.874704\n", "die 1.269504\n", "rock 1.257683\n", "drugs 1.076832\n", "dance 1.005910\n", "god 0.964539\n", "clothes 0.812057\n", "dtype: float64\n", "==========\n", "Cluster 7\n", "god 4.725322\n", "church 2.180258\n", "jesus 2.049356\n", "music 1.066524\n", "bible 0.972103\n", "hair 0.448498\n", "dance 0.427039\n", "band 0.407725\n", "shopping 0.396996\n", "die 0.371245\n", "dtype: float64\n", "==========\n", "Cluster 8\n", "hollister 1.512485\n", "abercrombie 1.173603\n", "shopping 0.932224\n", "music 0.909631\n", "hair 0.897741\n", "dance 0.693222\n", "mall 0.673008\n", "cute 0.612366\n", "god 0.474435\n", "clothes 0.424495\n", "dtype: float64\n" ] } ], "source": [ "for k, group in df_sns.groupby('cluster_label'):\n", " print('='*10)\n", " print('Cluster {}'.format(k))\n", " \n", " top_words = group.iloc[:, 4:-1].mean()\\\n", " .sort_values(ascending=False)\\\n", " .head(10)\n", " print(top_words)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Пищевая ценность продуктов" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Загрузите файл `food.txt`. В нем содержится информация о пищевой ценности разных продуктов" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# \"Name\" is the name of the item.\n", "#\n", "# \"Energy\" is the number of calories.\n", "#\n", "# \"Protein\" is the amount of protein in grams.\n", "#\n", "# \"Fat\" is the amount of fat in grams.\n", "#\n", "# \"Calcium\" is the amount of calcium in milligrams.\n", "#\n", "# \"Iron\" is the amount of iron in milligrams." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Подготовте данные к кластеризации и сделайте иерарническую кластеризацию этого набора данных.\n", "* Изобразите дендрограмму\n", "* Выверите число кластеров и интерпретируйте их\n", "\n", "Почему перед применением кластеризации признки необходимо нормализовать?" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "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", "
NameEnergyProteinFatCalciumIron
0Braised beef340202892.6
1Hamburger245211792.7
2Roast beef420153972.0
3Beefsteak375193292.6
4Canned beef1802210173.7
\n", "
" ], "text/plain": [ " Name Energy Protein Fat Calcium Iron\n", "0 Braised beef 340 20 28 9 2.6\n", "1 Hamburger 245 21 17 9 2.7\n", "2 Roast beef 420 15 39 7 2.0\n", "3 Beefsteak 375 19 32 9 2.6\n", "4 Canned beef 180 22 10 17 3.7" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('data/food.txt', sep=' ')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "from scipy.cluster.hierarchy import linkage, dendrogram, fcluster" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "X = df.iloc[:, 1:].values" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "X_ = scaler.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(27, 5)" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_.shape" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "Z = linkage(X_, method='average', metric='euclidean')" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "image/png": "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Cxb4F5PfqDTSISIicoMIhg/ovuKzczFej3dtkuvD66+/zsmTJ3G73UyZMuWGLzhARYeIiIiISLe6PCVL/pcWkouIiIiISECp6BARERERkYBS0SEiIiIiIgGlokNERERERAJKRYeIiIiIiASUig4REREREQko3TJXRERERILKww8/zMiRIwEwGo38wz/8A2PHjr2mtvbt28e2bdu46aabWLVqlX+7w+HgyJEj3HPPPd0S841ORYeIiIiIBJWQkBDy8/MBOHToEG+99RarV6++prZ2797NY489Rnx8fKvtZ86cYe/evSo6uomKDhEREQlaNptZTya/DhUXd/7YixcvMmDAAP/37733Hvv27cPtdpOUlMRDDz0EwB//+Ed+85vf0NzczO23387jjz/OO++8w+HDh3E4HEyaNInU1FR/O2+99RYnT54kIyODKVOmMGPGDNavX09lZSX9+vXj0UcfJT4+nj179vDpp59y6dIlvvzyS5KSkpg3bx7gK2jeffddbr75Zm655RbMZjOPPfYYhYWFTJw4keTkZABSU1N58803O4w/2HW56IiOju6ejk2mbmtLgpfyQEB5cKMwm33/5bT3b92ZPLhaG9K+YLl2XXk/mDfPyNtvA5gDGpP0PU1NTWRkZOB2uzl37px/WlRpaSk1NTW89NJLeL1e8vLyKC8vJzIykuLiYn784x9jMplYv349H330EXPmzKGsrIzU1FRuu+22Vn088sgjvP/++yxfvhyA999/H4CCggJOnTrFmjVr+OlPfwpAVVUVeXl5mEwmFi9ezF//9V9jNBr5t3/7N3JzcwkLC+OFF17g1ltv7fB1tRf/+PHju/sS9rguFx21tbXd0nF0dHS3tSXBS3kgoDy4Ubjdvt9G19aebXN/Z/Lgam1I+4Ll2nXl/WD2bN+XXI+Gdrj3q9Orjhw5wmuvvUZBQQGlpaX86U9/YunSpQC4XC5Onz5NdXU1J06cYMWKFYCvaImMjOxSRIcPH+b//t//C8CwYcMYPHgwNTU1AMTHx2OxWAAYPnw4tbW1NDY2EhcXR3h4OADJycn+49vTXvw3ZNEhIiIiItJXjBkzhj//+c80NjYCMHv2bKZPn97qmN/85jdMmTKFRx555Jr78Xq97e4zm/93tM1oNNLS0tJhW/369cPj8fjbbW5u9u9rK/7rgW6ZKyIiIiJB69SpU3g8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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names = df.Name.values\n", "dend = dendrogram(Z, color_threshold=0, labels=names, \n", " orientation='left')" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "t = 2.3\n", "labels = fcluster(Z, t, criterion='distance')\n", "# labels = fcluster(Z, t, criterion='maxclust')" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "df.loc[:, 'label'] = labels" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "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", "
NameEnergyProteinFatCalciumIronlabel
0Braised beef340202892.62
1Hamburger245211792.74
2Roast beef420153972.02
3Beefsteak375193292.62
4Canned beef1802210173.74
\n", "
" ], "text/plain": [ " Name Energy Protein Fat Calcium Iron label\n", "0 Braised beef 340 20 28 9 2.6 2\n", "1 Hamburger 245 21 17 9 2.7 4\n", "2 Roast beef 420 15 39 7 2.0 2\n", "3 Beefsteak 375 19 32 9 2.6 2\n", "4 Canned beef 180 22 10 17 3.7 4" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "==========\n", "Cluster 1\n", " Name Energy Protein Fat Calcium Iron label\n", "16 Raw clams 70 11 1 82 6.0 1\n", "17 Canned clams 45 7 1 74 5.4 1\n", "==========\n", "Cluster 2\n", " Name Energy Protein Fat Calcium Iron label\n", "0 Braised beef 340 20 28 9 2.6 2\n", "2 Roast beef 420 15 39 7 2.0 2\n", "3 Beefsteak 375 19 32 9 2.6 2\n", "9 Roast lamb shoulder 300 18 25 9 2.3 2\n", "10 Smoked ham 340 20 28 9 2.5 2\n", "11 Pork roast 340 19 29 9 2.5 2\n", "12 Pork simmered 355 19 30 9 2.4 2\n", "==========\n", "Cluster 3\n", " Name Energy Protein Fat Calcium Iron label\n", "21 Canned mackerel 155 16 9 157 1.8 3\n", "23 Canned salmon 120 17 5 159 0.7 3\n", "==========\n", "Cluster 4\n", " Name Energy Protein Fat Calcium Iron label\n", "1 Hamburger 245 21 17 9 2.7 4\n", "4 Canned beef 180 22 10 17 3.7 4\n", "5 Broiled chicken 115 20 3 8 1.4 4\n", "6 Canned chicken 170 25 7 12 1.5 4\n", "8 Roast lamb leg 265 20 20 9 2.6 4\n", "13 Beef tongue 205 18 14 7 2.5 4\n", "14 Veal cutlet 185 23 9 9 2.7 4\n", "15 Baked bluefish 135 22 4 25 0.6 4\n", "18 Canned crabmeat 90 14 2 38 0.8 4\n", "19 Fried haddock 135 16 5 15 0.5 4\n", "20 Broiled mackerel 200 19 13 5 1.0 4\n", "22 Fried perch 195 16 11 14 1.3 4\n", "25 Canned tuna 170 25 7 7 1.2 4\n", "26 Canned shrimp 110 23 1 98 2.6 4\n", "==========\n", "Cluster 5\n", " Name Energy Protein Fat Calcium Iron label\n", "7 Beef heart 160 26 5 14 5.9 5\n", "==========\n", "Cluster 6\n", " Name Energy Protein Fat Calcium Iron label\n", "24 Canned sardines 180 22 9 367 2.5 6\n" ] } ], "source": [ "for k, group in df.groupby('label'):\n", " print('='*10)\n", " print('Cluster {}'.format(k))\n", " print(group)" ] } ], "metadata": { "anaconda-cloud": {}, "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.0" }, "toc": { "base_numbering": 1, "nav_menu": { "height": "142px", "width": "252px" }, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }