标签: fuzzy-c-means

什么是"k均值"和"模糊c均值"目标函数之间的区别?

我试图看看两者的表现是否可以根据他们的目标函数进行比较?

cluster-analysis k-means fuzzy-c-means

28
推荐指数
3
解决办法
3万
查看次数

聚类和贝叶斯分类器Matlab

因此,我正处于下一步的交叉路上,我开始学习并在复杂的数据集上应用一些机器学习算法,现在我已经完成了这项工作.我的计划从一开始就是结合两种可能的分类器,试图建立一个多分类系统.

但这里是我被困的地方.我选择聚类算法(模糊C均值)(在学习一些样本K均值之后)和朴素贝叶斯作为MCS(多分类系统)的两个候选者.

我可以独立使用它们来对数据进行分类,但我正在努力以有意义的方式将两者结合起来.

例如,模糊聚类几乎捕获所有"蓝精灵"攻击,除了通常一个,我不知道为什么它没有抓住这个奇怪的球,但我所知道的是它没有.其中一个集群将由smurf攻击占主导地位,通常我会在其他集群中找到一个蓝精灵.如果我在所有不同的攻击类型(Smurf,普通,海王星......等)上训练贝叶斯分类器并将其应用于其余的群集以试图找到最后一个,那么这就是我遇到问题场景的地方剩下的蓝精灵会有很高的误报率.

我不确定如何继续,我不想将其他攻击带出训练集,但我只想训练贝叶斯分类器来发现"蓝精灵"攻击.目前,它经过培训可以尝试发现所有内容,在这个过程中,我认为(不确定)精确度会下降.

所以这是我在使用朴素贝叶斯分类器时的问题,你如何才能让它只查找smurf并将其他所有内容归类为"其他".

 rows = 1000;
 columns = 6;

 indX = randperm( size(fulldata,1) );
 indX = indX(1:rows)';

 data = fulldata(indX, indY)

 indX1 = randperm( size(fulldata,1) );
 indX1 = indX1(1:rows)';


%% apply normalization method to every cell
%data = zscore(data);

training_data = data;
target_class = labels(indX,:)

class  = classify(test_data,training_data, target_class, 'diaglinear')
confusionmat(target_class,class)
Run Code Online (Sandbox Code Playgroud)

我在想的是手动将target_class所有正常的流量和不是蓝精灵的攻击转换为其他流量.然后我已经知道FCM正确地对除了一个smurf攻击之外的所有类别进行分类,我只需要在剩余的集群上使用朴素的贝叶斯分类器.

例如:

群集1 = 500个smurf攻击(重复此步骤可能会将1000个样本中的"大多数"smurf攻击转移到不同的群集中,因此我必须检查或迭代群集中的最大大小,一旦找到我可以将其从朴素的贝叶斯分类器阶段)

然后我在每个剩余的集群上测试分类器(不知道如何在matlab中进行循环等)所以此刻我必须在处理过程中手动选择它们.

    clusters = 4;
    CM = colormap(jet(clusters));
    options(1) = 12.0;
    options(2) = …
Run Code Online (Sandbox Code Playgroud)

matlab classification cluster-analysis bayesian fuzzy-c-means

9
推荐指数
1
解决办法
2466
查看次数

如何在R中计算模糊性能指数和归一化分类熵

我正在使用 package.json 运行模糊 C 均值聚类e1071。我想根据以下公式给出的模糊性能指数(FPI)(模糊程度)和归一化分类熵(NCE)(特定类别的混乱程度)来确定最佳簇数

\n

在此输入图像描述

\n

其中 c 是聚类数,n 是观测值数,\xce\xbc ik是模糊隶属度,log a是自然对数。

\n

我正在使用以下代码

\n
library(e1071)\nx <- rbind(matrix(rnorm(100,sd=0.3),ncol=2),\n         matrix(rnorm(100,mean=1,sd=0.3),ncol=2))\ncl <- cmeans(x,2,20,verbose=TRUE,method="cmeans")\ncl$membership\n
Run Code Online (Sandbox Code Playgroud)\n

我已经能够提取 \xce\xbc ik即模糊隶属度。现在,cmeans必须针对不同数量的簇(例如 2 到 6),并且必须计算 FPI 和 NCE 以获得如下图所示的图

\n

在此输入图像描述

\n

在R中如何实现呢?

\n

编辑

\n

iris我已使用以下代码尝试了@nya为数据集提供的代码

\n
df <- scale(iris[-5])\n\nFPI <- function(cmem){\n  c <- ncol(cmem)\n  n <- nrow(cmem)\n  \n  1 - (c / (c - 1)) * (1 - sum(cmem^2) / n)\n}\n\nNCE <- function(cmem){\n  c <- ncol(cmem)\n  n …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis fuzzy-c-means

3
推荐指数
1
解决办法
479
查看次数