资源简介
仿照weka自带的简单K均值聚类算法,实现的一个简单的模糊C均值聚类算法。
代码片段和文件信息
/*
* SimpleFuzzyCMeans.java
*
* 本算法是在weka自带的SimpleKMeans算法的基础上修改而成的
* 在Eclipse平台下运行实现。
*
* 本算法保留了SimpleKMeans算法的基本构架,
* 对其算法的核心代码进行了修改,
* 将核心代码换为模糊C均值聚类算法。
*
* SimpleKMeans算法支持Euclidean和Manhattan距离,
* 本算法出于简便,只支持Euclidean距离。
*
* 算法关于数据的预处理以及程序结果的输出采用SimpleKMeans算法的代码,
* 并进行了少量的修改(主要是参数项的设置)。
*
* 程序运行前先修改weka.gui包中的文件GenericobjectEditor.pros,
* 在其语句“# Lists the Clusterers I want to choose from“下
* 加入语句“weka.clusterers.SimpleFuzzyCMeans\“,然后保存。
*
* 运行weka.gui包中的文件GUIChooser.java,
* 便可打开weka的图形界面,然后选择数据,
* 在其聚类算法模块下选择SimpleFuzzyCMeans,
* 对算法的参数进行适当的设置,
* 即可运行模糊C均值聚类算法。
*
*/
package weka.clusterers;
import weka.classifiers.rules.DecisionTableHashKey;
import weka.core.Attribute;
import weka.core.Capabilities;
import weka.core.DistanceFunction;
import weka.core.EuclideanDistance;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.Option;
import weka.core.Utils;
import weka.core.WeightedInstancesHandler;
import weka.core.Capabilities.Capability;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.ReplaceMissingValues;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Random;
import java.util.Vector;
public class SimpleFuzzyCMeans extends RandomizableClusterer implements
NumberOfClustersRequestable WeightedInstancesHandler {
/**
* for serialization
*/
static final long serialVersionUID = 3235809600124455123L;
/**
* replace missing values in training instances
*/
private ReplaceMissingValues m_ReplaceMissingFilter;
/**
* number of clusters to generate
*/
private int m_NumClusters = 2;
/**
* 实例数据
*/
private Instances instances;
/**
* holds the cluster centroids
*/
private Instances m_ClusterCentroids;
/**
* Holds the standard deviations of the numeric attributes in each cluster
*/
private Instances m_ClusterStdDevs;
/**
* For each cluster holds the frequency counts for the values of each
* nominal attribute
*/
private int[][][] m_ClusterNominalCounts;
private int[][] m_ClusterMissingCounts;
/**
* Stats on the full data set for comparison purposes In case the attribute
* is numeric the value is the mean if is being used the Euclidian distance
* and if the attribute is nominal then it‘s mode is saved
*/
private double[] m_FullMeansOrModes;
private double[] m_FullStdDevs;
private int[][] m_FullNominalCounts;
private int[] m_FullMissingCounts;
/**
* Display standard deviations for numeric atts
*/
private boolean m_displayStdDevs = true;
/**
* Replace missing values globally?
*/
private boolean m_dontReplaceMissing = false;
/**
* The number of instances in each cluster
*/
private int[] m_ClusterSizes;
/**
* 隶属度矩阵
*/
private double[][] membershipMatrix;
/**
* 模糊系数
*/
private double fuzzyCoefficient = (double) 2.0;
/**
* 定义误差精度
*/
相关资源
- 使用weka非常有用的libsvm.jar 和wlsvm.j
- java 利用Kmeans的jar包进行聚类---代码
- JAVA编写的基于文本相似度匹配的文本
- CluStream流数据聚类 java 代码和jar包
- 局部加权朴素贝叶斯
- k-means聚类使用数据集:iris
- WEKA运行libsvm的wlsvm.jar
- WEKA运行libsvm的libsvm.jar
- 完整都的java聚类算法包括界面
- 多维k-means聚类算法java实现,导入直接
- K-means聚类算法JAVA程序实现
- LIBSVM工具包可以在weka中使用并被JAV
- DBSCAN聚类算法java实现
- 用java实现的基于网格的聚类算法
- kmeans中文文本聚类java源码包括对文本
- kmeans聚类java实现附测试数据及结果
- Java实现的KMeans均值聚类算法
- kmeans算法文本聚类java源码分词,TF/
- 聚类Kmeans和Kmedoids算法
- 层次聚类算法的java实现
- JAVA实现层次聚类算法
- 一种聚类算法的改进算法Canopy算法
评论
共有 条评论