我可以通过KMeans
轻松计算聚类成员:
open System
open System.IO
open Utils
open Accord
open Accord.Math
open Accord.MachineLearning
let vals = [|
[|1.0; 2.0; 3.0; 2.0|]
[|1.1; 1.9; 3.1; 4.0|]
[|2.0; 3.0; 4.0; 4.0|]
[|3.0; 3.1; 2.0; 3.0|]
[|2.0; 4.0; 3.0; 6.0|]
[|1.0; 5.0; 5.0; 7.0|]
[|4.0; 3.0; 6.0; 8.0|]
[|5.0; 4.0; 3.0; 6.0|]
[|6.0; 4.0; 8.0; 7.0|]
[|5.0; 6.0; 5.0; 9.0|]
[|4.0; 2.0; 7.0; 8.0|]
[|8.0; 9.0; 3.1; 2.2|]
[|8.0; 9.0; 2.0; 2.0|]
[|10.0; 2.0; 3.0; 2.0|]
[|10.1; 1.9; 3.1; 4.0|]
[|20.0; 3.0; 4.0; 4.0|]
[|22.0; 7.0; 2.0; 3.0|]
[|21.0; 4.0; 3.0; 6.0|]
|]
let kmeans = new KMeans 5
let clusterModel = kmeans.Learn vals
let clusters = clusterModel.Decide vals
我能用标准的
KMeans
算法计算部分成员吗?一位同事建议使用聚类成员的平均值和方差来确定比例成员,并且今天我一直在研究模糊集及其在F#
中的实现。例如,这里是Accord.net实现模糊集的文档。我可以翻译/运行F#
的示例,但乍一看,我没有看到一种简单的方法来将Kmeans
运行的数据适配到分配部分成员的格式中。问题:
- 我如何使用聚类成员的平均值/方差计算部分成员?
- 是否有一种简单的方法使用Accord.net库中的
KMeans
聚类计算部分成员? - Accord.net中的KMeans算法易于实现;我应该花时间尝试学习这种聚类/成员的方法以适应我的问题,而不是尝试迫使Kmeans聚类适应我的需求吗?