Analyse des composants principaux à l'aide de python de nim avec nimpy

Aperçu

Nous avons résumé la procédure pour effectuer l'analyse en composantes principales en utilisant sklearn de Nim. L'analyse des composants principaux peut être effectuée en quelques lignes en utilisant sklearn, qui n'a pas été mentionné, donc je vais essayer d'utiliser une bibliothèque appelée nimpy pour l'exécuter à partir de Nim. La partie qui effectue réellement l'analyse des composants principaux à l'aide de sklearn est écrite en Python.

J'ai déjà fait comment appeler Python avec nimpy, c'est donc une application. Appeler python de nim avec Nimpy

Préparation côté Python

Comme dans l'exemple (reportez-vous à l'article ci-dessus) lors de l'insertion de Python arbitraire avec pyenv etc., ajoutez CONFIGURE_OPTS =" --enable-shared " pour que libpython soit généré. Ensuite, utilisez la poésie, etc. pour ajouter sklearn.

pyproject.toml


[tool.poetry]
name = "nimpy_pca"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.7"
numpy = "^1.18"
scikit-learn = "^0.22.2"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.masonry.api"

Comme il est difficile d'appeler PCA depuis nim dans sklearn, écrivez le processus en python. (Dans nimpy, la méthode est appelée, vous ne pouvez donc pas utiliser le style comme initialiseur ou syntaxe sans valeur de retour.) J'essaye d'échanger des données et des résultats en utilisant JSON pour simplifier le passage des types.

pca.py


from sklearn.decomposition import PCA
import numpy as np
import json

def pca(json_text):
    data = json.loads(json_text)
    pca = PCA(n_components=2)
    A = np.array(data)
    pca.fit(A)
    return {
        "components": pca.components_.tolist(),
        "varianceRatio": pca.explained_variance_ratio_.tolist()
    }

Appelez Python de Nim avec nimpy

Tout d'abord, spécifiez le chemin de libpython afin que le sklearn entré dans la poésie puisse être lu.

import nimpy
import nimpy/py_lib as pyLib

pyLib.pyInitLibPath("/root/.pyenv/versions/3.7.7/lib/libpython3.7m.so")

Ajoutez également le chemin où se trouve le fichier afin de pouvoir charger le Python que vous venez de créer.

discard pyImport("sys").path.append("/workspace/src")

Utilisez ensuite les données JSON et transmettez les données à la méthode précédente. J'utilise toJson pour convertir la valeur de retour PyObject en un type JsonNode.

let pcaResult = pyImport("pca.py").callMethod("pca", json).toJson

Le reste est complété en développant la valeur contenue dans pcaResult.

import sugar

let projectedValues = datas.map(data =>
    pcaResult["components"].getElems.map(c => c.getElems.zip(data).map(n => n[0].getFloat * n[1]).foldl(a + b))
)

Résumé

Je suis resté coincé dans la manière de spécifier le chemin de pyImport et le conflit de nom du fichier python, mais j'ai pu lire python de cette façon. Si vous appliquez cela, il semble que vous puissiez facilement exécuter d'autres traitements statistiques et traitements linéaires en le laissant à Python.

Recommended Posts

Analyse des composants principaux à l'aide de python de nim avec nimpy
Appelez python de nim avec Nimpy
Utilisation de Rstan de Python avec PypeR
Analyse des composants principaux avec Spark ML
Python: apprentissage non supervisé: analyse principale
Ceci et cela de l'analyse en composantes principales
Analyse des composants principaux avec le corpus d'actualités Livedoor - Pratique--
De la préparation à l'analyse morphologique avec python en utilisant polyglotte au marquage des mots partiels
Analyse des composants principaux avec Livedoor News Corpus --Préparation--
Compression dimensionnelle par auto-encodeur et analyse des composants principaux
J'ai essayé d'analyser les principaux composants avec les données du Titanic!
Analyse de données avec python 2
Analyse vocale par python
Analyse en composantes principales (Analyse en composantes principales: ACP)
Analyse vocale par python
Analyse de données avec Python
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
Filtrage coordonné avec analyse des composants principaux et clustering K-means
Apprenez Nim avec Python (dès le début de l'année).
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
Compréhension mathématique de l'analyse en composantes principales depuis le début
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2
Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
Aplatir à l'aide du rendement Python de
[Python] Analyse morphologique avec MeCab
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
[Python] Utilisation d'OpenCV avec Python (basique)
Analyse des émotions par Python (word2vec)
Apprendre sans enseignant 3 Analyse des principales composantes
Analyse de squelette planaire avec Python
Analyse de données à l'aide de pandas python
Avec skype, notifiez avec skype de python!
Analyse des secousses musculaires avec Python
Utiliser OpenCV avec Python @Mac
Envoyer en utilisant Python avec Gmail
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Visualisez la matrice de corrélation par l'analyse des composants principaux avec Python
Analyse pratique des composants principaux avec PyCaret [Normalisation + visualisation (tracé)] Mémo
Analyse morphologique avec Igo + mecab-ipadic-neologd en Python (avec bonus Ruby)
Compléter python avec emacs en utilisant company-jedi
Moyenne harmonique par Python (en utilisant SciPy)
Appeler C depuis Python avec DragonFFI
Analyse de la structure du squelette en trois dimensions avec Python
Essai de la reconnaissance vocale à l'aide d'Azure avec Python (entrée depuis le microphone)
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Analyse d'impédance (EIS) avec python [impedance.py]
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Remarques sur l'utilisation de MeCab depuis Python
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Text mining avec Python ① Analyse morphologique
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
[Didacticiel d'analyse Python dans la base de données avec SQL Server 2017] Étape 6: Utilisation du modèle
Utiliser Cloud Storage depuis Python3 (Introduction)