① https://qiita.com/yohiro/items/04984927d0b455700cd1 ② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c ③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5 ④ https://qiita.com/yohiro/items/d376f44fe66831599d0b A continué
scikit-learn Bibliothèque d'apprentissage automatique utilisée cette fois
Compte tenu de la longueur et de la largeur de chaque pétale et 萼, les variétés d'iris sont identifiées. 0 représente "Setosa". 1 signifie "Versicolor". 2 signifie "Virsinica".
from sklearn import datasets
from sklearn import svm
#Lecture des données de mesure de l'iris
iris = datasets.load_iris()
ʻIris` contient les données suivantes
iris.data
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
...
iris.target
[0 0 ... 1 1 ... 2 2]
...
Les deux ont 150 éléments. Probablement, il y a 50 réponses correctes pour chacun des «0: Setosa», «1: Versicolor» et «2: Virsinica».
#Machine à vecteur linéaire
clf = svm.LinearSVC()
#Formation avec machine à vecteur de support
clf.fit(iris.data, iris.target)
Entraînez la machine vectorielle de support en utilisant la méthode svm
.
La machine vectorielle linéaire utilisée cette fois est un modèle qui trace une ligne (ou une surface si elle est 3D) pour regrouper un groupe de plusieurs points entraînés dans un plan (probablement n'importe quel nombre de dimensions).
Dans ce cas, il y a quatre données à gérer: "longueur du pétale", "largeur du pétale", "萼 longueur" et "萼 largeur", donc tracez les données de réponse correctes dans un espace à 4 dimensions. Tracez-vous une ligne identifiable? Je pense que le.
Laissez clf créé ci-dessus lire les trois données et les classer comme "0: Setosa", "1: Versicolor" ou "2: Virsinica".
#Jugez le type
print(clf.predict([[5.1, 3.5, 1.4, 0.1], [6.5, 2.5, 4.4, 1.4], [5.9, 3.0, 5.2, 1.5]]))
Il y a un avertissement, mais est-il classé?
C:\Anaconda3\python.exe C:/scikit_learn/practice.py
C:\Anaconda3\lib\site-packages\sklearn\svm\_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
"the number of iterations.", ConvergenceWarning)
[0 1 2]
J'ai essayé de visualiser le type de données du contenu de iris.data
from sklearn import datasets
import matplotlib.pyplot as plt
#Lecture des données de mesure de l'iris
iris = datasets.load_iris()
# Setosa, Versicolour, Virginica
sepal_length = [[], [], []]
petal_length = [[], [], []]
sepal_width = [[], [], []]
petal_width = [[], [], []]
for num, data in enumerate(iris.data):
cls = iris.target[num]
sepal_length[cls].append(data[0])
petal_length[cls].append(data[1])
sepal_width[cls].append(data[2])
petal_width[cls].append(data[3])
plt.subplot(1,2,1)
plt.scatter(sepal_length[0], petal_length[0], c="red", label="Setosa", marker="+")
plt.scatter(sepal_length[1], petal_length[1], c="blue", label="Versicolour", marker="+")
plt.scatter(sepal_length[2], petal_length[2], c="green", label="Virginica", marker="+")
plt.xlabel('sepal_length')
plt.ylabel('petal_length')
plt.legend()
plt.subplot(1,2,2)
plt.scatter(sepal_width[0], petal_width[0], c="red", label="Setosa", marker="+")
plt.scatter(sepal_width[1], petal_width[1], c="blue", label="Versicolour", marker="+")
plt.scatter(sepal_width[2], petal_width[2], c="green", label="Virginica", marker="+")
plt.xlabel('sepal_width')
plt.ylabel('petal_width')
plt.legend()
plt.show()
En traçant une ligne entre les groupes Setosa, Versicolour et Virginica, on peut comprendre que (bien que les données proches de la ligne Versicolour, Virginica puissent être difficiles), il est susceptible d'être catégorisé grossièrement.
Recommended Posts