Je peux calculer l'appartenance à une grappe avec KMeans
assez facilement :
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
Puis-je calculer l'appartenance partielle à l'aide de la norme KMeans
algorithme ? Un collègue a suggéré d'utiliser la moyenne et la variance des membres de la grappe pour déterminer l'appartenance proportionnelle et aujourd'hui, je me suis penché sur les ensembles flous et leurs implémentations pour le traitement des données. F#
. Par exemple, Voici de la documentation sur l'implémentation d'Accord.net pour les ensembles flous. Je peux traduire/exécuter l'exemple pour F#
mais à première vue, je ne vois pas de moyen facile d'obtenir les données de mon Kmeans
ci-dessus pour s'adapter au format d'attribution de l'affiliation partielle.
Questions :
-
Comment utiliser la moyenne/variance des membres d'une grappe pour calculer l'appartenance partielle ?
-
Existe-t-il un moyen simple de calculer l'appartenance partielle avec
KMeans
avec la bibliothèque Accord.net ? -
L'algorithme KMeans d'Accord.net est simple à mettre en œuvre ; devrais-je passer du temps à essayer d'apprendre cette méthode de regroupement/appartenance pour l'adapter à mon problème plutôt que d'essayer de forcer le regroupement Kmeans à répondre à mes besoins ?