Ich möchte einen Data-Mining-Dienst in Google Go schreiben, der Daten durch Scraping und APIs sammelt.
Da Go jedoch keine gute ML-Unterstützung hat, würde ich gerne die ML-Sachen in Python machen.
Mit einem Web-Hintergrund würde ich beide Dienste mit so etwas wie RPC verbinden, aber da ich glaube, dass dies ein häufiges Problem in der Datenwissenschaft ist, denke ich, dass es eine bessere Lösung gibt.
Zum Beispiel fehlen die meisten (Web-) Protokolle bei:
- Pufferung zwischen Prozessen
- Clustering über mehrere Instanzen
Welche (Art von Bibliotheken) verwenden Datenwissenschaftler, um verschiedene Sprachen / Prozesse zu verbinden?
Bodo
machine-learning
data-mining
Bodokaiser
quelle
quelle
Antworten:
Dies
Data Science Toolkit
ist eine leistungsstarke Bibliothek (oder eine Sammlung von Bibliotheken, technisch gesehen), die in mehreren Sprachen verfügbar ist. Zum Beispiel verwende ich die ImplementierungRDSTK
in R.Für Ihre bevorzugte Sprache, Google Go, gibt es hier eine Liste webbezogener Bibliotheken, die sehr nützlich aussieht.
quelle
Data Science Toolkit
ist sehr interessant, aber nicht das, wonach ich suche. Ich suche nach einem leistungsstarken Stream-basierten Protokoll, mit dem ich Daten von n Data Minern zu m Datenprozessoren streamen (und puffern) kann.Wenn Ihre einzige Motivation für die Verwendung von Google Go das Webcraping ist und Sie ML in Python ausführen möchten, würde ich den folgenden Stack empfehlen:
Python-Anforderungen zum Scraping von Daten
MongoDB zum Zwischenspeichern von Daten (das seitenorientierte Format von MongoDB macht es zu einem natürlichen Zuhause für das Speichern von JSON-Objekten, die üblicherweise von APIs zurückgegeben werden)
Pymongo zur Verbindung von Python und Mongodb
scikit-learn für maschinelles Lernen
Dies alles geschieht in Python und Sie können es mit Multiprocessing auf mehrere Prozessoren oder mit Django auf mehrere Knoten erweitern
quelle
Ich bin nicht zu 100% davon überzeugt, dass eine Nachrichtenwarteschlangenbibliothek das richtige Werkzeug für diesen Job ist, aber bisher sieht es für mich so aus.
Mit einer Messaging-Bibliothek wie:
Sie können verschiedene Prozesse, die in verschiedenen Umgebungen ausgeführt werden, über ein TCP-basiertes Protokoll verbinden. Da diese Systeme verteilt ausgeführt werden, können mehrere Knoten verbunden werden.
Für nsq haben wir sogar eine Bibliothek in Python and Go!
quelle