2010-05-26 6 views
33

ich für eine Bibliothek suchen, die idealerweise die folgenden Merkmale aufweisen:Welche Maschine Bibliothek Lernen zu verwenden

  • hierarchischen Clustering von mehrdimensionalen Daten implementiert (im Idealfall auf similiarity oder Distanzmatrix)
  • implementiert Support-Vektor Maschinen
  • ist in C++
  • etwas dokumentiert ist (dieses erscheint am schwersten zu sein)

Ich möchte, dass dies in C++ ist, da ich mich mit dieser Sprache am wohlsten fühle, aber ich werde auch jede andere Sprache verwenden, wenn die Bibliothek es wert ist. Ich habe gegoogelt und einige gefunden, aber ich habe nicht wirklich die Zeit, sie alle auszuprobieren, also möchte ich hören, was andere Leute für Erfahrungen hatten. Bitte antworten Sie nur, wenn Sie etwas Erfahrung mit der von Ihnen empfohlenen Bibliothek haben.

P.S .: Ich könnte auch verschiedene Bibliotheken für das Clustering und die SVM verwenden.

+0

https://github.com/josephmisiti/awesome-machine-learning –

Antwort

4

Ok, aus Gründen der Vollständigkeit werde ich mit dem schreiben, was ich am Ende ging. Ich verwende jetzt scipy-cluster für den Clustering-Teil. Es ist die vielseitigste Implementierung, die ich bisher gefunden habe. Ich denke, ich werde mit libSVM gehen (es hat jetzt eine Python-Schnittstelle) für den SVM-Teil. Ich gehe mit Python, weil es wirklich keine passende Implementierung von hierarchischem Clustering in C++ gab (die C Clustering Library ist auf Microarrays spezialisiert und unterstützt keine mehrdimensionalen Daten).

9

WEKA (http://www.cs.waikato.ac.nz/ml/weka/) ist eine ausgezeichnete Open-Source-Bibliothek zum maschinellen Lernen, die die meisten Ihrer Anforderungen außer C++ erfüllt - sie ist in Java geschrieben. Es ist sehr gut dokumentiert, implementiert Support-Vektor-Maschinen und Clustering und ich habe sehr gute Erfahrungen damit gemacht.

+11

Die SVM-Implementierung in Weka wird von libsvm-Autoren durchgeführt, nicht vom Weka-Team. Auch hat weka keinerlei Effizienz in seinem Design. Weka eignet sich nur zum Spielen mit kleinen Datensätzen. –

15

Es gibt nur ein paar ML-Bibliotheken, die ich genug verwendet habe, damit ich sie bequem empfehle; dlib ml ist sicherlich einer von ihnen.

Sourceforge herunterladen here; und bleeding-edge Check-out:

hg clone http://hg.code.sf.net/p/dclib/code dclib-code 

Die ursprüngliche Bibliothek Schöpfer und Maintainer ist Davis König.

Ihre Wunschliste im Vergleich zu den entsprechenden DLIB Merkmale:

  • gute Dokumentation: kostenlos, Open Source bei einer relativ kleinen Gruppe von Benutzern/Entwickler gerichtet Bibliotheken, dies ist wahrscheinlich so gut wie es geht ; abgesehen von den üblichen Dokumenten, verfeinert während der Fünf-Jahres-Entwicklung, gibt es eine häufig aktualisierte Intro to dlib, ein (wenig Verkehr) forum; und eine große Menge von ausgezeichneten Beispielen (einschließlich mindestens eines für SVM).

  • C++: 100% in C++, soweit ich weiß.

  • Unterstützung-Vektor-Maschine Algorithmus: yep; Tatsächlich standen die SVM-Module im Mittelpunkt der jüngsten Aktualisierungen dieser Bibliothek.

  • Hierarchisches Clustering Algorithmus: nicht out of the box; dort ist jedoch gepackten Code für k-bedeutet Clustering.Offensichtlich sind die Ergebnisse von jeder Technik sehr unterschiedlich, aber die Berechnung der Ähnlichkeitsmetrik und die anschließende rekursive/iterative Partitionierung Schritt sind im Herzen von beiden - mit anderen Worten, die Berechnungs-Engine für hierarchische Clustering ist alles da . Um das vorhandene Clustering-Modul für HC anzupassen, wird mehr als eine paar Zeilen Code zu nehmen, aber es ist auch kein großes Unterfangen angesichts der Sie arbeiten fast auf der Datenpräsentation Ebene .

dlib ml hat ein paar zusätzliche Punkte, um es zu empfehlen. Es ist eine ausgereifte Bibliothek (es ist Version 17.x jetzt, Version 1.x wurde irgendwann Ende 2005 veröffentlicht, glaube ich), aber es bleibt auch in aktiver Entwicklung, wie durch die Repo-Logs belegt ist (das letzte Update, 17.27, war 17 Mai 2010) und der letzte Einsatz (23. Mai 2010). Darüber hinaus umfasst es auch einige andere ML-Techniken (z. B. Bayes'sche Netzwerke, Kernel-Methoden usw.). Und drittens hat dllib ml ausgezeichnete "Support" -Bibliotheken für die Matrixberechnung und -optimierung - beides grundlegende Bausteine ​​vieler ML-Techniken.

In der Quelle habe ich festgestellt, dass dlib ml unter BSL (Boost?) Lizenziert ist, die eine Open Source-Lizenz ist, obwohl ich nichts anderes über diese Art von Lizenz weiß.

+0

Sie können auch die [MLPACK C++ - Bibliothek] (http://mlpack.org) betrachten, die viele maschinelle Lernalgorithmen enthält. – mtall

+0

@mtall - MLPACK Dosis scheinen nicht SVM im Abschnitt "Methoden in mlpack" aufgeführt . http://mlpack.org/doxygen.php – Robert

0

Ein paar zusätzliche Wahlmöglichkeiten:

Conditional Random Field (CRF): http://www.chokkan.org/software/crfsuite/

Hidden-Markov-Modelle (HMM): http://www.cs.au.dk/~asand/?page_id=152

Für eine allgemeine Bibliothek ML, betrachten Fackel (Version 7, zum Zeitpunkt des Schreibens): https://github.com/andresy/torch

Das Orange System ist implem in C++ enthalten und kann als eine Bibliothek verwendet werden, aber konzentriert sich auf die Bereitstellung seiner Funktionalität sowohl als Python-Wrapper für flexibles Scripting als auch visuelle Programmierung: