当前位置: 首页 > news >正文

学院网站建设流程图网站建设最流行语言

学院网站建设流程图,网站建设最流行语言,企业管理信息系统有哪些,wordpress 移动端适配无监督聚类方法的评价指标必须依赖于数据和聚类结果的内在属性#xff0c;例如聚类的紧凑性和分离性#xff0c;与外部知识的一致性#xff0c;以及同一算法不同运行结果的稳定性。 本文将全面概述Scikit-Learn库中用于的聚类技术以及各种评估方法。 本文将分为2个部分例如聚类的紧凑性和分离性与外部知识的一致性以及同一算法不同运行结果的稳定性。 本文将全面概述Scikit-Learn库中用于的聚类技术以及各种评估方法。 本文将分为2个部分1、常见算法比较 2、聚类技术的各种评估方法 本文作为第一部分将介绍和比较各种聚类算法 K-MeansAffinity PropagationAgglomerative ClusteringMean Shift ClusteringBisecting K-MeansDBSCANOPTICSBIRCH 首先我们生成一些数据后面将使用这些数据作为聚类技术的输入。 importpandasaspdimportnumpyasnpimportseabornassnsimportmatplotlib.pyplotasplt#Set the number of samples and featuresn_samples1000n_features4#Create an empty array to store the datadatanp.empty((n_samples, n_features))#Generate random data for each featureforiinrange(n_features):data[:, i] np.random.normal(sizen_samples)#Create 5 clusters with different densities and centroidscluster1data[:200, :] np.random.normal(size(200, n_features), scale0.5)cluster2data[200:400, :] np.random.normal(size(200, n_features), scale1) np.array([5,5,5,5])cluster3data[400:600, :] np.random.normal(size(200, n_features), scale1.5) np.array([-5,-5,-5,-5])cluster4data[600:800, :] np.random.normal(size(200, n_features), scale2) np.array([5,-5,5,-5])cluster5data[800:, :] np.random.normal(size(200, n_features), scale2.5) np.array([-5,5,-5,5])#Combine the clusters into one datasetXnp.concatenate((cluster1, cluster2, cluster3, cluster4, cluster5))# Plot the dataplt.scatter(X[:, 0], X[:, 1])plt.show()结果如下 我们将用特征值和簇ID创建一个DF。稍后在模型性能时将使用这些数据。 dfpd.DataFrame(X, columns[feature_1, feature_2, feature_3, feature_4])cluster_idnp.concatenate((np.zeros(200), np.ones(200), np.full(200, 2), np.full(200, 3), np.full(200, 4)))df[cluster_id] cluster_iddf现在我们将构建和可视化8个不同的聚类模型: 1、K-Means K-Means聚类算法是一种常用的聚类算法它将数据点分为K个簇每个簇的中心点是其所有成员的平均值。K-Means算法的核心是迭代寻找最优的簇心位置直到达到收敛状态。 K-Means算法的优点是简单易懂计算速度较快适用于大规模数据集。但是它也存在一些缺点例如对于非球形簇的处理能力较差容易受到初始簇心的选择影响需要预先指定簇的数量K等。此外当数据点之间存在噪声或者离群点时K-Means算法可能会将它们分配到错误的簇中。 #K-Meansfromsklearn.clusterimportKMeans#Define function:kmeansKMeans(n_clusters5)#Fit the model:kmkmeans.fit(X)km_labelskm.labels_#Print results:#print(kmeans.labels_)#Visualise results:plt.scatter(X[:, 0], X[:, 1], ckmeans.labels_, s70, cmapPaired)plt.scatter(kmeans.cluster_centers_[:, 0],kmeans.cluster_centers_[:, 1],marker^, s100, linewidth2, c[0, 1, 2, 3, 4])2、Affinity Propagation Affinity Propagation是一种基于图论的聚类算法旨在识别数据中的exemplars(代表点)和clusters(簇)。与K-Means等传统聚类算法不同Affinity Propagation不需要事先指定聚类数目也不需要随机初始化簇心而是通过计算数据点之间的相似性得出最终的聚类结果。 Affinity Propagation算法的优点是不需要预先指定聚类数目且能够处理非凸形状的簇。但是该算法的计算复杂度较高需要大量的存储空间和计算资源并且对于噪声点和离群点的处理能力较弱。 fromsklearn.clusterimportAffinityPropagation#Fit the model:afAffinityPropagation(preference-563, random_state0).fit(X)cluster_centers_indicesaf.cluster_centers_indices_af_labelsaf.labels_n_clusters_len(cluster_centers_indices)#Print number of clusters:print(n_clusters_)importmatplotlib.pyplotaspltfromitertoolsimportcycleplt.close(all)plt.figure(1)plt.clf()colorscycle(bgrcmykbgrcmykbgrcmykbgrcmyk)fork, colinzip(range(n_clusters_), colors):class_membersaf_labelskcluster_centerX[cluster_centers_indices[k]]plt.plot(X[class_members, 0], X[class_members, 1], col.)plt.plot(cluster_center[0],cluster_center[1],o,markerfacecolorcol,markeredgecolork,markersize14,)forxinX[class_members]:plt.plot([cluster_center[0], x[0]], [cluster_center[1], x[1]], col)plt.title(Estimated number of clusters: %d%n_clusters_)plt.show()3、Agglomerative Clustering 凝聚层次聚类Agglomerative Clustering是一种自底向上的聚类算法它将每个数据点视为一个初始簇并将它们逐步合并成更大的簇直到达到停止条件为止。在该算法中每个数据点最初被视为一个单独的簇然后逐步合并簇直到所有数据点被合并为一个大簇。 Agglomerative Clustering算法的优点是适用于不同形状和大小的簇且不需要事先指定聚类数目。此外该算法也可以输出聚类层次结构便于分析和可视化。缺点是计算复杂度较高尤其是在处理大规模数据集时需要消耗大量的计算资源和存储空间。此外该算法对初始簇的选择也比较敏感可能会导致不同的聚类结果。 fromsklearn.clusterimportAgglomerativeClustering#Fit the model:clusteringAgglomerativeClustering(n_clusters5).fit(X)AC_labelsclustering.labels_n_clustersclustering.n_clusters_print(number of estimated clusters : %d%clustering.n_clusters_)# Plot clustering resultscolors [purple, orange, green, blue, red]forindex, metricinenumerate([#cosine, euclidean, #cityblock]):modelAgglomerativeClustering(n_clusters5, linkageward, affinitymetric)model.fit(X)plt.figure()plt.axes([0, 0, 1, 1])forl, cinzip(np.arange(model.n_clusters), colors):plt.plot(X[model.labels_l].T, cc, alpha0.5)plt.axis(tight)plt.axis(off)plt.suptitle(AgglomerativeClustering(affinity%s)%metric, size20)plt.show()4、Mean Shift Clustering Mean Shift Clustering是一种基于密度的非参数聚类算法其基本思想是通过寻找数据点密度最大的位置称为局部最大值或高峰来识别数据中的簇。算法的核心是通过对每个数据点进行局部密度估计并将密度估计的结果用于计算数据点移动的方向和距离。算法的核心是通过对每个数据点进行局部密度估计并将密度估计的结果用于计算数据点移动的方向和距离。 Mean Shift Clustering算法的优点是不需要指定簇的数目且对于形状复杂的簇也有很好的效果。算法还能够有效地处理噪声数据。他的缺点也是计算复杂度较高尤其是在处理大规模数据集时需要消耗大量的计算资源和存储空间该算法还对初始参数的选择比较敏感需要进行参数调整和优化。 fromsklearn.clusterimportMeanShift, estimate_bandwidth# The following bandwidth can be automatically detected usingbandwidthestimate_bandwidth(X, quantile0.2, n_samples100)#Fit the model:msMeanShift(bandwidthbandwidth)ms.fit(X)MS_labelsms.labels_cluster_centersms.cluster_centers_labels_uniquenp.unique(labels)n_clusters_len(labels_unique)print(number of estimated clusters : %d%n_clusters_)fromitertoolsimportcycleplt.figure(1)plt.clf()colorscycle(bgrcmykbgrcmykbgrcmykbgrcmyk)fork, colinzip(range(n_clusters_), colors):my_memberslabelskcluster_centercluster_centers[k]plt.plot(X[my_members, 0], X[my_members, 1], col.)plt.plot(cluster_center[0],cluster_center[1],o,markerfacecolorcol,markeredgecolork,markersize14,)plt.title(Estimated number of clusters: %d%n_clusters_)plt.show()5、Bisecting K-Means Bisecting K-Means是一种基于K-Means算法的层次聚类算法其基本思想是将所有数据点划分为一个簇然后将该簇分成两个子簇并对每个子簇分别应用K-Means算法重复执行这个过程直到达到预定的聚类数目为止。 算法首先将所有数据点视为一个初始簇然后对该簇应用K-Means算法将该簇分成两个子簇并计算每个子簇的误差平方和SSE。然后选择误差平方和最大的子簇并将其再次分成两个子簇重复执行这个过程直到达到预定的聚类数目为止。 Bisecting K-Means算法的优点是具有较高的准确性和稳定性能够有效地处理大规模数据集并且不需要指定初始聚类数目。该算法还能够输出聚类层次结构便于分析和可视化。缺点是计算复杂度较高尤其是在处理大规模数据集时需要消耗大量的计算资源和存储空间。此外该算法对初始簇的选择也比较敏感可能会导致不同的聚类结果。 fromsklearn.clusterimportBisectingKMeans#Build and fit model:bisect_meansBisectingKMeans(n_clusters5).fit(X)BKM_labelsbisect_means.labels_#Print model attributes:#print(Labels: , bisect_means.labels_)print(Number of clusters: , bisect_means.n_clusters)#Define varaibles to be included in scatterdot:ybisect_means.labels_#print(y)centersbisect_means.cluster_centers_# Visualize the results using a scatter plotplt.scatter(X[:, 0], X[:, 1], cy)plt.scatter(centers[:, 0], centers[:, 1], cr, s100)plt.show()6、DBSCAN DBSCAN (Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法其可以有效地发现任意形状的簇并能够处理噪声数据。DBSCAN算法的核心思想是对于一个给定的数据点如果它的密度达到一定的阈值则它属于一个簇中否则它被视为噪声点。 DBSCAN算法的优点是能够自动识别簇的数目并且对于任意形状的簇都有较好的效果。并且还能够有效地处理噪声数据不需要预先指定簇的数目。缺点是对于密度差异较大的数据集可能会导致聚类效果不佳需要进行参数调整和优化。另外该算法对于高维数据集的效果也不如其他算法 fromsklearn.clusterimportDBSCANdbDBSCAN(eps3, min_samples10).fit(X)DBSCAN_labelsdb.labels_# Number of clusters in labels, ignoring noise if present.n_clusters_len(set(labels)) - (1if-1inlabelselse0)n_noise_list(labels).count(-1)print(Estimated number of clusters: %d%n_clusters_)print(Estimated number of noise points: %d%n_noise_)unique_labelsset(labels)core_samples_masknp.zeros_like(labels, dtypebool)core_samples_mask[db.core_sample_indices_] Truecolors [plt.cm.Spectral(each) foreachinnp.linspace(0, 1, len(unique_labels))]fork, colinzip(unique_labels, colors):ifk-1:# Black used for noise.col [0, 0, 0, 1]class_member_masklabelskxyX[class_member_maskcore_samples_mask]plt.plot(xy[:, 0],xy[:, 1],o,markerfacecolortuple(col),markeredgecolork,markersize14,)xyX[class_member_mask~core_samples_mask]plt.plot(xy[:, -1],xy[:, 1],o,markerfacecolortuple(col),markeredgecolork,markersize6,)plt.title(fEstimated number of clusters: {n_clusters_})plt.show()7、OPTICS OPTICSOrdering Points To Identify the Clustering Structure是一种基于密度的聚类算法其能够自动确定簇的数量同时也可以发现任意形状的簇并能够处理噪声数据。OPTICS算法的核心思想是对于一个给定的数据点通过计算它到其它点的距离确定其在密度上的可达性从而构建一个基于密度的距离图。然后通过扫描该距离图自动确定簇的数量并对每个簇进行划分。 OPTICS算法的优点是能够自动确定簇的数量并能够处理任意形状的簇并能够有效地处理噪声数据。该算法还能够输出聚类层次结构便于分析和可视化。缺点是计算复杂度较高尤其是在处理大规模数据集时需要消耗大量的计算资源和存储空间。另外就是该算法对于密度差异较大的数据集可能会导致聚类效果不佳。 fromsklearn.clusterimportOPTICSimportmatplotlib.gridspecasgridspec#Build OPTICS model:clustOPTICS(min_samples3, min_cluster_size100, metriceuclidean)# Run the fitclust.fit(X)spacenp.arange(len(X))reachabilityclust.reachability_[clust.ordering_]OPTICS_labelsclust.labels_[clust.ordering_]labelsclust.labels_[clust.ordering_]plt.figure(figsize(10, 7))Ggridspec.GridSpec(2, 3)ax1plt.subplot(G[0, 0])ax2plt.subplot(G[1, 0])# Reachability plotcolors [g., r., b., y., c.]forklass, colorinzip(range(0, 5), colors):Xkspace[labelsklass]Rkreachability[labelsklass]ax1.plot(Xk, Rk, color, alpha0.3)ax1.plot(space[labels-1], reachability[labels-1], k., alpha0.3)ax1.set_ylabel(Reachability (epsilon distance))ax1.set_title(Reachability Plot)# OPTICScolors [g., r., b., y., c.]forklass, colorinzip(range(0, 5), colors):XkX[clust.labels_klass]ax2.plot(Xk[:, 0], Xk[:, 1], color, alpha0.3)ax2.plot(X[clust.labels_-1, 0], X[clust.labels_-1, 1], k, alpha0.1)ax2.set_title(Automatic Clustering\nOPTICS)plt.tight_layout()plt.show()8、BIRCH BIRCHBalanced Iterative Reducing and Clustering using Hierarchies是一种基于层次聚类的聚类算法其可以快速地处理大规模数据集并且对于任意形状的簇都有较好的效果。BIRCH算法的核心思想是通过对数据集进行分级聚类逐步减小数据规模最终得到簇结构。BIRCH算法采用一种类似于B树的结构称为CF树它可以快速地插入和删除子簇并且可以自动平衡从而确保簇的质量和效率。 BIRCH算法的优点是能够快速处理大规模数据集并且对于任意形状的簇都有较好的效果。该算法对于噪声数据和离群点也有较好的容错性。缺点是对于密度差异较大的数据集可能会导致聚类效果不佳对于高维数据集的效果也不如其他算法。 importmatplotlib.colorsascolorsfromsklearn.clusterimportBirch, MiniBatchKMeansfromtimeimporttimefromitertoolsimportcycle# Use all colors that matplotlib provides by default.colors_cycle(colors.cnames.keys())figplt.figure(figsize(12, 4))fig.subplots_adjust(left0.04, right0.98, bottom0.1, top0.9)# Compute clustering with BIRCH with and without the final clustering step# and plot.birch_models [Birch(threshold1.7, n_clustersNone),Birch(threshold1.7, n_clusters5),]final_step [without global clustering, with global clustering]forind, (birch_model, info) inenumerate(zip(birch_models, final_step)):ttime()birch_model.fit(X)print(BIRCH %s as the final step took %0.2f seconds% (info, (time() -t)))# Plot resultlabelsbirch_model.labels_centroidsbirch_model.subcluster_centers_n_clustersnp.unique(labels).sizeprint(n_clusters : %d%n_clusters)axfig.add_subplot(1, 3, ind1)forthis_centroid, k, colinzip(centroids, range(n_clusters), colors_):masklabelskax.scatter(X[mask, 0], X[mask, 1], cw, edgecolorcol, marker., alpha0.5)ifbirch_model.n_clustersisNone:ax.scatter(this_centroid[0], this_centroid[1], marker, ck, s25)ax.set_ylim([-12, 12])ax.set_xlim([-12, 12])ax.set_autoscaley_on(False)ax.set_title(BIRCH %s%info)plt.show()总结 上面就是我们常见的8个聚类算法我们对他们进行了简单的说明和比较并且用sklearn演示了如何使用在下一篇文章中我们将介绍聚类模型评价方法。 https://avoid.overfit.cn/post/e8ecff6dce514fbbbad9c6d6b882fe4e
http://www.yayakq.cn/news/3575/

