[PYTHON] Ich habe maschinelles Lernen mit liblinear versucht

liblinear ist eine Gelegenheitslernbibliothek zum linearen Trennen von Daten mit 1 Million Stellen Instanz und Features.   https://www.csie.ntu.edu.tw/~cjlin/liblinear/ Als Feature unterscheidet es sich von anderen darin, dass es eine große Anzahl von Elementen schnell verarbeiten kann.

Wie auch immer, legen Sie es auf den Desktop und drücken Sie es. Geben Sie zunächst an, was Sie importieren möchten. Anstatt ein Terminal (oder cmd) zu öffnen und den Befehl ipython sofort einzugeben, wechseln Sie in das Verzeichnis (Ordner), in dem Sie arbeiten möchten, und starten Sie ipython.

import sys
sys.path.append('/Users/xxxx/Desktop/liblinear-2.1/python')
from liblinearutil import *
from liblinear import *

Die verwendeten Daten sind die folgenden Nachrichten20 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html Die Form der liblinearen Daten ist etwas Besonderes. Wenn Sie es tatsächlich verwenden, müssen Sie es in diese Form bringen

y, x = svm_read_problem('news20.txt')

Zug → vorhersagen

In [20]: len(y)
Out[20]: 15935
#Da es 15935 Daten gibt, können bis zu 5000 Daten als Lehrerdaten trainiert werden.
m = train(y[:5000], x[:5000])
save_model('news20.model', m)

optimization finished, #iter = 1000

WARNING: reaching max number of iterations Using -s 2 may be faster (also see FAQ)

Objective value = -38.201637 nSV = 1028 .* optimization finished, #iter = 17 Objective value = -18.665411 nSV = 903

Ich weiß nicht was es ist, aber es scheint, dass ich lernen konnte Speichern Sie das erstellte Modell und werfen Sie einen Blick hinein. Wird in einem Ordner als news20.model generiert

weight = open('news20.model').readlines()
weight[:10]

['solver_type L2R_L2LOSS_SVC_DUAL\n', 'nr_class 20\n', 'label 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n', 'nr_feature 62017\n', 'bias -1\n', 'w\n', '-0.339495505987624 -0.2729835882642053 -0.1726449590446147 -0.2479101793530862 -0.4274669775000416 -0.2412066297893888 -0.2293917779069297 -0.1540898055174211 -0.215426735582579 -0.2955027766952972 -0.07665514316560521 -0.2067955978156952 -0.2129682323900661 -0.3178416173675406 -0.1100450398128613 -0.1089058297966 0.2118441015471185 -0.1789025390838444 -0.2308991526979358 -0.3216302447541755 \n', '0.03464116990799743 0.03296276686709169 -0.005516289618528965 0 0 8.487270131488089e-19 -0.03693284638681263 0 0 0 -0.0005436471560843025 0 4.336808689942018e-19 0 0 0 -1.355252715606881e-20 0.005881877772996123 0.0004078249397363432 -0.005592803559260878 \n', '0 0 0 0 -0.006337527074141217 0 -0.01043809306013021 -0.02848401075118318 -0.02192217208113558 0 -0.002743696876587976 -0.002823046244597745 5.421010862427522e-19 0 -0.01184141317622985 -0.00327656833111874 -0.00300798970221013 0.07620931881353635 0.07709902339068471 -0.007496992406231962 \n', '0 0.000336438903090087 -0.002105522336459381 -0.003408253600602967 0.04532864192038737 0.00358490636419236 -0.01288493688454648 -0.03829009043077678 -0.02192217208113558 0 -0.002743696876587976 -0.006148372938504376 0.04416917489366715 0 -0.03749035441444219 0.00486249738297638 -0.003188508027714593 0.1323725656877747 0.09645265180639011 -0.01123137774909418 \n']

Es gibt 20 Etiketten, von denen jedes ein Gewicht hat. http://qwone.com/~jason/20Newsgroups/  Vocalary.txt ist der Index. Jetzt können Sie sehen, welche Wörter in der Klassifizierung wirksam sind

vorhersagen

p_label, p_acc, p_val = predict(y[5000:], x[5000:], m)

Accuracy = 74.3576% (8131/10935) (classification)

