类 FuzzyKMeansClusterer<T extends Clusterable>
java.lang.Object
org.hipparchus.clustering.Clusterer<T>
org.hipparchus.clustering.FuzzyKMeansClusterer<T>
- 类型参数:
-
T
- 要进行聚类的点的类型
模糊K均值聚类算法。
模糊K均值算法是经典K均值算法的一种变体,其主要区别在于单个数据点不会被唯一分配到单个簇中。相反,每个点i都有一组权重uij,表示对簇j的归属度。
该算法试图最小化目标函数:\[ J = \sum_{i=1}^C\sum_{k=1]{N} u_{i,k}^m d_{i,k}^2 \] 其中\(d_{i,k}\)是数据点i和簇中心k之间的距离。
该算法需要两个参数:
- k:簇的数量
- fuzziness:确定簇模糊程度的参数,较大的值导致更模糊的簇
额外的可选参数:
- maxIterations:最大迭代次数
- epsilon:收敛标准,默认为1e-3
K均值算法的模糊变体对于选择初始簇中心更加稳健。
-
构造器概要
构造器说明FuzzyKMeansClusterer
(int k, double fuzziness) 创建一个新的FuzzyKMeansClusterer实例。FuzzyKMeansClusterer
(int k, double fuzziness, int maxIterations, DistanceMeasure measure) 创建一个新的FuzzyKMeansClusterer实例。FuzzyKMeansClusterer
(int k, double fuzziness, int maxIterations, DistanceMeasure measure, double epsilon, RandomGenerator random) 创建一个新的FuzzyKMeansClusterer实例。 -
方法概要
修饰符和类型方法说明cluster
(Collection<T> dataPoints) 执行模糊K均值聚类分析。返回上一次调用cluster(Collection)
的结果中的簇列表。返回上一次调用cluster(Collection)
时使用的数据点的不可修改列表。double
返回此实例使用的收敛标准。double
返回此实例使用的模糊因子。int
getK()
返回此实例将使用的簇数。int
返回此实例将使用的最大迭代次数。返回nxk
成员矩阵,其中n
是数据点的数量,k
是簇的数量。double
获取目标函数的值。返回此实例将使用的随机生成器。从类继承的方法 org.hipparchus.clustering.Clusterer
distance, getDistanceMeasure
-
构造器详细资料
-
FuzzyKMeansClusterer
创建一个新的FuzzyKMeansClusterer实例。默认情况下将使用欧几里德距离作为距离度量。
- 参数:
-
k
- 将数据分成的簇的数量 -
fuzziness
- 模糊因子,必须大于1.0 - 抛出:
-
MathIllegalArgumentException
- 如果fuzziness <= 1.0
-
FuzzyKMeansClusterer
public FuzzyKMeansClusterer(int k, double fuzziness, int maxIterations, DistanceMeasure measure) throws MathIllegalArgumentException 创建一个新的FuzzyKMeansClusterer实例。- 参数:
-
k
- 将数据分成的簇的数量 -
fuzziness
- 模糊因子,必须大于1.0 -
maxIterations
- 运行算法的最大迭代次数。如果为负数,则不会设置最大值。 -
measure
- 要使用的距离度量 - 抛出:
-
MathIllegalArgumentException
- 如果fuzziness <= 1.0
-
FuzzyKMeansClusterer
public FuzzyKMeansClusterer(int k, double fuzziness, int maxIterations, DistanceMeasure measure, double epsilon, RandomGenerator random) throws MathIllegalArgumentException 创建一个新的FuzzyKMeansClusterer实例。- 参数:
-
k
- 将数据分成的簇的数量 -
fuzziness
- 模糊因子,必须大于1.0 -
maxIterations
- 运行算法的最大迭代次数。如果为负数,则不会设置最大值。 -
measure
- 要使用的距离度量 -
epsilon
- 收敛标准(默认为1e-3) -
random
- 用于选择初始中心的随机生成器 - 抛出:
-
MathIllegalArgumentException
- 如果fuzziness <= 1.0
-
-
方法详细资料
-
getK
public int getK()返回此实例将使用的簇数。- 返回:
- 簇的数量
-
getFuzziness
public double getFuzziness()返回此实例使用的模糊因子。- 返回:
- 模糊因子
-
getMaxIterations
public int getMaxIterations()返回此实例将使用的最大迭代次数。- 返回:
- 最大迭代次数,如果未设置最大值,则为-1
-
getEpsilon
public double getEpsilon()返回此实例使用的收敛标准。- 返回:
- 收敛标准
-
getRandomGenerator
返回此实例将使用的随机生成器。- 返回:
- 随机生成器
-
getMembershipMatrix
返回nxk
成员矩阵,其中n
是数据点的数量,k
是簇的数量。元素Ui,j表示数据点
i
到簇j
的成员值。- 返回:
- 成员矩阵
- 抛出:
-
MathIllegalStateException
- 如果之前未调用cluster(Collection)
-
getDataPoints
返回上一次调用cluster(Collection)
时使用的数据点的不可修改列表。- 返回:
-
数据点列表,如果之前未调用
cluster(Collection)
则为null
-
getClusters
返回上一次调用cluster(Collection)
的结果中的簇列表。- 返回:
-
簇列表,如果之前未调用
cluster(Collection)
则为null
-
getObjectiveFunctionValue
public double getObjectiveFunctionValue()获取目标函数的值。- 返回:
- 目标函数评估值作为双精度值
- 抛出:
-
MathIllegalStateException
- 如果之前未调用cluster(Collection)
-
cluster
public List<CentroidCluster<T>> cluster(Collection<T> dataPoints) throws MathIllegalArgumentException 执行模糊K均值聚类分析。- 指定者:
-
cluster
在类中Clusterer<T extends Clusterable>
- 参数:
-
dataPoints
- 要进行聚类的点 - 返回:
- 簇列表
- 抛出:
-
MathIllegalArgumentException
- 如果数据点为null或簇的数量大于数据点的数量
-