exten"t" instead "d" on p.23
This commit is contained in:
+103
-71
@@ -123,6 +123,17 @@
|
||||
"from IPython.display import Image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%matplotlib inline"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@@ -167,8 +178,8 @@
|
||||
],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"%matplotlib inline\n",
|
||||
"plt.scatter(X[:,0], X[:,1], c='white', marker='o', s=50)\n",
|
||||
"\n",
|
||||
"plt.scatter(X[:, 0], X[:, 1], c='white', marker='o', s=50)\n",
|
||||
"plt.grid()\n",
|
||||
"plt.tight_layout()\n",
|
||||
"#plt.savefig('./figures/spheres.png', dpi=300)\n",
|
||||
@@ -195,6 +206,7 @@
|
||||
],
|
||||
"source": [
|
||||
"from sklearn.cluster import KMeans\n",
|
||||
"\n",
|
||||
"km = KMeans(n_clusters=3, \n",
|
||||
" init='random', \n",
|
||||
" n_init=10, \n",
|
||||
@@ -203,29 +215,29 @@
|
||||
" random_state=0)\n",
|
||||
"y_km = km.fit_predict(X)\n",
|
||||
"\n",
|
||||
"plt.scatter(X[y_km==0,0], \n",
|
||||
" X[y_km==0,1], \n",
|
||||
" s=50, \n",
|
||||
" c='lightgreen', \n",
|
||||
" marker='s', \n",
|
||||
"plt.scatter(X[y_km == 0, 0],\n",
|
||||
" X[y_km == 0, 1],\n",
|
||||
" s=50,\n",
|
||||
" c='lightgreen',\n",
|
||||
" marker='s',\n",
|
||||
" label='cluster 1')\n",
|
||||
"plt.scatter(X[y_km==1,0], \n",
|
||||
" X[y_km==1,1], \n",
|
||||
" s=50, \n",
|
||||
" c='orange', \n",
|
||||
" marker='o', \n",
|
||||
"plt.scatter(X[y_km == 1, 0],\n",
|
||||
" X[y_km == 1, 1],\n",
|
||||
" s=50,\n",
|
||||
" c='orange',\n",
|
||||
" marker='o',\n",
|
||||
" label='cluster 2')\n",
|
||||
"plt.scatter(X[y_km==2,0], \n",
|
||||
" X[y_km==2,1], \n",
|
||||
" s=50, \n",
|
||||
" c='lightblue', \n",
|
||||
" marker='v', \n",
|
||||
"plt.scatter(X[y_km == 2, 0],\n",
|
||||
" X[y_km == 2, 1],\n",
|
||||
" s=50,\n",
|
||||
" c='lightblue',\n",
|
||||
" marker='v',\n",
|
||||
" label='cluster 3')\n",
|
||||
"plt.scatter(km.cluster_centers_[:,0], \n",
|
||||
" km.cluster_centers_[:,1], \n",
|
||||
" s=250, \n",
|
||||
" marker='*', \n",
|
||||
" c='red', \n",
|
||||
"plt.scatter(km.cluster_centers_[:, 0],\n",
|
||||
" km.cluster_centers_[:, 1],\n",
|
||||
" s=250,\n",
|
||||
" marker='*',\n",
|
||||
" c='red',\n",
|
||||
" label='centroids')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.grid()\n",
|
||||
@@ -323,7 +335,7 @@
|
||||
" random_state=0)\n",
|
||||
" km.fit(X)\n",
|
||||
" distortions.append(km.inertia_)\n",
|
||||
"plt.plot(range(1,11), distortions , marker='o')\n",
|
||||
"plt.plot(range(1, 11), distortions, marker='o')\n",
|
||||
"plt.xlabel('Number of clusters')\n",
|
||||
"plt.ylabel('Distortion')\n",
|
||||
"plt.tight_layout()\n",
|
||||
@@ -382,14 +394,14 @@
|
||||
"y_ax_lower, y_ax_upper = 0, 0\n",
|
||||
"yticks = []\n",
|
||||
"for i, c in enumerate(cluster_labels):\n",
|
||||
" c_silhouette_vals = silhouette_vals[y_km==c]\n",
|
||||
" c_silhouette_vals = silhouette_vals[y_km == c]\n",
|
||||
" c_silhouette_vals.sort()\n",
|
||||
" y_ax_upper += len(c_silhouette_vals)\n",
|
||||
" color = cm.jet(i / n_clusters)\n",
|
||||
" plt.barh(range(y_ax_lower, y_ax_upper), c_silhouette_vals, height=1.0, \n",
|
||||
" edgecolor='none', color=color)\n",
|
||||
" edgecolor='none', color=color)\n",
|
||||
"\n",
|
||||
" yticks.append((y_ax_lower + y_ax_upper) / 2)\n",
|
||||
" yticks.append((y_ax_lower + y_ax_upper) / 2.)\n",
|
||||
" y_ax_lower += len(c_silhouette_vals)\n",
|
||||
" \n",
|
||||
"silhouette_avg = np.mean(silhouette_vals)\n",
|
||||
@@ -430,28 +442,29 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"km = KMeans(n_clusters=2, \n",
|
||||
" init='k-means++', \n",
|
||||
" n_init=10, \n",
|
||||
"km = KMeans(n_clusters=2,\n",
|
||||
" init='k-means++',\n",
|
||||
" n_init=10,\n",
|
||||
" max_iter=300,\n",
|
||||
" tol=1e-04,\n",
|
||||
" random_state=0)\n",
|
||||
"y_km = km.fit_predict(X)\n",
|
||||
"\n",
|
||||
"plt.scatter(X[y_km==0,0], \n",
|
||||
" X[y_km==0,1], \n",
|
||||
" s=50, \n",
|
||||
" c='lightgreen', \n",
|
||||
" marker='s', \n",
|
||||
"plt.scatter(X[y_km == 0, 0],\n",
|
||||
" X[y_km == 0, 1],\n",
|
||||
" s=50,\n",
|
||||
" c='lightgreen',\n",
|
||||
" marker='s',\n",
|
||||
" label='cluster 1')\n",
|
||||
"plt.scatter(X[y_km==1,0], \n",
|
||||
" X[y_km==1,1], \n",
|
||||
" s=50, \n",
|
||||
" c='orange', \n",
|
||||
" marker='o', \n",
|
||||
"plt.scatter(X[y_km == 1, 0],\n",
|
||||
" X[y_km == 1, 1],\n",
|
||||
" s=50,\n",
|
||||
" c='orange',\n",
|
||||
" marker='o',\n",
|
||||
" label='cluster 2')\n",
|
||||
"\n",
|
||||
"plt.scatter(km.cluster_centers_[:,0], km.cluster_centers_[:,1], s=250, marker='*', c='red', label='centroids')\n",
|
||||
"plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1],\n",
|
||||
" s=250, marker='*', c='red', label='centroids')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.grid()\n",
|
||||
"plt.tight_layout()\n",
|
||||
@@ -484,14 +497,14 @@
|
||||
"y_ax_lower, y_ax_upper = 0, 0\n",
|
||||
"yticks = []\n",
|
||||
"for i, c in enumerate(cluster_labels):\n",
|
||||
" c_silhouette_vals = silhouette_vals[y_km==c]\n",
|
||||
" c_silhouette_vals = silhouette_vals[y_km == c]\n",
|
||||
" c_silhouette_vals.sort()\n",
|
||||
" y_ax_upper += len(c_silhouette_vals)\n",
|
||||
" color = cm.jet(i / n_clusters)\n",
|
||||
" plt.barh(range(y_ax_lower, y_ax_upper), c_silhouette_vals, height=1.0, \n",
|
||||
" edgecolor='none', color=color)\n",
|
||||
" edgecolor='none', color=color)\n",
|
||||
"\n",
|
||||
" yticks.append((y_ax_lower + y_ax_upper) / 2)\n",
|
||||
" yticks.append((y_ax_lower + y_ax_upper) / 2.)\n",
|
||||
" y_ax_lower += len(c_silhouette_vals)\n",
|
||||
" \n",
|
||||
"silhouette_avg = np.mean(silhouette_vals)\n",
|
||||
@@ -624,9 +637,9 @@
|
||||
"np.random.seed(123)\n",
|
||||
"\n",
|
||||
"variables = ['X', 'Y', 'Z']\n",
|
||||
"labels = ['ID_0','ID_1','ID_2','ID_3','ID_4']\n",
|
||||
"labels = ['ID_0', 'ID_1', 'ID_2', 'ID_3', 'ID_4']\n",
|
||||
"\n",
|
||||
"X = np.random.random_sample([5,3])*10\n",
|
||||
"X = np.random.random_sample([5, 3])*10\n",
|
||||
"df = pd.DataFrame(X, columns=variables, index=labels)\n",
|
||||
"df"
|
||||
]
|
||||
@@ -727,9 +740,11 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from scipy.spatial.distance import pdist,squareform\n",
|
||||
"from scipy.spatial.distance import pdist, squareform\n",
|
||||
"\n",
|
||||
"row_dist = pd.DataFrame(squareform(pdist(df, metric='euclidean')), columns=labels, index=labels)\n",
|
||||
"row_dist = pd.DataFrame(squareform(pdist(df, metric='euclidean')),\n",
|
||||
" columns=labels,\n",
|
||||
" index=labels)\n",
|
||||
"row_dist"
|
||||
]
|
||||
},
|
||||
@@ -813,9 +828,11 @@
|
||||
"from scipy.cluster.hierarchy import linkage\n",
|
||||
"\n",
|
||||
"row_clusters = linkage(row_dist, method='complete', metric='euclidean')\n",
|
||||
"pd.DataFrame(row_clusters, \n",
|
||||
" columns=['row label 1', 'row label 2', 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' %(i+1) for i in range(row_clusters.shape[0])])"
|
||||
"pd.DataFrame(row_clusters,\n",
|
||||
" columns=['row label 1', 'row label 2',\n",
|
||||
" 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' % (i + 1)\n",
|
||||
" for i in range(row_clusters.shape[0])])"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -890,9 +907,11 @@
|
||||
"# 2. correct approach: Condensed distance matrix\n",
|
||||
"\n",
|
||||
"row_clusters = linkage(pdist(df, metric='euclidean'), method='complete')\n",
|
||||
"pd.DataFrame(row_clusters, \n",
|
||||
" columns=['row label 1', 'row label 2', 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' %(i+1) for i in range(row_clusters.shape[0])])"
|
||||
"pd.DataFrame(row_clusters,\n",
|
||||
" columns=['row label 1', 'row label 2',\n",
|
||||
" 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' % (i + 1) \n",
|
||||
" for i in range(row_clusters.shape[0])])"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -965,10 +984,11 @@
|
||||
"source": [
|
||||
"# 3. correct approach: Input sample matrix\n",
|
||||
"\n",
|
||||
"row_clusters = linkage(df.values, method='complete', metric='euclidean')\n",
|
||||
"pd.DataFrame(row_clusters, \n",
|
||||
" columns=['row label 1', 'row label 2', 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' %(i+1) for i in range(row_clusters.shape[0])])"
|
||||
"pd.DataFrame(row_clusters,\n",
|
||||
" columns=['row label 1', 'row label 2',\n",
|
||||
" 'distance', 'no. of items in clust.'],\n",
|
||||
" index=['cluster %d' % (i + 1)\n",
|
||||
" for i in range(row_clusters.shape[0])])"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1042,8 +1062,8 @@
|
||||
],
|
||||
"source": [
|
||||
"# plot row dendrogram\n",
|
||||
"fig = plt.figure(figsize=(8,8), facecolor='white')\n",
|
||||
"axd = fig.add_axes([0.09,0.1,0.2,0.6])\n",
|
||||
"fig = plt.figure(figsize=(8, 8), facecolor='white')\n",
|
||||
"axd = fig.add_axes([0.09, 0.1, 0.2, 0.6])\n",
|
||||
"\n",
|
||||
"# note: for matplotlib < v1.5.1, please use orientation='right'\n",
|
||||
"row_dendr = dendrogram(row_clusters, orientation='left')\n",
|
||||
@@ -1059,7 +1079,7 @@
|
||||
" i.set_visible(False)\n",
|
||||
"\n",
|
||||
"# plot heatmap\n",
|
||||
"axm = fig.add_axes([0.23,0.1,0.6,0.6]) # x-pos, y-pos, width, height\n",
|
||||
"axm = fig.add_axes([0.23, 0.1, 0.6, 0.6]) # x-pos, y-pos, width, height\n",
|
||||
"cax = axm.matshow(df_rowclust, interpolation='nearest', cmap='hot_r')\n",
|
||||
"fig.colorbar(cax)\n",
|
||||
"axm.set_xticklabels([''] + list(df_rowclust.columns))\n",
|
||||
@@ -1101,7 +1121,9 @@
|
||||
"source": [
|
||||
"from sklearn.cluster import AgglomerativeClustering\n",
|
||||
"\n",
|
||||
"ac = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='complete')\n",
|
||||
"ac = AgglomerativeClustering(n_clusters=2, \n",
|
||||
" affinity='euclidean', \n",
|
||||
" linkage='complete')\n",
|
||||
"labels = ac.fit_predict(X)\n",
|
||||
"print('Cluster labels: %s' % labels)"
|
||||
]
|
||||
@@ -1170,9 +1192,9 @@
|
||||
"from sklearn.datasets import make_moons\n",
|
||||
"\n",
|
||||
"X, y = make_moons(n_samples=200, noise=0.05, random_state=0)\n",
|
||||
"plt.scatter(X[:,0], X[:,1])\n",
|
||||
"plt.scatter(X[:, 0], X[:, 1])\n",
|
||||
"plt.tight_layout()\n",
|
||||
"#plt.savefig('./figures/moons.png', dpi=300)\n",
|
||||
"# plt.savefig('./figures/moons.png', dpi=300)\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
@@ -1202,18 +1224,24 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8,3))\n",
|
||||
"f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))\n",
|
||||
"\n",
|
||||
"km = KMeans(n_clusters=2, random_state=0)\n",
|
||||
"y_km = km.fit_predict(X)\n",
|
||||
"ax1.scatter(X[y_km==0,0], X[y_km==0,1], c='lightblue', marker='o', s=40, label='cluster 1')\n",
|
||||
"ax1.scatter(X[y_km==1,0], X[y_km==1,1], c='red', marker='s', s=40, label='cluster 2')\n",
|
||||
"ax1.scatter(X[y_km == 0, 0], X[y_km == 0, 1],\n",
|
||||
" c='lightblue', marker='o', s=40, label='cluster 1')\n",
|
||||
"ax1.scatter(X[y_km == 1, 0], X[y_km == 1, 1],\n",
|
||||
" c='red', marker='s', s=40, label='cluster 2')\n",
|
||||
"ax1.set_title('K-means clustering')\n",
|
||||
"\n",
|
||||
"ac = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='complete')\n",
|
||||
"ac = AgglomerativeClustering(n_clusters=2,\n",
|
||||
" affinity='euclidean',\n",
|
||||
" linkage='complete')\n",
|
||||
"y_ac = ac.fit_predict(X)\n",
|
||||
"ax2.scatter(X[y_ac==0,0], X[y_ac==0,1], c='lightblue', marker='o', s=40, label='cluster 1')\n",
|
||||
"ax2.scatter(X[y_ac==1,0], X[y_ac==1,1], c='red', marker='s', s=40, label='cluster 2')\n",
|
||||
"ax2.scatter(X[y_ac == 0, 0], X[y_ac == 0, 1], c='lightblue',\n",
|
||||
" marker='o', s=40, label='cluster 1')\n",
|
||||
"ax2.scatter(X[y_ac == 1, 0], X[y_ac == 1, 1], c='red',\n",
|
||||
" marker='s', s=40, label='cluster 2')\n",
|
||||
"ax2.set_title('Agglomerative clustering')\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
@@ -1252,8 +1280,12 @@
|
||||
"\n",
|
||||
"db = DBSCAN(eps=0.2, min_samples=5, metric='euclidean')\n",
|
||||
"y_db = db.fit_predict(X)\n",
|
||||
"plt.scatter(X[y_db==0,0], X[y_db==0,1], c='lightblue', marker='o', s=40, label='cluster 1')\n",
|
||||
"plt.scatter(X[y_db==1,0], X[y_db==1,1], c='red', marker='s', s=40, label='cluster 2')\n",
|
||||
"plt.scatter(X[y_db == 0, 0], X[y_db == 0, 1],\n",
|
||||
" c='lightblue', marker='o', s=40,\n",
|
||||
" label='cluster 1')\n",
|
||||
"plt.scatter(X[y_db == 1, 0], X[y_db == 1, 1],\n",
|
||||
" c='red', marker='s', s=40,\n",
|
||||
" label='cluster 2')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.tight_layout()\n",
|
||||
"#plt.savefig('./figures/moons_dbscan.png', dpi=300)\n",
|
||||
|
||||
Reference in New Issue
Block a user