3 Stimmen

Offene Quellcode (oder anderweitige) Versionen von Matlab-Toolboxen

Ich habe ein Projekt in einem Kurs an der Universität, das verschiedene Matlab-Funktionen erfordert. Meine Version von Matlab wird von meinem Arbeitsplatz bereitgestellt und verfügt nicht über einige der für das Projekt erforderlichen Toolboxes. Gibt es irgendwo ein Repository solcher Implementierungen? Ich konnte nichts Relevantes finden, als ich gegoogelt habe.

Obwohl meine Frage allgemein ist, liste ich die Funktionen auf, die ich benötige und nicht finden kann, da meine Frage auch spezifisch ist:

  • knnclassify - eine Implementierung von K-nearest-Neighbor
  • svmclassify - eine Implementierung von Support-Vector-Machines
  • svmtrain - Teil der SVM-Implementierung
  • mapstd - normalisiert eine Matrix auf einen Mittelwert von 0 und eine Standardabweichung von 1

Als Alternative erwäge ich die Arbeit mit Python, Numpy und Pylab. Gibt es in Pylab Toolboxes, die diesen Matlab-Funktionen entsprechen?

3voto

John R. Strohm Punkte 7404

Sie sollten in Erwägung ziehen, Ihre eigenen Kopien von Matlab und den benötigten Toolboxes anzuschaffen. Mathworks bietet SEHR attraktive Preise für Universitätsstudenten.

GNU Octave ist das kostenlose Matlab-Variante. Ich weiß nicht, wie gut die Toolboxes abgedeckt sind.

Alternativ, wenn die Aufgabe diese erfordert, hat die Schule sie wahrscheinlich auf einigen Laborrechnern, und Sie könnten möglicherweise remote zugreifen, über eine Art Xterm. Fragen Sie den Tutor.

3voto

gnovice Punkte 124264

Der erste Ort, den ich überprüfen würde, ist der MathWorks File Exchange. Dort gibt es über 10.000 Code-Einreichungen von MATLAB-Benutzern, und Sie können möglicherweise Alternativen zu den verschiedenen MATLAB-Toolboxen finden. Hier ist etwas, das hilfreich sein könnte:

Eine weitere Alternative für eine einfachere Funktion wie MAPSTD besteht darin, zu versuchen, eine abgespeckte Version selbst zu implementieren. Hier ist ein Beispielcode, der das grundlegende Verhalten von MAPSTD repliziert:

M = magic(5);               %# Erstelle eine Beispielmatrix
rowMeans = mean(M,2);       %# Berechne die Zeilenmittelwerte
rowStds = std(M,0,2);       %# Berechne die Zeilenstandardabweichungen
rowStds(rowStds == 0) = 1;  %# Setze Standardabweichungen von 0 auf 1
for i = 1:size(M,1)
  M(i,:) = (M(i,:)-rowMeans(i))./rowStds(i);  %# Normalisiere jede Zeile von M
end
%# Oder Sie könnten die Schleife vermeiden mit einer vektorisierten Lösung...
M = bsxfun(@rdivide,bsxfun(@minus,M,rowMeans),rowStds);

Dies deckt offensichtlich nicht alle Optionen in MAPSTD ab, erfasst aber die grundlegende Funktionalität. Ich kann bestätigen, dass der obige Code dasselbe Ergebnis wie mapstd(M) liefert.

2voto

Dirk Eddelbuettel Punkte 345316

Sie könnten sich auch R anschauen, das in vielen datengetriebenen Bereichen sehr stark ist, einschließlich Maschinelles Lernen.

Ebenfalls erwähnenswert ist das MLOSS Verzeichnis für Open-Source Maschinelles Lernen Software.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X