相关文章:

  • ui设计与制作西安seo包年服务
  • 关于建立网站的计划四川省凉亭建设工程有限公司网站
  • 静态网页做的网站怎么发到网上个人网站设计论文一万字
  • 电子商务物流网站建设规划方案番禺公司网站建设
  • 网站建设案例代理商天津百度seo排名优化
  • 网站背景居中怎么做分析企业网站建设流程
  • 销售网站建设常遇到的问题小蝌蚪幸福宝入口导航
  • 手机网站设计费用网站托管方案
  • 教做网站群晖 wordpress 慢
  • 齐全的网站建设做微博这样的网站吗
  • 双流县规划建设局网站无锡网站制作一般多少钱
  • python可以做网站模板吗小影wordpress主题
  • 个人网站做淘宝客违规wordpress taxonomy
  • 如何进行网站的宣传和推广设计一个企业网站主页
  • 网站域名 空间申请山东做网站费用
  • 自学网站建设快吗网站开发php还是jsp
  • 三亚文明城市建设服务中心报名网站seo培训机构
  • 北京网站建设市场网站内容 优化
  • 上海网站建设企企业 cms
  • 建网站费用记账wordpress导航栏字体
  • 网站html模板下载青岛哪家公司做网站好
  • 个人可以建门户网站吗网站建设的安全性问题
  • 河南天元建设公司网站山东东营市经济怎么样
  • 主流网站建设做推送实用网站
  • 照片书哪家网站做的好付银行的网站建设费的会计科目
  • 制作平台网站费用搜索百度指数
  • wordpress网站中英文切换深圳网站建设 沙漠风
  • 富利建设集团有限公司网站广西桂林旅游攻略自由行攻略
  • 如何建立网站 个人朝阳网站建设开发
  • 精品简历模板网站标志设计图片及说明