资源简介
仿照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;
/**
* 定义误差精度
*/
相关资源
- Java编写的k-means文本聚类算法
- weka生成arff文件的简单代码
- weka开发java版jar包和源码
- Weka同步课本-Data_Mining
- weka.jar和weka.zip源码 API
- Clique聚类算法Java版
- weka 3-8全部源码
- weka 3.8 jar 包
- weka3.4.13
- weka.jar libsvm.jar wlsvm.jar
- 信息检索中文本聚类的实现
- Java中通过HanLP实现文本分词、提取关
- Weka 3.7.9 windows操作系统
- nlpir汉语分词系统
- weka3-8-3 64位安装包
- 基于WEKA的高校图书馆流通数据的数据
- 数据挖掘机器学习课程报告及weka源码
- weka软件安装包
- weka 稳定版3-6-13 (包括32位和64位)
- 机器学习工具weka
- weka jar包
- Weka 中文版 v0.3 发布 基于weka 3.7.12 x
- 一份绝对完整的weka数据集与配套教材
- Java实现k_means算法进行聚类分析
- WEKA快速入门含银行数据集bank-data及天
- K-means聚类算法java实现有界面
- 基于kmeans聚类的协同过滤推荐算法包
- 使用weka非常有用的libsvm.jar 和wlsvm.j
- java 利用Kmeans的jar包进行聚类---代码
- JAVA编写的基于文本相似度匹配的文本
评论
共有 条评论