当前位置:首页 > 天道酬勤 > 正文内容

()

张世龙2021年12月20日 15:50天道酬勤730

在机器学习领域,可视化非常重要。 在开始新任务时,通过可视化手段搜索数据有助于更好地掌握数据的要点。 现在使用上一篇文章的数据集。

导入警告

导入编号为

导入手册as PD

导入映射程序

导入赛博恩as SNS

sns.set () )

warnings.filter warnings (忽略) )。

单变量可视化

单变量(univariate )分析一次只关注一个变量。 在独立分析一个特征时,通常最关心的是其特征值的分布情况。 在本节中,我们将讨论不同统计类型的变量及其相应的可视化工具。

数量特征

“数量特征”(quantitative feature )值是规则值。 这些值可以是离散的(如整数),也可以是连续的(如实数)。

查看数值变量分布的最简单方法是使用DataFrame的hist ) )方法创建直方图。

features=[“总日制”,“总英特尔呼叫”]

df.hist (指定大小=(10,4 ) )

箱型图

箱形图的主要组成部分是箱子(box ),须)和一些个别的数据点)离群值),分别简单介绍如下。

箱子表示分布的四分位距离,其长度由25th、(text(q1,下四分位数) ) 25th、) Q1,下四分位数)、75th、) text ) Q3,上四分位数)、) Q3,上四分位数)决定具体而言,区间(text(q1 )-1.5 ) cdot (text ) iqr ),) text ) q3 ) 1.5 ) cdot ) text ) iqr ) )中的异常值为非必须的数据点,作为个别的数据点seaborn的boxplot ) )方法制作箱形图。

SnS.boxplot(x='totalintlcalls ',数据=df ) )。

数据说明

除了图形工具之外,还可以使用DataFrame的describe ()方法获取分布的准确数字统计信息。

df功能.描述符(

条形图

频率表的图形表示是条形图。 绘制条形图的最简单方法是使用seaborn的countplot ()函数。 画两个分类变量的分布吧。

_,axes=PLT.subplots(nrows=1,ncols=2,fig size=(12,4 ) )

SnS.countplot(x='churn ',data=df,ax=axes[0] ) ) ) ) ) ) ) ) ) )。

SNS.count plot (x='客户服务呼叫',数据=df,ax=axes[1] ) )

散布图

“散点图”(scatter plot )将两个数字变量的值显示为二维空间的笛卡尔坐标。 可以使用matplotlib库中的scatter ()方法创建散点图。

PLT.Scatter (df (总亮度)、DF )总亮度)

上图的形状和轴对齐,得到了两个正态分布变量的散布图。 这两个变量看起来不相关。

全局数据集的可视化

以上研究了数据集的各个方面(facet ),推测了有趣的特征,通过一次选择少的特征进行了可视化。 如何一次显示所有特征,以便能够解释生成的可视化?

降低维度

大多数现实世界的数据集都有很多特征,每个特征可以看作是数据空间的一个维度。 因此,我们需要经常处理温柔的空数据集,但是将整个温柔的空数据集可视化是非常困难的。 为了整体查看一个数据集,需要在不丢失大量数据信息的情况下降低可视化的维度。 此任务被称为“维度减少”。 降维是无监督学习(unsupervised learning )的问题,因为需要不通过标签等监督输入,从数据本身获得新的低维度特性。

主成分分析(Principal Component Analysis,PCA ) )是有名的维度削减方法,我们将在后面的课程中对其进行讨论。 但是,主成分分析的极限是线性算法,这意味着数据有特定的限制。

对于线性方法,有很多统称为流形学习(Manifold Learning )的非线性方法。 有名的流形学习方法之一是叔逊。

叔孙

其基本想法很简单。 为了温柔的天空特征空间在二维平面(或三维平面)上寻找投影,使原始n维空间中远离的数据点在二维平面上也远离,原始的近点在平面上也接近。

数据库创建叔语言表示形式

,首先加载依赖。

from sklearn.manifold import TSNE

from sklearn.preprocessing import StandardScaler

去除 State 州 和 Churn 离网率 变量,然后用 pandas.Series.map() 方法将二元特征的「Yes」/「No」转换成数值。 :

X = df.drop(['Churn', 'State'], axis=1)

X['International plan'] = X['International plan'].map({'Yes': 1, 'No': 0})

X['Voice mail plan'] = X['Voice mail plan'].map({'Yes': 1, 'No': 0})

使用 StandardScaler() 方法来完成归一化数据,即从每个变量中减去均值,然后除以标准差。

scaler = StandardScaler() X_scaled = scaler.fit_transform(X)

现在可以构建 t-SNE 表示了。

tsne = TSNE(random_state=17)

tsne_repr = tsne.fit_transform(X_scaled)

然后以图形的方式可视化。

plt.scatter(tsne_repr[:, 0], tsne_repr[:, 1], alpha=.5)

根据离网情况给 t-SNE 表示加上色彩(蓝色表示忠实用户,黄色表示不忠实用户),形成离网情况散点图。

plt.scatter(tsne_repr[:, 0], tsne_repr[:, 1],

c=df['Churn'].map({False: 'blue', True: 'orange'}), alpha=.5)

可以看到,离网客户集中在低维特征空间的一小部分区域。为了更好地理解这一图像,可以使用剩下的两个二元特征,即 International plan 国际套餐 和 Voice mail plan 语音邮件套餐 给图像着色,蓝色代表二元特征的值为 Yes,黄色代表二元特征的值为 No。

_, axes = plt.subplots(1, 2, sharey=True, figsize=(12, 5))

for i, name in enumerate(['International plan', 'Voice mail plan']):

axes[i].scatter(tsne_repr[:, 0], tsne_repr[:, 1],

c=df[name].map({'Yes': 'orange', 'No': 'blue'}), alpha=.5)

axes[i].set_title(name)

通过上面 3 张图,我们就可以更直观的分析客户的离网原因了。

最后,了解下 t-SNE 的缺陷。

计算复杂度高。如果你有大量样本,你应该使用 Multicore-TSNE。随机数种子的不同会导致图形大不相同,这给解释带来了困难。通常而言,你不应该基于这些图像做出任何决定性的结论,因为它可能和单纯的猜测差不多。当然,t-SNE 图像中的某些发现可能会启发一个想法,这个想法可以通过更全面深入的研究得到确认。

总结

首先介绍了 Pandas、Matplotlib 和 seaborn 库的一些常用可视化方法,并对客户离网数据集进行了可视化分析和 t-SNE 降维。可视化是一个相对快捷的从数据中挖掘信息的手段,因此,学习这一技术并将其纳入你的日常机器学习工具箱,是很有必要的。

机器学习(一)使用pandas进行数据探索

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/25722.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。