python 数据分析— Kmeans 聚类

摘要:

  1. 目的借用 irrs 数据集,测试Kmeans 算法
  2. 已知 irrs 数据集,目标值有三个类别
  3. 之前的PCA 模型对 irrs 数据集进行数据降维,已经表明 可以将数据降低到2维
  4. 前期进行聚类测试时,可以看出划分为两类时轮廓系数最优,但数据集目标值y 为三类。所以本案例设置 n_clusters=3,通过后续的可视化可以看出本案例的Kmeans聚类结果与原数据集的分布吻合
from sklearn.datasets import load_iris
# 导入skleran 的数据集
from sklearn.decomposition import PCA
from sklearn.preprocessing import scale
# 导入pca 模型 和数据标准化处理模块
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 导入kmeans模块和轮廓系数
import seaborn as sns
import matplotlib.pyplot as plt
# 导入绘图模块
import pandas as pd

data = load_iris()
x =data['data']
y= data['target']

x_s = scale(x,with_mean=True,with_std=True,axis=0)
# 数据标准化处理

pca = PCA(n_components=2)
pca.fit(x_s)
x_pca = pca.transform(x_s)
# PCA 模型降维

estimator = KMeans(n_clusters=3)  # 构造聚类器
estimator.fit(x_pca)
# Kmeans 模型聚类运算

plt.rcParams['font.sans-serif'] = ['SimHei']
sns.set_style('whitegrid')
# 设置绘图中文显示 和 seaborn 主题

x_pca = pd.DataFrame(x_pca)
x_pca['label'] = estimator.labels_ 
# 将聚类模型的结果标签值存入 dataframe

sns.scatterplot(x=x_pca.loc[:,0],y=x_pca.loc[:,1],data=x_pca,hue= x_pca['label'])

# 想显示原点的位置,或者在原图中显示一个新点的位置,这里的a是另一个dataframe
sns.scatterplot(a.loc[:,0],a.loc[:,1],color = 'r')

python 数据分析— Kmeans 聚类_第1张图片

你可能感兴趣的:(python,数据分析)