Die Genauigkeit beträgt 74%, was fair zu sein scheint.

Schauen wir uns das Ergebnis der Vorhersage an. Geben Sie zunächst die richtige Antwort y, das vorhergesagte Label p_label und die Punktzahl p_val jedes Labels zum leichteren Verständnis in den Datenrahmen ein.

import pandas as pd
a=pd.DataFrame([y[5000:],p_label,p_val])
a[0]
a[0][2]

0 1 1 1 2 [-0.434941406833, -2.4992939688, -1.9156773889... Name: 0, dtype: object

[-0.43494140683299093, -2.499293968803961, -1.9156773889387406, -1.652996684855934, -0.64663025115734, -1.981531321375946, -2.0506304515990794, -1.9845217707935987, -1.816531448715213, -1.9993917151454117, -2.6192052686130403, -2.375782174561902, -2.1841316767499994, -2.787946449405093, -1.981463462884227, -2.4769599630955956, -1.3508140247538216, -1.7235783924583472, -1.7785165908522975, -2.2096245620379604]

1 ist am nächsten und entspricht den richtigen Antwortdaten

Mal sehen, wie viel es passt

b=pd.DataFrame([y[5000:],p_label])
b

0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10 1 1 2 2 4 5 7 4 8 9 4

... 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 0 ... 18 19 7 9 15 16 17 18 19 17 1 ... 18 18 7 9 15 16 17 15 19 17

Es scheint, dass es so gut klassifiziert werden kann

Übrigens bin ich mir bei den Parametern nicht sicher ... Und die Frage ist, wie man diese Daten macht ...

https://github.com/zygmuntz/phraug https://github.com/zygmuntz/phraug/blob/master/csv2libsvm.py Die Konvertierung von CSV hat dies gefunden

Bitte lassen Sie mich wissen, wenn Sie dies tun möchten

Recommended Posts

Ich habe maschinelles Lernen mit liblinear versucht
Ich habe versucht, LightGBM mit Yellowbrick zu lernen
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Ich habe versucht, tief zu lernen
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
[Mac] Ich habe versucht, das Lernen mit Open AI Baselines zu stärken
(Maschinelles Lernen) Ich habe versucht, die Bayes'sche lineare Regression bei der Implementierung sorgfältig zu verstehen
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Maschinelles Lernen mit Pokemon gelernt
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Anfänger des maschinellen Lernens versuchten RBM
Ich habe versucht, mit PyCaret zu clustern
Maschinelles Lernen mit Python! Vorbereitung
Maschinelles Lernen Minesweeper mit PyTorch
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Beginnend mit maschinellem Python-Lernen
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Versuchen Sie es mit Kaggle leicht maschinell
Mayungos Python-Lernfolge 1: Ich habe versucht, mit Druck zu drucken
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Onkel SE mit verhärtetem Gehirn versuchte, maschinelles Lernen zu studieren
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Ich habe versucht, Sätze mit summpy zusammenzufassen
Ich habe mit Python Clustering & Dimension Compression & Visualization mit maschinellem Lernen begonnen
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Essen mit SinGAN zu bewegen
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Maschinelles Lernen
Ich habe versucht, durch maschinelles Lernen Sätze in den XX-Stil umzuwandeln
Ich habe versucht, DeepPose mit PyTorch zu implementieren
SVM versucht maschinelles Lernen mit Scikit-Learn
Mayungos Python Learning Episode 3: Ich habe versucht, Zahlen zu drucken
Ich habe versucht, das Gesicht mit MTCNN zu erkennen
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, mit PyBrain verstärkt zu lernen
Ich habe versucht, mit Theano tief zu lernen
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, Sätze mit GPT-2 zu generieren
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Ich habe versucht, Deep Learning mit Spark × Keras × Docker skalierbar zu machen
Ich habe mit ChainerRL Deep Enforcement Learning (Double DQN) ausprobiert
[Maschinelles Lernen] Ich habe versucht, so etwas wie Bilder weiterzugeben
Mayungos Python Learning Episode 7: Ich habe versucht, mit if, elif, else zu drucken
Ich habe eine multiple Regressionsanalyse mit Polypoly-Regression versucht
Ich habe versucht, eine SMS mit Twilio zu senden
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2