小编采访

明日歌,zhiboba,大航海时代ol

关键点:

  • National Health and Nutrition Exam Survey (综合饮食,医学和检查机器学习数据集,2013年至2014年)中有一些聚类,这些聚类只能通过降维来显示。
  • PCA与k-means结合使用是一种可视化高维数据的强大方法。

本文主要时将主成分分析(PCA)付诸实践,首先下载机器学习数据集:National Health and Nutrition Examination Survey(https://www.kaggle.com/cdc/national-health-and-nutrition-examination-survey)。这罗碧升个机器学习数据集包含近200个特征(列),我们无法通过传统的重庆晶福源火锅团购可视化方法对所有这些特征进行全面概述。这就是PCA的意义所在。你需要将很多特征投射到较低维度的空间,即将它们简化为几个重要的主要特征,并将它们可视化。也可以在机器学习管道中使用这些简化的成分。

为了更好地理解这一点,让我们看看这是如何使用机器学习数据集在三个步骤中完成的。

第舌尖毁了沈子钰1步:降维

在这一步中,我们将找到捕获数据中最大方差的最优成分数量。Python代码如下:

#最强逆袭传说 Imports
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
%config InlineBackend.figure_format='retina'
# Lo恋上刁蛮腹黑五千金ad in the data
df = pd.read_csv('2013_2014_cleaned.csv')
# Standard明日歌,zhiboba,大航海时代olize the data to have a mean of ~0 and a varia恋妹nce of 1
X_std = StandardScaler().fit_transform(df)
# Create a PCA instance: pca
pc蒙面唱将谭瞐视频合集a = PCA(n_components=20)
principalComponents = pca.fit_transform(X_std)
# Plot the explained variances
features = range(pca.n_components_)
plt.bar(features, pca.explain蓝道申森林事件ed_variance_, color='black')
plt.xlabel('PCA features')
plt.ylabel('variance %')
plt.0ffice2016xticks(features)
# Save components to a DatalicejapanaFrame
PCA_components = pd.DataFrame(principalComponents)

图1

从图1可畅舒倍乐以看出,前三个成分解释了我们数据中大部分的方差。对于这个可视化用例,我们将快速绘制前两个。我们这样做是为了注意是否有清晰的聚类。Python实现如下:

plt.scatter(PCA_components[0], PCA_components[1], alpha=.1, color='black')
plt.xl唯我独魔abel('PCA 1')
plt.ylabel('PCA 2')

图2. PCA模型前两个成分的散点图

图2显示了至少两个明显可区分的聚类。这个factoid告诉我们数据集中的观察结果可以分组。因为数据中的每个观察都是针对一个人的饮食,实验和体检,我们可以说这些聚类代表不同的人群。重要的是要注意我们没有用于标记这些组的目标变量,因此我们不确切知道这些标签是什么。在理想情况下,这种类型的分析可以让我们看到按健康状况隔离的样本人群。然而,图2并没有显示所有有意义的主成分。为了以更大的粒度可视化还原数据ideapocket集的其余部分,我们将使用k均值聚类。

第2步:找到聚类

在此步骤中,我们将使用k-means聚类来查看前三个PCA成分。为此,我们首先将这些主要成分拟合到k-means算法并确定最佳聚类数。确定k-means模型的理想聚类数可以通过测量到最近的聚类中心(即inertia)的平方距离之和来完成。与图2中主成分分析的scree图非常相似,下面的k-means scree图表示的是解释的方差百分比,但是用不同的术语来表示,聚类数量的函数。

ks = range(1, 10)
inertias = []
for k in ks:
# Create a KMeans instance with k clusters: model
modealb175l = KMeans(n_clusters=k)

# Fit model to samples
model.fit(PCA_components.iloc[:,:3])

# Append the inertia to the list of inertias
inertias.append(model.inertia_)

plt.plot(ks, inertias, '-o', color='black')
plt.xlabel('number of clusters, k')
plt.ylabel('inertia')
plt.xticks(ks)
plt.show()

图3.显示k = 4后inertia缓慢下降的Scree图

图3显示,在(elbow)4个聚类之后,inertia值的变化不再显着,并且最可能的是,在elbow point之后其余数据的方差也不再显着。因此,我们可以在k = 4之后丢弃所有内容并继续进行该过程的最后一步。

第3中观村步:可视化和解释聚类

人们可以根据体检结果、全血计数和饮食记录等特征进行分组吗?将所有这些特征降维,然后使用k-means提示可视化这些主成一滴眼药水毁了一条命分中的聚类,这意味着我的问题的答案很可能是肯定的。

图4.陈枢律师 k-means聚类PCA成分的交互式3-D可视化

图4是用Plotly制作的(https://plot.ly/create/?fid=dimakav:22#/),并在数据中显示了一些明确定义的聚类。我没有标记数据集,所以我们不知道标签是什么。但这郑胜利女朋友并不意味着我们不能回过头来标记这些聚类。现在我们知道了数据中有多少个聚类,我们就能更好地了解可以为总体标记多少个组。举个例子,我们可以提出一个模型,将这个人群的幸福感分为四个等级。在家的滋味刘涛每个示例的唯一id上将这些标签重新引入到简化的数据集中,这将允许我们通过聚类对它们进行可视化。

能够发现其他不可见的模式并通过一个模型来将这些模式泛化到观察,这正是PCA和k-means方法在任何数据科学家工具箱中存在的至关重要的原因。

推荐新闻