Intégration multiplateforme de ThunderSVM : guides pour Python, R et Matlab

Intégration multiplateforme de ThunderSVM : guides pour Python, R et Matlab

ThunderSVM est une bibliothèque de machines à vecteurs de support (SVM) optimisée pour les environnements GPU et CPU. Elle propose des interfaces pour plusieurs langages, permettant aux développeurs de l'intégrer dans leurs flux de travail existants. Ce guide détaille son utilisation avec Python, R et Matlab.

Architecture des interfaces langagières

Le code source de ThunderSVM organise ses interfaces de manière modulaier :

  • Python : le module se trouve dans python/thundersvm/.
  • R : l'implémentation est centralisée dans le fichier R/svm.R.
  • Matlab : les fonctions d'entraînement et de prédiction sont séparées dans Matlab/svm_train_matlab.m et Matlab/svm_predict_matlab.m.

Des benchmarks internes mnotrent que ThunderSVM peut réduire significativement le temps d'entraînement par rapport à des implémentations classiques comme libsvm, particulièrement sur des jeux de données volumineux.

Implémentation en Python

L'interface Python expose une API compatible avec le style de scikit-learn, ce qui facilite son adoption.

Installation

git clone https://gitcode.com/gh_mirrors/th/thundersvm
cd thundersvm/python
pip install .

Exemple d'utilisation

from thundersvm import SVC
import numpy as np

# Préparation des données
train_features = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
train_labels = np.array([0, 1, 0])

# Configuration et entraînement du modèle
classifier = SVC(kernel='rbf', C=10)
classifier.fit(train_features, train_labels)

# Prédiction sur de nouvelles données
test_data = np.array([[7.0, 8.0]])
prediction_result = classifier.predict(test_data)
print(f"Classe prédite : {prediction_result[0]}")

Utilisation depuis R

L'interface R est fournie sous la forme d'un script chargeable directement dans une session R.

Configuraton initiale

install.packages("R6")
source("R/svm.R")

Démonstration

# Génération d'un jeu de données synthétique
donnees_x <- matrix(rnorm(200), ncol=2)
etiquettes <- c(rep(1, 100), rep(-1, 100))

# Entraînement avec noyau gaussien
svm_modele <- svm_train(etiquettes, donnees_x, kernel="rbf", gamma=0.05, cost=5)

# Évaluation sur les données d'entraînement
resultats <- svm_predict(svm_modele, donnees_x)

Déploiement dans Matlab

Pour Matlab, il est nécessaire de compiler la bibliothèque au préalable. Les fonctions fournies imitent l'interface de libsvm.

Préparation de l'environnement

% Ajouter le dossier des fonctions Matlab au chemin de recherche
addpath('Matlab')

Script d'exemple

% Création de données binaires simples
features = [randn(50,2) + 2; randn(50,2) - 2];
cibles = [ones(50,1); -ones(50,1)];

% Entraînement avec des hyperparamètres spécifiques
modele_svm = svm_train_matlab(cibles, features, '-t 2 -c 1 -g 0.2');

% Prédiction et calcul de la précision
[prediction, precision] = svm_predict_matlab(cibles, features, modele_svm);
fprintf('Précision du modèle : %.2f%%\n', precision(1));

Références complémentaires

La documentation du projet offre des ressources plus approfondies :

  • docs/parameters.md pour une description exhaustive des paramètres.
  • docs/faq.md pour les problèmes courants et leurs solutions.

Étiquettes: thundersvm svm gpu-acceleration machine-learning python-interface

Publié le 31 juillet à 01h22