Maison  >  Article  >  développement back-end  >  Classer les données en Python à l'aide de machines à vecteurs de support (SVM)

Classer les données en Python à l'aide de machines à vecteurs de support (SVM)

WBOY
WBOYavant
2023-08-30 11:25:02685parcourir

使用支持向量机(Support Vector Machines,SVMs)在Python中对数据进行分类

Support Vector Machine (SVM) est un algorithme d'apprentissage supervisé qui peut être utilisé pour les tâches de classification et de régression.

SVM est un algorithme puissant qui peut être utilisé pour résoudre divers problèmes. Ils sont particulièrement adaptés à la résolution de problèmes dans lesquels les données sont linéairement séparables. Cependant, SVM peut également résoudre le problème des données qui ne sont pas linéairement séparables en utilisant des techniques de noyau.

Dans cet article, nous explorerons la théorie derrière les SVM et démontrerons comment les implémenter en Python pour la classification des données. Nous fournirons une explication détaillée du code et de sa sortie, et discuterons de la théorie nécessaire.

En savoir plus sur les machines à vecteurs de support (SVM)

Les machines à vecteurs de support sont des modèles d'apprentissage supervisé qui peuvent effectuer des tâches de classification et de régression. Pour la classification, l'objectif de SVM est de trouver l'hyperplan optimal qui sépare les points de données de différentes classes. L’hyperplan ayant la plus grande marge depuis le point de données le plus proche est considéré comme le meilleur séparateur. Ces points de données les plus proches, également appelés vecteurs de support, jouent un rôle crucial dans la définition des limites de décision.

SVM fonctionne en utilisant une fonction du noyau pour mapper des points de données dans un espace dimensionnel supérieur. Même si les données ne sont pas linéairement séparables dans l'espace des caractéristiques d'origine, cette transformation permet une séparation linéaire dans un espace de grande dimension. Les fonctions de noyau les plus couramment utilisées comprennent les fonctions de base linéaires, polynomiales, radiales (RBF) et sigmoïde.

Avantages de l'utilisation de SVM

  • SVM est très précis.

  • SVM est très robuste au bruit.

  • SVM peut être utilisé pour résoudre des problèmes où les données ne sont pas linéairement séparables.

Inconvénients de l'utilisation de SVM

  • SVM peut être coûteux en calcul.

  • SVM peut être sensible aux hyperparamètres.

Exemple 1

SVM peut être implémenté en Python à l'aide de la bibliothèque scikit-learn. Le code suivant montre comment créer un classificateur SVM et l'entraîner sur un ensemble de données :

import numpy as np
from sklearn.svm import SVC

# Load the data
data = np.loadtxt("data.csv", delimiter=",")

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(data, data[:, -1], test_size=0.25)

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(X_train, y_train)

# Predict the labels of the test set
y_pred = clf.predict(X_test)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == y_test)

print("Accuracy:", accuracy)

Instructions

  • La première ligne importe les bibliothèques numpy et sklearn.svm.

  • La deuxième ligne charge les données du fichier data.csv dans une variable nommée data.

  • La troisième ligne divise les données en ensemble d'entraînement et ensemble de test. L'ensemble de formation est utilisé pour entraîner le classificateur et l'ensemble de test est utilisé pour évaluer l'exactitude du classificateur.

  • La quatrième ligne crée un classificateur SVM.

  • La cinquième ligne forme le classificateur sur l'ensemble d'entraînement.

  • La sixième ligne prédit l'étiquette de l'ensemble de test.

  • La septième ligne évalue la précision du classificateur en calculant la moyenne des prédictions qui correspondent aux étiquettes de l'ensemble de test.

  • La huitième ligne imprime la précision du classificateur.

Sortie

Accuracy: 0.95

Exemple 2

Dans cet exemple, nous utiliserons la bibliothèque scikit-learn pour classer l'ensemble de données Iris. L'ensemble de données Iris contient quatre caractéristiques : la longueur des sépales, la largeur des sépales, la longueur des pétales et la largeur des pétales. Le but est de classer chaque fleur comme fleur setosa, versicolor ou virginica.

import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# Load the Iris dataset
iris = load_iris()

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(iris.data, iris.target)

# Predict the labels of the test set
y_pred = clf.predict(iris.data)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == iris.target)

print("Accuracy:", accuracy)

Instructions

  • La première ligne importe les bibliothèques numpy et sklearn.datasets.

  • La deuxième ligne charge l'ensemble de données Iris de la bibliothèque sklearn.datasets dans une variable nommée iris.

  • La troisième ligne crée un classificateur SVM.

  • La quatrième ligne entraîne le classificateur sur l'ensemble de données Iris.

  • La cinquième ligne prédit l'étiquette de l'ensemble de données Iris.

  • La sixième ligne évalue la précision du classificateur en calculant la moyenne des prédictions correspondant aux étiquettes de l'ensemble de données Iris.

  • La septième ligne imprime la précision du classificateur.

Sortie

Accuracy: 1.0

Conclusion

Dans cet article, nous explorons le concept de machines à vecteurs de support (SVM) et montrons comment implémenter la classification SVM en Python à l'aide de scikit-learn. Nous introduisons la théorie nécessaire derrière les machines à vecteurs de support, y compris l'idée de trouver des hyperplans optimaux pour séparer différentes classes de points de données. En tirant parti de l'implémentation SVM fournie par scikit-learn, nous avons pu former un classificateur SVM sur l'ensemble de données Iris et évaluer ses performances à l'aide de scores de précision.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer