GVKun编程网logo

如何给sns.clustermap一个预先计算的距离矩阵?(距离矩阵tsp代码)

14

如果您对如何给sns.clustermap一个预先计算的距离矩阵?和距离矩阵tsp代码感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何给sns.clustermap一个预先计算的距离矩阵?的

如果您对如何给sns.clustermap一个预先计算的距离矩阵?距离矩阵tsp代码感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何给sns.clustermap一个预先计算的距离矩阵?的各种细节,并对距离矩阵tsp代码进行深入的分析,此外还有关于ADClusterMapView、android – 使用ClusterManager时如何在Map上更新标记、ElasticSearch + Kibana-使用预先计算的哈希值进行唯一计数、Google Maps ClusterManager Cluster 在应用程序启动时不显示的实用技巧。

本文目录一览:

如何给sns.clustermap一个预先计算的距离矩阵?(距离矩阵tsp代码)

如何给sns.clustermap一个预先计算的距离矩阵?(距离矩阵tsp代码)

通常当我做树状图和热图时,我使用距离矩阵并做很多SciPy事情。我想尝试一下,Seaborn但是Seaborn想要我的数据是矩形的(行=样本,cols
=属性,而不是距离矩阵)?

我本质上想seaborn用作后端来计算我的树状图并将其附加到我的热图上。这可能吗?如果没有,将来是否可以提供此功能。

也许我可以调整一些参数,以便可以使用距离矩阵而不是矩形矩阵?

这是用法:

seaborn.clustermap¶
seaborn.clustermap(data,pivot_kws=None,method='average',metric='euclidean',z_score=None,standard_scale=None,figsize=None,cbar_kws=None,row_cluster=True,col_cluster=True,row_linkage=None,col_linkage=None,row_colors=None,col_colors=None,mask=None,**kwargs)

我的代码如下:

from sklearn.datasets import load_iris
iris = load_iris()
X,y = iris.data,iris.target
DF = pd.DataFrame(X,index = ["iris_%d" % (i) for i in range(X.shape[0])],columns = iris.feature_names)

在此处输入图片说明

我认为下面的方法不正确,因为我给了它一个预先计算的距离矩阵,而不是它要求的矩形数据矩阵。没有关于如何使用相关性/距离矩阵的示例,clustermap但是有https://stanford.edu/~mwaskom/software/seaborn/examples/network_correlations.html的示例,但是排序不是与普通sns.heatmap函数一起进行的。

DF_corr = DF.T.corr()
DF_dism = 1 - DF_corr
sns.clustermap(DF_dism)

在此处输入图片说明

ADClusterMapView

ADClusterMapView

ADClusterMapView 介绍

ADClusterMapView 是 MKMapView 的子类,用来显示地图注解,当你在一个地图上有多个注解要显示的时候很有用。

ADClusterMapView 官网

https://github.com/applidium/ADClusterMapView

android – 使用ClusterManager时如何在Map上更新标记

android – 使用ClusterManager时如何在Map上更新标记

我试图用服务器中的新数据更新我的地图,但我无法弄清楚如何从地图中删除旧项目(标记和集群 – 使用ClusterManager)( – 在我看来,我只能在ClusterManager中添加.

我有broadcastReceiver,当有新数据时它会获得意图.我正在尝试这样的事情:(但它在“… getMarkers().clear();”上给了我UnsupportedOperationException.“

private broadcastReceiver myRefrestMapbroadcastReceiver = new broadcastReceiver() {
    @Override
    public void onReceive(Context context,Intent intent) {
        Log.d(TAG,"onReceive");
        mClusterManager.clearItems();
        mClusterManager.getMarkerCollection().getMarkers().clear();
        mClusterManager.getClusterMarkerCollection().getMarkers().clear();
        mClusterManager.addItems(LocationGetter.getReports());
    }
};

我添加的数据仅用于此功能.

java.util.Collection<Marker> userCollection = mClusterManager.getMarkerCollection().getMarkers();
            ArrayList<Marker> userList = new ArrayList<Marker>(userCollection);
            // Now is userList empty
            for(Marker marker: userList){
                marker.remove();
            }

            java.util.Collection<Marker> userCollection2 = mClusterManager.getClusterMarkerCollection().getMarkers();
            ArrayList<Marker> userList2 = new ArrayList<Marker>(userCollection2);
            // Now is userList2 empty
            for(Marker marker: userList2){
                marker.remove();
            }

            mClusterManager.addItems(LocationGetter.getReports());

解决方法

根据ClusterManager documentation,我们可以使用mClusterManager.cluster();

This method Force a re-cluster. You may want to call this after adding new item(s).

ElasticSearch + Kibana-使用预先计算的哈希值进行唯一计数

ElasticSearch + Kibana-使用预先计算的哈希值进行唯一计数

更新 :已添加

我想对我的ElasticSearch集群执行唯一计数。该集群包含约5000万条记录。

我尝试了以下方法:

第一种方法

在本节中提到:

预计算哈希通常仅在非常大和/或高基数的字段上有用,因为它可以节省CPU和内存。

第二种方法

在本节中提到:

除非您将Elasticsearch配置为使用doc_values作为字段数据格式,否则使用聚合和构面对堆空间的要求 非常 高。

我的属性映射

"my_prop": {  "index": "not_analyzed",  "fielddata": {    "format": "doc_values"  },  "doc_values": true,  "type": "string",  "fields": {    "hash": {      "type": "murmur3"    }  }}

问题

当我在Kibana的my_prop.hash上使用唯一计数时,收到以下错误:

Data too large, data for [my_prop.hash] would be larger than limit

ElasticSearch的堆大小为2g。对于具有400万条记录的单个索引,上述操作也将失败。

我的问题

  1. 我的配置中缺少什么吗?
  2. 我应该增加我的机器吗?这似乎不是可扩展的解决方案。

ElasticSearch查询

由Kibana产生:http://pastebin.com/hf1yNLhE

ElasticSearch堆栈跟踪

http://pastebin.com/BFTYUsVg

答案1

小编典典

该错误表明您没有足够的内存(更具体地,用于的内存fielddata)来存储来自中的所有值hash,因此您需要从堆中取出它们并将它们放在磁盘上,这意味着使用doc_values

既然你已经在使用doc_valuesmy_prop,我建议做同样的my_prop.hash(而且,不,从主字段中的设置不是由子域继承)"hash":{ "type": "murmur3", "index" : "no", "doc_values" : true }

Google Maps ClusterManager Cluster 在应用程序启动时不显示

Google Maps ClusterManager Cluster 在应用程序启动时不显示

一个建议是设置一个侦听器,在加载所有集群项目/标记时调用该侦听器,然后稍微更改地图缩放级别。反过来,所有集群项目将显示在地图上。

zoom = googleMap.getCameraPosition().zoom;
latLng = googleMap.getCameraPosition().target;
newZoom = zoom + 0.0001f;
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,newZoom));

有效!

关于如何给sns.clustermap一个预先计算的距离矩阵?距离矩阵tsp代码的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于ADClusterMapView、android – 使用ClusterManager时如何在Map上更新标记、ElasticSearch + Kibana-使用预先计算的哈希值进行唯一计数、Google Maps ClusterManager Cluster 在应用程序启动时不显示的相关知识,请在本站寻找。

本文标签: