[PYTHON] J'ai essayé l'apprentissage automatique avec liblinear

liblinear est une bibliothèque d'apprentissage d'opportunités pour séparer linéairement les données avec 1 million de chiffres d'instance et de fonctionnalités.   https://www.csie.ntu.edu.tw/~cjlin/liblinear/ En tant que fonctionnalité, il est différent des autres en ce sens qu'il peut traiter rapidement un grand nombre d'éléments.

Quoi qu'il en soit, mettez-le sur le bureau et appuyez dessus. Tout d'abord, mettez ce que vous souhaitez importer. Au lieu d'ouvrir un terminal (ou cmd) et de taper immédiatement la commande ipython, allez dans le répertoire (dossier) où vous souhaitez travailler, puis lancez ipython.

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

Les données utilisées sont les actualités suivantes20 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html La forme des données linéaires est particulière. Lors de son utilisation, il est nécessaire de le traiter dans cette forme

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

train → prédire

In [20]: len(y)
Out[20]: 15935
#Puisqu'il y a 15935 éléments de données, jusqu'à 5000 éléments peuvent être formés comme données d'enseignant.
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

Je ne sais pas ce que c'est, mais il semble que j'ai pu apprendre Enregistrez le modèle créé et jetez un œil à l'intérieur. Généré dans un dossier sous le nom news20.model

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']

Il y a 20 étiquettes, chacune ayant un poids. http://qwone.com/~jason/20Newsgroups/  Vocalary.txt est l'index. Vous pouvez maintenant voir quels mots sont efficaces dans la classification

prédire

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

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

La précision est de 74%, ce qui semble juste.

Regardons le résultat de la prédiction. Tout d'abord, mettez la bonne réponse y, l'étiquette prédite p_label et le score p_val de chaque étiquette dans le bloc de données pour une compréhension facile.

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 est le plus proche et est le même que les données de réponse correctes

Voyons à quel point cela correspond

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

Il semble qu'il puisse être si bien classé

Au fait, je ne comprends pas vraiment les paramètres ... Et la question est de savoir comment rendre ces données ...

https://github.com/zygmuntz/phraug https://github.com/zygmuntz/phraug/blob/master/csv2libsvm.py La conversion à partir du CSV a détecté ceci

S'il vous plaît laissez-moi savoir si vous souhaitez faire cela

Recommended Posts

J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé d'apprendre LightGBM avec Yellowbrick
J'ai essayé d'apprendre avec le Titanic de Kaggle (kaggle②)
J'ai essayé le deep learning
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
[Mac] J'ai essayé de renforcer l'apprentissage avec Open AI Baselines
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
L'apprentissage automatique appris avec Pokemon
J'ai essayé Learning-to-Rank avec Elasticsearch!
Un débutant en apprentissage automatique a essayé la RBM
J'ai essayé le clustering avec PyCaret
Apprentissage automatique avec Python! Préparation
Démineur d'apprentissage automatique avec PyTorch
J'ai essayé d'implémenter Extreme Learning Machine
Commencer avec l'apprentissage automatique Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
Essayez le machine learning à la légère avec Kaggle
Mayungo's Python Learning Episode 1: J'ai essayé d'imprimer avec impression
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
Oncle SE avec un cerveau endurci a essayé d'étudier l'apprentissage automatique
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
J'ai essayé de résumer des phrases avec summpy
J'ai commencé l'apprentissage automatique avec le clustering Python, la compression et la visualisation de dimensions
Apprentissage automatique par python (1) Classification générale
J'ai essayé webScraping avec python.
J'ai essayé de déplacer de la nourriture avec SinGAN
J'ai essayé d'utiliser Tensorboard, un outil de visualisation pour l'apprentissage automatique
Apprentissage automatique
J'ai essayé l'apprentissage automatique pour convertir des phrases en style XX
J'ai essayé d'implémenter DeepPose avec PyTorch
SVM essayant l'apprentissage automatique avec scikit-learn
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
J'ai essayé la détection de visage avec MTCNN
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai essayé l'apprentissage par renforcement avec PyBrain
J'ai essayé l'apprentissage en profondeur avec Theano
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Démarrez avec l'apprentissage automatique avec SageMaker
J'ai essayé d'exécuter prolog avec python 3.8.2.
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
J'ai essayé la communication SMTP avec Python
J'ai essayé la génération de phrases avec GPT-2
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé la reconnaissance faciale avec OpenCV
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker
J'ai essayé l'apprentissage par renforcement profond (Double DQN) avec ChainerRL
[Apprentissage automatique] J'ai essayé de faire quelque chose comme passer des images
Mayungo's Python Learning Episode 7: J'ai essayé d'imprimer avec if, elif, else
J'ai essayé l'analyse de régression multiple avec régression polypoly
J'ai essayé d'envoyer un SMS avec Twilio
J'ai essayé d'utiliser Amazon SQS avec django-celery
Prédire la demande de puissance avec l'apprentissage automatique, partie 2