Maison > Article > Périphériques technologiques > Utilisez des machines à vecteurs de support pour résoudre les problèmes de classification XOR
La machine à vecteurs de support est un algorithme de classification couramment utilisé, adapté aux problèmes de classification linéaire et non linéaire. Cet article explique comment utiliser les machines à vecteurs de support pour résoudre le problème XOR.
Le problème XOR signifie que lorsque l'entrée contient deux variables binaires, la sortie est vraie (1) si les deux variables ne sont pas égales, sinon la sortie est fausse (0). Par exemple, lorsque l'entrée est (0, 1) ou (1, 0), la sortie est 1, et lorsque l'entrée est (0, 0) ou (1, 1), la sortie est 0. Il s’agit d’un problème non linéaire car les deux sorties ne peuvent pas être séparées par une seule ligne droite.
Pour résoudre le problème XOR, les machines à vecteurs de support peuvent obtenir une séparabilité linéaire en mappant l'entrée dans un espace de grande dimension. Par exemple, nous pouvons mapper l’entrée (x1, x2) sur (x1, x2, x1 x2) dans un espace tridimensionnel. Dans ce nouvel espace on peut utiliser un plan pour séparer les deux sorties. Nous pouvons ensuite mapper les équations de ce plan sur l'espace 2D d'origine pour obtenir une limite de décision pour la classification. Cela peut résoudre efficacement le problème XOR.
Plus précisément, ce mappage peut être réalisé en utilisant l'astuce du noyau d'une machine à vecteurs de support. L'astuce du noyau est une méthode permettant de mapper une entrée dans un espace de grande dimension sans avoir à calculer explicitement ce mappage. Les fonctions de noyau couramment utilisées incluent la fonction de noyau linéaire, la fonction de noyau polynomial et la fonction de noyau de fonction de base radiale. Dans cet exemple, nous utiliserons la fonction noyau RBF.
Voici le code qui utilise Python pour implémenter une machine à vecteurs de support afin de résoudre le problème XOR :
from sklearn import svm # 输入数据 X = [[0, 0], [0, 1], [1, 0], [1, 1]] # 输出数据 y = [0, 1, 1, 0] # 定义SVM模型,使用RBF核函数 clf = svm.SVC(kernel='rbf') #使用输入和输出数据训练模型 clf.fit(X, y) # 预测新的输入数据 print(clf.predict([[0, 1], [1, 1], [0, 0], [1, 0]]))
Dans le code, nous définissons un ensemble de données d'entrée X et un ensemble de données de sortie y, puis utilisons le vecteur de support modèle de machine pour entraîner ces données. Nous utilisons la fonction du noyau RBF pour initialiser le modèle de machine à vecteurs de support, puis appelons la méthode fit() pour entraîner le modèle. Enfin, nous utilisons la méthode prédire() pour prédire les nouvelles données d'entrée et imprimer les résultats de la prédiction.
Dans cet exemple, nous avons utilisé quatre points de données d'entrée ([0,0], [0,1], [1,0], [1,1]) et les données de sortie correspondantes (0, 1, 1 , 0). Nous mappons ces points dans un espace tridimensionnel et les séparons à l'aide de la fonction du noyau RBF. Enfin, nous disposons d'un classificateur capable de prédire la sortie des nouvelles données d'entrée.
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!