签证网站源码分享带数据链接,签证ap

大家好,今天小编来为大家解答签证网站源码分享带数据链接这个问题,签证ap很多人还不知道,现在让我们一起来看看吧!

雷锋网AI研习社按:本文为雷锋网字幕组编译的技术博客,原标题A、Word2Vec—ababystepinDeepLearningbutagiantleaptowardsNaturalLanguageProcessing,作者为机器学习工程师SuvroBanerjee

翻译|程炜李昊洋整理|孔令双

原文链接:

https://medium.com/@chengweizhang2012/how-to-do-unsupervised-clustering-with-keras-9e1284448437

由于深度学习算法在表达非线性表征上的卓越能力,它非常适合完成输入到有标签的数据集输出的映射。这种任务叫做分类。它需要有人对数据进行标注。无论是对X光图像还是对新闻报道的主题进行标注,在数据集增大的时候,依靠人类进行干预的做法都是费时费力的。

聚类分析,或者称作聚类是一种无监督的机器学习技术。它不需要有标签的数据集。它可以根据数据成员的相似性对它们进行分组。

你为什么需要关注它呢?让我来讲讲几个理由。

聚类的应用

推荐系统,通过学习用户的购买历史,聚类模型可以根据相似性对用户进行区分。它可以帮助你找到志趣相投的用户,以及相关商品。

在生物学上,序列聚类算法试图将相关的生物序列进行分组。它根据氨基酸含量对蛋白进行聚类。

图像和视频聚类分析根据相似性对它们进行分组。

在医疗数据库中,对每个病人来说,真正有价值的测试(比如葡萄糖,胆固醇)都是不同的。首先对病人进行聚类分析可以帮助我们对真正有价值的特征进行分类,从而减少特征分散。它可以增加分类任务的准确性,比如在癌症病人生存预测上。

在一般用途上,它可以生成一个数据的汇总信息用于分类,模式发现,假设生成,以及测试。

无论如何,对于数据科学家来说,聚类都是非常有价值的工具。

如何才是好的聚类

一个好的聚类方法应该生成高质量的分类,它有如下特点:

群组内部的高相似性:群组内的紧密聚合

群组之间的低相似性:群组之间各不相同

为K-Means算法设置一个基线

传统的K-Means算法速度快,并且可以广泛应用于解决各种问题。但是,它的距离度量受限于原始的数据空间。因此在输入数据维度较高时,它的效率就会降低,比如说图像集。

让我们来训练一个K-Means模型对MNIST手写字体进行聚类分析到10个群组中。

fromsklearn.clusterimportKMeans

fromkeras.datasetsimportmnist

(x_train,y_train),(x_test,y_test)=mnist.load_data

x=np.concatenate((x_train,x_test))

y=np.concatenate((y_train,y_test))

x=x.reshape((x.shape[0],-1))

x=np.divide(x,255.)

Runsinparallel4CPUs

kmeans=KMeans(n_clusters=n_clusters,n_init=20,n_jobs=4)

EvaluatetheK-Meansclusteringaccuracy.

metrics.acc(y,y_pred_kmeans)

评估得到K-Means聚类算法的准确度在53.2%。后面我们会将它与深度嵌入聚类模型进行比较。

一个自动编码器,通过前训练,学习无标签数据集初始压缩后的表征。

建立在编码器之上的聚类层将输出送给一个群组。基于当前评估得到的K-Means聚类中心,聚类层完成权重值的初始化。

训练聚类模型,同时改善聚类层和编码器。

在找源代码吗?到我的Github上看看。

前训练自动编码器

自动编码器是一个数据压缩算法。它由编码器和解码器两个主要部分构成。编码器的工作是将输入数据压缩成较低维度的特征。比如,一个28×28的MNIST图像总共有784个像素。编码器可以将它压缩成10个浮点数组成的数组。我们将这些浮点数作为图像的特征。另一方面,解码器将压缩后的特征作为输入,通过它重建出与原始图像尽可能相近似的图像。实际上,自动编码器是一个无监督学习算法。在训练过程中,它只需要图像本身,而不需要标签。

自动编码器

自动编码器是一个全连接对称模型。之所以是对称的,是因为图像的压缩和解压过程是一组完全相反的对应过程。

全连接自动编码器

我们将会对自动编码器进行300轮训练,并保存下模型权重值。

autoencoder.fit(x,x,batch_size=256,epochs=300)Example

“`

model.add(ClusteringLayer(n_clusters=10))

“`

Inputshape

2Dtensorwithshape:`(n_samples,n_features)`.

Makesureeachsample’s10valuesaddupto1.

returnq

defcompute_output_shape(self,input_shape):

assertinput_shapeandlen(input_shape)==2

returninput_shape[0],self.n_clusters

defget_config(self):

config={‘n_clusters’:self.n_clusters}

base_config=super(ClusteringLayer,self).get_config

returndict(list(base_config.items)+list(config.items))

接下来,我们在预先训练的编码器之后堆叠聚类层以形成聚类模型。对于聚类层,我们初始化它的权重,聚类中心使用k-means对所有图像的特征向量进行训练。

clustering_layer=ClusteringLayer(n_clusters,name=’clustering’)(encoder.output)

model=Model(inputs=encoder.input,outputs=clustering_layer)

updatetheauxiliarytargetdistributionp

Confusionmatrix.

foriinrange(y_pred.size):

w[y_pred[i],y_true[i]]+=1

ind=linear_assignment(-w)

acc=sum([w[i,j]fori,jinind])*1.0/y_pred.size

查看混淆矩阵更直接。

混乱矩阵

在这里,您可以手动快速匹配聚类分配,例如,聚类1与真实标签7或手写数字“7”和虎钳签证相匹配。

下面显示的混淆矩阵绘制代码片段。

importseabornassns

importsklearn.metrics

importmatplotlib.pyplotasplt

sns.set(font_scale=3)

confusion_matrix=sklearn.metrics.confusion_matrix(y,y_pred)

plt.figure(figsize=(16,14))

sns.heatmap(confusion_matrix,annot=True,fmt=”d”,annot_kws={“size”:20});

plt.title(“Confusionmatrix”,fontsize=30)

plt.ylabel(‘Truelabel’,fontsize=25)

plt.xlabel(‘Clusteringlabel’,fontsize=25)

plt.show

应用卷积自动编码器(实验)

由于我们正在处理图像数据集,所以值得一试卷积自动编码器,而不是仅使用完全连接的图层构建。

值得一提的是,为了重建图像,您可以选择去卷积层(Keras中的Conv2DTranspose)或上采样(UpSampling2D)层以减少伪像问题。卷积自动编码器的实验结果可以在我的GitHub上找到。

结论和进一步阅读

自动编码器在降维和参数初始化方面发挥了重要作用,然后针对目标分布对定制的聚类层进行训练以进一步提高精度。

进一步阅读

在Keras建立自动编码器-官方Keras博客

用于聚类分析的无监督深嵌入-激励我写这篇文章。

完整的源代码在我的GitHub上,一直读到笔记本的最后,因为您会发现另一种可以同时减少聚类和自动编码器丢失的另一种方法,这种方法被证明对于提高卷积聚类模型的聚类准确性非常有用。

雷锋网字幕组编译。

OK,本文到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平