[PYTHON] Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt

Einführung

Neulich habe ich ein Programm erstellt, das Konten anhand der Ergebnisse des maschinellen Lernens vorhersagt, aber es gab eine Meinung, dass die Reaktion der Vorhersageergebnisse ungewöhnlich langsam und unbrauchbar war, also habe ich ein wenig Einfallsreichtum versucht.

Lernen von Buchhaltungsdaten und Vorhersagen von Konten aus dem Inhalt der Beschreibung beim Eingeben von Journalen --Qiita

Reaktionsmechanismus

Ich habe mich für HTTP entschieden, um leicht zu erkennen, dass das Lernergebnis im Speicher gespeichert ist und das Konto beim Senden der Beschreibung zurückgegeben wird.

Also habe ich mit Python einen HTTP-Server erstellt, das Lernergebnis gelesen, als der HTTP-Server gestartet wurde, und als ich die Zusammenfassung mit GET gesendet habe, habe ich das Konto vorhergesagt und zurückgegeben.

Erstellen Sie einen HTTP-Server mit Python

Ich habe auf den folgenden Artikel verwiesen.

Erstellen Sie einfach einen HTTP-Server mit Python-Qiita

Ich verwende es so wie es ist, aber es wurde ein wenig korrigiert, weil die Bibliothek namens BaseHTTPServer geändert wurde und ein Fehler in der japanischen Verarbeitung aufgetreten ist. Übrigens ist es Python3.

CallbackServer.py


#!/usr/local/bin/python
# coding: utf-8

import requests
import http.server
import socketserver
from http.server import BaseHTTPRequestHandler
from urllib.parse import urlparse, unquote

def start(port, callback):
    def handler(*args):
        CallbackServer(callback, *args)
    server = socketserver.TCPServer(('', int(port)), handler)
    server.serve_forever()

class CallbackServer(BaseHTTPRequestHandler):
    def __init__(self, callback, *args):
        self.callback = callback
        BaseHTTPRequestHandler.__init__(self, *args)

    def do_GET(self):
        parsed_path = urlparse(self.path)
        query = unquote(parsed_path.query)
        
        self.send_response(200)
        self.end_headers()
        
        result = self.callback(query)
        
        self.wfile.write(result.encode('utf-8'))
        
        return

Server-Startskript

Es liest das Lernergebnis beim Start und gibt das vom GET-Rückruf vorhergesagte Ergebnis zurück.

server.py


#!/usr/local/bin/python
# coding: utf-8

import sys
import CallbackServer

import pandas as pd
import numpy as np

homedir = "/home/scripts/"
filename = "data/code.csv"

df = pd.read_csv(homedir + filename, header=None)
df.index = df.pop(0)

df_rs = df.pop(1)

from sklearn.externals import joblib

scaler = joblib.load(homedir + 'data/scaler.pkl')
clf = joblib.load(homedir + 'data/clf.pkl')
vect = joblib.load(homedir + 'data/vect.pkl')

from janome.tokenizer import Tokenizer

t = Tokenizer()

def callback_method(query):
    texts = [
        query,
    ]

    notes = []
    for note in texts:
        tokens = t.tokenize(note)
        words = ""
        for token in tokens:
            words += " " + token.surface
        notes.append(words)
    
    X = vect.transform(notes)
    
    result = clf.predict(X)
    ans = ""

    for i in range(len(texts)):
        ans = df_rs.ix[result[i]]
        
    return ans

if __name__ == '__main__':
    port = sys.argv[1]
    CallbackServer.start(port, callback_method)

Beginnen Sie mit dem folgenden Befehl.

python


$ chmod a+x server.py
$ ./server.py 8080 &

Betriebstest

Lassen Sie uns das Vorhersageergebnis mit Ruby erhalten.

test.rb


require 'net/http'
require 'uri'

puts Net::HTTP.get_print('localhost', URI.escape('/?Autobahnnutzungsgebühr'), 8080)

Ich werde das machen.

python


$ ruby test.rb
Reisekosten Transport

Es wurde gemacht (^ - ^)

Versuchen Sie, es in den LINE-Bot zu integrieren.

スクリーンショット 2017-03-11 7.33.33.png

Gutes Gefühl (^ - ^)

Weitere Informationen zum Erstellen eines LINE-Bots finden Sie im folgenden Artikel.

Erstellen Sie einen automatischen Antwort-BOT mit der Messaging-API von LINE

