Als JavaScript-Entwickler ist der Einstieg in maschinelles Lernen nicht so entmutigend, wie es scheint. Obwohl es technisch möglich ist, alles mit Node.js-Paketen zu bewältigen, ist das Python-ML-Ökosystem einfach zu umfangreich und etabliert, um es zu ignorieren. Außerdem macht es Spaß, mit Python zu arbeiten. Daher ist es sinnvoll, Python für die schwere Arbeit im Backend zu verwenden. Sobald Sie Ihr Modell fertig haben, können Sie es in ein Front-End-freundliches Format exportieren und auf den Client laden, um Vorhersagen auszuführen.
In diesem Beitrag werden wir ein Modell erstellen, um die Popularität eines Künstlers basierend auf seiner Anzahl an Twitter-Followern vorherzusagen.
Der erste Schritt besteht darin, einen Datensatz in die Hände zu bekommen. Für dieses Projekt verwenden wir eine artist.csv-Datei, die so aussieht:
twitter_followers,popularity,handle 111024636,94,justinbieber 107920365,91,rihanna 106599902,89,katyperry 95307659,97,taylorswift13 66325495,87,selenagomez 66325135,71,selenagomez 60943147,83,jtimberlake 54815915,82,britneyspears 53569307,85,shakira
Wie Sie sehen, gibt es hier zwei Schlüsselwerte: twitter_followers und Popularität. Dies bereitet uns gut auf ein Sequenzmodell vor, bei dem x für Twitter_Follower und y für Beliebtheit steht.
Sequenzmodell ist eine der einfachsten Optionen zum Erstellen eines Modells. Auch wenn die Wahl letztendlich vom jeweiligen Anwendungsfall abhängt, halte ich es einfach und bleibe vorerst bei diesem Ansatz.
Wenn Sie ein Modell erstellen, müssen Sie einige grundlegende Aufgaben bewältigen:
Der folgende Code gibt Ihnen einen guten Überblick über diese Aufgaben, ist jedoch nicht das vollständige Bild. Den vollständigen Code können Sie sich auf Github ansehen.
def get_model(x, y): x_normalized = layers.Normalization( axis=None, ) x_normalized.adapt(np.array(x)) model = tensorflow.keras.Sequential([x_normalized, layers.Dense(units=1)]) model.compile( optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.1), loss="mean_squared_error", ) model.fit( x, y, epochs=2, verbose=0, validation_split=0.2, ) return model def main: train_features, test_features, train_labels, test_labels = split_data(dataset) model = get_model( train_features["twitter_followers"], train_labels, ) test_loss = model.evaluate( test_features["twitter_followers"], test_labels, verbose=2 ) model.export("./saved_model")
Wie Sie sehen können, ist der Python-Code ziemlich einfach. Es gibt eine Hauptfunktion, die das Aufteilen der Daten, das Abrufen des Modells, das Auswerten und schließlich das Speichern übernimmt.
Kurz gesagt sind dies die wesentlichen Schritte zur Erstellung eines Modells. Aber seien wir ehrlich: Ein Modell zu bauen, das tatsächlich funktioniert, ist sowohl eine Kunst als auch eine Wissenschaft. Mein Ziel hier ist es einfach zu zeigen, wie einfach der Einstieg in Python sein kann. Um ein Modell mit guter Leistung zu erstellen, gehört jedoch viel dazu: ein solider Datensatz, die Bereinigung und Normalisierung Ihrer Daten, die Auswahl des richtigen Modells und der richtigen Einstellungen sowie die Rechenleistung, um es zu trainieren. All diese Aufgaben erfordern einen erheblichen Zeit- und Arbeitsaufwand!
Da wir nun unser Modell trainiert und gespeichert haben, ist es an der Zeit, es in das Frontend zu bringen. In diesem Schritt laden wir das Modell in einem webfreundlichen Format, damit wir Vorhersagen direkt im Browser ausführen können. Unabhängig davon, ob Sie TensorFlow.js oder eine andere Bibliothek verwenden, eröffnet die Integration von maschinellem Lernen in Ihre Web-App eine Welt voller Möglichkeiten. Schauen wir uns an, wie das geht!
TensorFlow bietet ein npm-Paket namens tensorflowjs_converter an, das dabei hilft, gespeicherte Modelle in JSON und Binär zu konvertieren.
tensorflowjs_converter --input_format=tf_saved_model model/saved_model out/public
ls -la out/public group1-shard1of1.bin model.json
Dieses Setup erleichtert den Zugriff auf die erforderlichen Dateien für Ihre Webanwendung.
Sie können den vollständigen Code auf Github ansehen.
const model = await tensorflow.loadGraphModel("model.json"); const getPopularity = (followers) => { const followers = 1_000; const normalized = followers; const x = tensorflow.tensor(normalized).reshape([-1, 1]); const result = model.predict(x); const values = result.arraySync(); const y = values[0][0].toFixed(2) * 100; const popularity = y; return popularity; };
Wie bereits erwähnt, zielt dieses Modell darauf ab, „Beliebtheit“ basierend auf der Anzahl der Twitter-Follower vorherzusagen. Obwohl es wie ein einfaches Beispiel erscheinen mag, zeigt es effektiv, wie man ein Modell im Backend generiert und es im Frontend nutzt.
Sehen Sie sich an, wie getPopularity die Eingabe ein wenig verarbeitet, aber die Schlüsselzeile ist model.predict(x), die das Modell verwendet, um einen Wert (y) basierend auf der Eingabe x vorherzusagen.
Gehen Sie zur Demoseite und probieren Sie ein paar Twitter-Handles aus. Es ist eine unterhaltsame Möglichkeit zu sehen, wie das Modell die Popularität basierend auf der Anzahl der Follower vorhersagt.
TensorFlow ist eine großartige Bibliothek, die Tools sowohl für die Backend- als auch für die Frontend-Entwicklung bereitstellt. Jeder JavaScript-Entwickler kann mit Python oder einer ähnlichen Sprache ein Modell erstellen und dieses Modell dann einfach in das Frontend importieren, um Vorhersagen auszuführen.
Während maschinelles Lernen ein weites Feld ist, das viel Wissen erfordert, helfen Tools wie TensorFlow dabei, die Lücke zwischen Software- und maschinellen Lernentwicklern zu schließen. Es macht die Reise viel reibungsloser für diejenigen, die ML in ihre Projekte integrieren möchten!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3