① https://qiita.com/yohiro/items/04984927d0b455700cd1 ② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c ③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5 ④ https://qiita.com/yohiro/items/d376f44fe66831599d0b Fortsetzung
scikit-learn Diesmal verwendete Bibliothek für maschinelles Lernen
Anhand der Länge und Breite jedes Blütenblatts und 萼 werden die Irisarten identifiziert. 0 steht für "Setosa". 1 steht für "Versicolor". 2 steht für "Virsinica".
from sklearn import datasets
from sklearn import svm
#Iris-Messdaten lesen
iris = datasets.load_iris()
"Iris" enthält die folgenden Daten
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]
...
Beide haben 150 Elemente. Wahrscheinlich sind 50 korrekte Antwortdaten für "0: Setosa", "1: Versicolor" und "2: Virsinica" enthalten.
#Lineare Vektormaschine
clf = svm.LinearSVC()
#Training mit Support Vector Machine
clf.fit(iris.data, iris.target)
Trainieren Sie die Support-Vektor-Maschine mit der Methode "svm". Die diesmal verwendete lineare Vektormaschine ist ein Modell, das eine Linie (oder eine Oberfläche, wenn es sich um 3D handelt) zeichnet, um eine Gruppe mehrerer Punkte zu gruppieren, die in eine Ebene (wahrscheinlich eine beliebige Anzahl von Dimensionen) getrieben werden. In diesem Fall müssen vier Daten verarbeitet werden: "Blütenblattlänge", "Blütenblattbreite", "萼 Länge" und "萼 Breite". Zeichnen Sie daher die richtigen Antwortdaten in einem 4-dimensionalen Raum. Zeichnen Sie eine identifizierbare Linie? Ich glaube, dass der.
Lassen Sie clf, das oben erstellt wurde, die drei Daten lesen und klassifizieren Sie sie entweder als "0: Setosa", "1: Versicolor" oder "2: Virsinica".
#Beurteilen Sie den Typ
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]]))
Es gibt eine Warnung, aber ist sie klassifiziert?
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]
Ich habe versucht zu visualisieren, welche Art von Daten der Inhalt von iris.data ist
from sklearn import datasets
import matplotlib.pyplot as plt
#Iris-Messdaten lesen
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()
Durch Zeichnen einer Linie zwischen den Gruppen Setosa, Versicolour und Virginica kann verstanden werden, dass (obwohl die Daten in der Nähe der Linie Versicolour, Virginica schwierig sein können) sie wahrscheinlich grob kategorisiert werden.
Recommended Posts