1.问题描述
对beer数据集进行分簇。①针对于Kmeans方法,首先将数据集分成2个和3个簇,查看一下结果;然后对数据集的特征进行标准化,对比了为标准化的结果;最后通过设置不同的簇的数量,来查看聚类效果。②针对于DBMSAN方法,通过设置不同的eps邻域半径和核心对象最小的阈值min_samples两个参数的值,来观察聚类效果。
2.Kmeans聚类算法
# beer dataset
import pandas as pd
beer = pd.read_csv('data.txt',sep=' ')
beer
X = beer[["calories","sodium","alcohol","cost"]]
2.1将数据集分别分成2和3个簇
from sklearn.cluster import KMeans
km = KMeans(n_clusters = 3).fit(X)
km2 = KMeans(n_clusters=2).fit(X)
添加新的列,即每条数据所归属的簇的id
beer['cluster'] = km.labels_
beer['cluster2'] = km2.labels_
获得聚类中心
from pandas.plotting import scatter_matrix
%matplotlib inline
cluster_center = km.cluster_centers_
cluster_center2 = km2.cluster_centers_
用各个簇的特征平均值来表示中心的所有特征值
centers = beer.groupby('cluster').mean().reset_index()
centers