Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用K-Means基于不同时间的不同读数对节点进行聚类_Python_Matlab_Machine Learning_Cluster Analysis_K Means - Fatal编程技术网

Python 使用K-Means基于不同时间的不同读数对节点进行聚类

Python 使用K-Means基于不同时间的不同读数对节点进行聚类,python,matlab,machine-learning,cluster-analysis,k-means,Python,Matlab,Machine Learning,Cluster Analysis,K Means,我想根据一个数据集对节点进行聚类,该数据集包含每个节点在不同时间的不同读数 以下是我的数据示例: 1.0000 21.0860 46.1968 2.3000 2.3568 1.0000 21.0762 46.0326 0.9200 2.3568 1.0000 21.0664 45.9669 0.9200 2.3568 2.0000 89.5488 29.2581 11.9600 1.9537 2.0000 19.5

我想根据一个数据集对节点进行聚类,该数据集包含每个节点在不同时间的不同读数

以下是我的数据示例:

1.0000   21.0860   46.1968    2.3000    2.3568
1.0000   21.0762   46.0326    0.9200    2.3568
1.0000   21.0664   45.9669    0.9200    2.3568
2.0000   89.5488   29.2581   11.9600    1.9537
2.0000   19.5670   39.6878  121.4400    2.6753
2.0000   19.5376   39.7557  121.4400    2.6753
2.0000   19.4788   39.6878  121.4400    2.6633
其中,第一列中的1表示节点1的数据,2表示与节点2相关的数据

当节点1的所有数据点落在同一个集群中时,如何强制K-Means对数据进行集群,以此类推

注意目标是集群节点,而不是数据

这是我在Matlab中的代码,在这里我没有考虑节点标签并简单地聚集了实际上不需要的数据:

filename='data.txt';
delimiterIn='';
headerlinesIn=1;
A=导入数据(文件名,分隔符);
数据=A.数据;
DATA_REAL=A.DATA(1:n,3:end);
温度=实际数据(:,1);
湿度=实际数据(:,2);
光=数据实值(:,3);
电压=实际数据(:,4);
%%二维
%2D%%的K-均值算法
[KM_R2,C_R2,sumd_R2,D_R2]=MY_KMEANS(DATA_REAL(:,1:2),K);
图形
绘图(温度、湿度、r.)
等等
网格化
_簇中的节点_=0(1,K);
对于j=1:K
_簇中的节点_(j)=长度(查找(KM_R2==j));
结束
对于i=1:长度(数据_实值)
文本(温度(i)、湿度(i)、num2str(KM_R2(i))、‘背景色’、cc(KM_R2(i),:);
结束
标题([“K-means中的簇数:”,num2str(K)])
xlabel(‘温度’)

ylabel(‘湿度’)
我建议您浏览Python的SciKit包教程。这有很多很好的ML工具,包括K-Means和形心函数。NumPy将帮助您根据数据建立一个好的矩阵,并根据您的喜好对其进行操作

一般来说,你会想

  • 找到每个节点的质心,将数据折叠到大约100行
  • 使用SciKit k-means聚类函数,不考虑第一列(节点编号);您不希望节点ID成为距离计算的一部分

  • 有一种叫做不确定k-均值的变体,你可以试试


    理论上,假设每个节点的所有不同读数的可能性相同(也可以使用权重)。然后你为每个节点画一个随机读数来测量距离,并经常重复这个过程(理论上,我相信,如果你无限频繁地这样做,这些方法会直接计算出声音发生了什么)。这样,您就可以像常规的k-means一样对节点进行集群。

    它是Python还是MATLAB?请出示你的密码。如果数据上已经有了标签,那么为什么还要对数据进行集群呢?此外,截图也没有什么帮助。从截图中复制和粘贴数据非常困难。我通过删除截图来编辑问题。虽然我有数据标签,但我想对节点进行聚类,因为有将近100个节点,我想有将近5个集群。在节点之间需要什么权重?有20个数据点的节点是否比只有三个数据点的节点更重要?如果没有,那么您的第一个任务是预处理数据,用其质心替换每个节点。然后简单地聚集质心。另外,将节点编号更改为字符串,并将该列从距离公式中删除。@删减否权重不重要。我的想法和你解释的一样。然而,我正在寻找任何其他的想法或算法,可以做自己的一切。我的意思是找到一个标签的质心,然后对节点进行聚类。