Exemples SVM en Python

PHPz
PHPzoriginal
2023-06-11 20:42:061167parcourir

Support Vector Machine (SVM) en Python est un puissant algorithme d'apprentissage supervisé qui peut être utilisé pour résoudre des problèmes de classification et de régression. SVM fonctionne bien lorsqu'il s'agit de données de grande dimension et de problèmes non linéaires, et est largement utilisé dans l'exploration de données, la classification d'images, la classification de textes, la bioinformatique et d'autres domaines.

Dans cet article, nous présenterons un exemple d'utilisation de SVM pour la classification en Python. Nous utiliserons le modèle SVM de la bibliothèque scikit-learn, qui fournit de nombreux algorithmes d'apprentissage automatique puissants.

Tout d'abord, nous devons installer la bibliothèque scikit-learn, qui peut être installée à l'aide de la commande suivante dans le terminal :

pip install scikit-learn

Ensuite, nous utiliserons l'ensemble de données classique Iris pour démontrer l'effet de classification de SVM. L'ensemble de données Iris contient 150 échantillons, répartis en trois catégories, chaque catégorie contenant 50 échantillons. Chaque échantillon présente 4 caractéristiques : longueur des sépales, largeur des sépales, longueur des pétales et largeur des pétales. Nous utiliserons SVM pour classer ces échantillons.

Tout d'abord, nous devons importer les bibliothèques requises :

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score

Ensuite, nous chargeons l'ensemble de données Iris :

iris = datasets.load_iris()

Ensuite, nous divisons les données en ensemble d'entraînement et en ensemble de test :

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)

Ici, nous utilisons la fonction train_test_split , L'ensemble de données est divisé de manière aléatoire en un ensemble d'apprentissage et un ensemble de test, où le paramètre test_size spécifie que l'ensemble de test représente 30 % de l'ensemble de données total.

Ensuite, nous utiliserons le modèle SVM pour ajuster l'ensemble d'entraînement :

clf = svm.SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)

Ici, nous utilisons la fonction noyau linéaire et spécifions un paramètre de régularisation C=1. L'hyperparamètre C de SVM contrôle le compromis entre précision et complexité du modèle. Plus la valeur C est petite, plus le modèle est simple et est sujet au sous-ajustement ; plus la valeur C est grande, plus le modèle est complexe et est sujet au sur-ajustement. Habituellement, nous devons choisir une valeur C appropriée par validation croisée.

Ensuite, nous utilisons le modèle entraîné pour prédire l'ensemble de test :

y_pred = clf.predict(X_test)

Enfin, nous pouvons utiliser la fonction precision_score pour calculer la précision de la classification :

accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

Le code complet est le suivant :

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score

# Load iris dataset
iris = datasets.load_iris()

# Split data into train and test
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)

# Fit SVM model on training data
clf = svm.SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)

# Predict on test data
y_pred = clf.predict(X_test)

# Compute accuracy score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

Dans ce cas, nous a utilisé le modèle SVM pour la classification, en ciblant un ensemble de données très courant, l'ensemble de données Iris. L’avantage de SVM réside dans sa puissante capacité de classification et son adéquation aux données de grande dimension et aux problèmes non linéaires. La mise en œuvre de SVM nécessite le réglage d'une série d'hyperparamètres pour obtenir le meilleur effet de classification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn