二十一、案例实战:聚类实践
本节内容:
- 多种聚类算法概述
- 聚类案例实战
1、多种聚类算法概述

KMeans+DBSCAN算法
KMeans算法是一种聚类算法,而聚类问题在机器学习中主要是是一类无监督问题:简单理解是手中无标签,我们要去分出标签。这类问题的难点是:如何去评估,也就是怎么来评估我们算法的好坏。如何调参?也就是到底有多少个聚类中心点。
KMeans最大的问题就是一个先验知识,这个先验知识是让我们知道如何对Kmeans要分出来的区域进行一个判断。
DBSCAN同样是一类聚类算法,其算法要点:阈值+核心对象+密度可达(包含直接密度可达)+边界点。
2、聚类案例实战
# beer dataset import pandas as pd beer = pd.read_csv('data.txt', sep=' ') beer

X = beer[["calories","sodium","alcohol","cost"]]
K-means clustering
from sklearn.cluster import KMeans # 分别取3个和2个质心的情况 km = KMeans(n_clusters=3).fit(X) km2 = KMeans(n_clusters=2).fit(X) # 每个样本点对应的分类
km.labels_ #array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1])
beer['cluster'] = km.labels_ beer['cluster2'] = km2.labels_ beer.sort_values('cluster')

from pandas.tools.plotting import scatter_matrix %matplotlib inline cluster_centers = km.cluster_centers_ cluster_centers_2 = km2.cluster_centers_
beer.groupby("cluster").mean()

beer.groupby("cluster2").mean()

centers = beer.groupby("cluster").mean().reset_index() #利用reset_index重置索引
%matplotlib inline import matplotlib.pyplot as plt plt.rcParams['font.size'] = 14
import numpy as np colors = np.array(['red', 'green', 'blue', 'yellow'])
plt.scatter(beer["calories"], beer["alcohol"],c=colors[beer["cluster"]]) plt.scatter(centers.calories, centers.alcohol, linewidths=3, marker='+', s=300, c='black') plt.xlabel("Calories") plt.ylabel("Alcohol")









浙公网安备 33010602011771号