Mit diesem LINE-Bot können Sie sich übrigens mit dem folgenden QR-Code anfreunden.

2e099ea3-2a40-49b9-ca84-431c809cf153.png

Was soll ich als nächstes tun?

Recommended Posts

Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt
Implementierung eines Modells, das Wechselkurse (Dollar-Yen-Kurs) durch maschinelles Lernen vorhersagt
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
[Maschinelles Lernen] Verstehen Sie aus der Mathematik, dass Standardisierung zu einem Durchschnitt von 0 und einer Standardabweichung von 1 führt.
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Einführung in das maschinelle Lernen mit Simple Perceptron
Einfacher Code, der in Kaggles Titanic: Maschinelles Lernen aus Katastrophen eine Punktzahl von 0,81339 ergibt
Erstellen Sie mit MeCab mit Discord einen Bot, der nur das Ergebnis der morphologischen Analyse zurückgibt
Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
Django gibt den Inhalt der Datei als HTTP-Antwort zurück
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Eine konkrete Methode zur Vorhersage von Pferderennen und zur Simulation der Wiederherstellungsrate durch maschinelles Lernen
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
Verfahren zum Generieren und Speichern eines Lernmodells durch maschinelles Lernen, Erstellen eines API-Servers und Kommunizieren mit JSON über einen Browser
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
Erstellen Sie mit turicreate eine API, die Daten aus einem Modell zurückgibt
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Bewerten Sie die Genauigkeit des Lernmodells durch einen Kreuztest von scikit learn
Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Aus einem Buch, das die Denkweise des Programmierers interessanterweise gelernt hat (Python)
Notizen vom Anfang von Python 1 lernen
Ein einfacher Mock-Server, der den HTTP-Anforderungsheader einfach in den Hauptteil der Antwort einbettet und zurückgibt.
(Von Zeit zu Zeit aktualisiert) Zusammenfassung der APIs für maschinelles Lernen, mit denen Sie schnell Apps von Team AI erstellen können
Notizen vom Anfang von Python 2 lernen
Ein Artikel, der nur eine kleine HTTP-Anfrage mit dem Befehl curl versucht
Kostenlose Version von DataRobot! ?? Einführung in "PyCaret", eine Bibliothek, die maschinelles Lernen automatisiert
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Vorhersage für Pferderennen: Wenn Sie der Meinung sind, dass die Wiederherstellungsrate beim maschinellen Lernen (Light GBM) 100% überschritten hat, haben Sie dies getan
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Eine Menge von ganzen Zahlen, die ax + by = 1 erfüllen.
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Liste der Links, die Anfänger des maschinellen Lernens lernen
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Analyse der gemeinsamen Raumnutzung durch maschinelles Lernen
[Übersetzung] scikit-learn 0.18 Einführung in maschinelles Lernen durch Tutorial scikit-learn
Maschinelles Lernen eines jungen Ingenieurs Teil 2
Angemessene Preisschätzung von Mercari durch maschinelles Lernen
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Auszug nur vollständig aus dem Ergebnis von Trinity
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Eine einfache Möglichkeit, die Verarbeitungsgeschwindigkeit einer von Linux erkannten Festplatte zu messen
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft
Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
[CodeIQ] Ich habe die Wahrscheinlichkeitsverteilung von Würfeln geschrieben (aus dem CodeIQ-Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung]).
[Ansible] Beispiel für ein Playbook, das der ersten Zeile der Datei eine Zeichenkette hinzufügt
Was ist eine rationale Entscheidung, die die Chancen maximiert, ein "ideales Zuhause" zu finden?
[Los] Erstellen Sie ein Tool, das den Rennwert des Pokémon zurückgibt, der von der Standardeingabe empfangen wurde
Ein Memo, das das Gesicht des mit Djangos OpenCV von der Webkamera aufgenommenen Bilds erkennt und zurückgibt.
Artikel, der Ihnen hilft, den Kollisionsalgorithmus für starre Kugeln ein wenig zu verstehen
Ich habe eine Twitter-App erstellt, die das Bild eines bestimmten Charakters auf der Twitter-Timeline durch Pytorch-Transfer-Lernen identifiziert und speichert
Das Ende der Programmieranfänger (mein Muster), die Code geschrieben haben, der durch die Ergebnisse motiviert ist, die das Programmieren bringen, nicht aus technischer Sicht