[PYTHON] Ich habe versucht, die Extreme-Lernmaschine zu implementieren

Was ist Extreme Learning Machine (ELM)?

ELM ist eine spezielle Form des Feed-Forward-Perzeptrons. Es hat eine verborgene Schicht, aber das Gewicht der verborgenen Schicht wird zufällig bestimmt, und das Gewicht der Ausgangsschicht wird unter Verwendung einer pseudo-inversen Matrix bestimmt. In Bezug auf das Bild ist die verborgene Ebene so, als würde man viele zufällige Merkmalsextraktoren erstellen und Merkmale in der Ausgabeebene auswählen.

ELM hat die folgenden Eigenschaften.

Implementierung

import numpy as np


class ExtremeLearningMachine(object):
    def __init__(self, n_unit, activation=None):
        self._activation = self._sig if activation is None else activation
        self._n_unit = n_unit

    @staticmethod
    def _sig(x):
        return 1. / (1 + np.exp(-x))

    @staticmethod
    def _add_bias(x):
        return np.hstack((x, np.ones((x.shape[0], 1))))

    def fit(self, X, y):
        self.W0 = np.random.random((X.shape[1], self._n_unit))
        z = self._add_bias(self._activation(X.dot(self.W0)))
        self.W1 = np.linalg.lstsq(z, y)[0]

    def transform(self, X):
        if not hasattr(self, 'W0'):
            raise UnboundLocalError('must fit before transform')
        z = self._add_bias(self._activation(X.dot(self.W0)))
        return z.dot(self.W1)

    def fit_transform(self, X, y):
        self.W0 = np.random.random((X.shape[1], self._n_unit))
        z = self._add_bias(self._activation(X.dot(self.W0)))
        self.W1 = np.linalg.lstsq(z, y)[0]
        return z.dot(self.W1)

Prüfung

Ich werde es vorerst mit Iris versuchen.

Methode

from sklearn import datasets

iris = datasets.load_iris()
ind = np.random.permutation(len(iris.data))

y = np.zeros((len(iris.target), 3))
y[np.arange(len(y)), iris.target] = 1

acc_train = []
acc_test = []
N = [5, 10, 15, 20, 30, 40, 80, 160]
for n in N:
    elm = ExtremeLearningMachine(n)
    elm.fit(iris.data[ind[:100]], y[ind[:100]])
    acc_train.append(np.average(np.argmax(elm.transform(iris.data[ind[:100]]), axis=1) == iris.target[ind[:100]]))
    acc_test.append(np.average(np.argmax(elm.transform(iris.data[ind[100:]]), axis=1) == iris.target[ind[100:]]))
plt.plot(N, acc_train, c='red', label='train')
plt.plot(N, acc_test, c='blue', label='test')
plt.legend(loc=1)
plt.savefig("result.png ")

Ergebnis

result.png

Fazit

Recommended Posts

Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Maschinelles Lernen
Ich habe maschinelles Lernen mit liblinear versucht
[Lernen stärken] Ich habe R2D3 (Keras-RL) implementiert / erklärt.
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Ich habe CycleGAN (1) implementiert.
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Ich habe ResNet implementiert!
Beispiel für maschinelles Lernen
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Ich habe versucht, tief zu lernen
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Was ich über KI / maschinelles Lernen mit Python gelernt habe (1)
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Was ich über KI / maschinelles Lernen mit Python gelernt habe (3)
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Was ich über KI / maschinelles Lernen mit Python gelernt habe (2)
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Ich habe mit Python Clustering & Dimension Compression & Visualization mit maschinellem Lernen begonnen
Anfänger des maschinellen Lernens versuchten RBM
Ich habe die automatische maschinelle Lernbibliothek auto-sklearn auf centos7 installiert
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Was ich über KI / maschinelles Lernen mit Python gelernt habe (4)
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Ich habe versucht, VQE mit Blueqat zu implementieren
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Ich habe versucht, durch maschinelles Lernen Sätze in den XX-Stil umzuwandeln
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Maschinelles Lernen: Überwacht - Zufälliger Wald
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch