Scikit-Learn ist ein großartiges Python-Modul, das eine support vector machine mit vielen Algorithmen liefert. Ich habe gelernt, wie man das Modul in den letzten Tagen benutzt, und ich habe bemerkt, dass es stark auf dem separaten numpy Modul beruht.Wie bekomme ich Daten in das NDarray-Format für SKLearn?
Ich verstehe, was das Modul tut, aber ich lerne immer noch darüber, wie es funktioniert. Hier ist ein sehr kurzes Beispiel von dem, was ich verwende sklearn
für:
from sklearn import datasets, svm
import numpy
digits = datasets.load_digits() #image pixel data of digits 0-9 as well as a chart of the corresponding digit to each image
clf = svm.SVC(gamma=0.001,C=100) #SVC is the algorithm used for classifying this type of data
x,y = digits.data[:-1], digits.target[:-1] #feed it all the data
clf.fit(x,y) #"train" the SVM
print(clf.predict(digits.data[0])) #>>>[0]
#with 99% accuracy, all of the data consists of 1797 samples.
#if this number gets smaller, the accuracy decreases. with 10 samples (0-9),
#accuracy can still be up to as high as 90%.
Die sehr einfache Klassifizierung ist. Es gibt 10 Klassen: 0,1,2,3,4,5,6,7,8,9.
den folgenden Code mit matplotlib.pyplot Verwendung:
import matplotlib.pyplot as plt #in shell after running previous code
plt.imshow(digits.images[0],cmap=plt.cm.gray_r,interpolation="nearest")
plt.show()
das erste Pixel (von links nach rechts, von oben nach unten, wie das Lesen) dargestellt werden würde durch eine 0. Das gleiche gilt für die zweite, aber die dritte wäre durch 7 oder etwas dargestellt (Bereich ist 0 bis 15), vierte ist etwa 13. Hier sind die tatsächlichen Daten für das Bild:
[[ 0. 0. 5. 13. 9. 1. 0. 0.]
[ 0. 0. 13. 15. 10. 15. 5. 0.]
[ 0. 3. 15. 2. 0. 11. 8. 0.]
[ 0. 4. 12. 0. 0. 8. 8. 0.]
[ 0. 5. 8. 0. 0. 9. 8. 0.]
[ 0. 4. 11. 0. 1. 12. 7. 0.]
[ 0. 2. 14. 5. 10. 12. 0. 0.]
[ 0. 0. 6. 13. 10. 0. 0. 0.]]
Also meine Frage ist das: Wenn ich Textdaten klassifizieren wollte, zum Beispiel Forenbeiträge im falschen Unterforum/Kategorie, wie würde ich diese Daten in das in diesem Beispiel verwendete Zahlensystem konvertieren?
Sie müssten es zu einem einzigen Vektor reduzieren. Ihr numpy Array wäre also nx64, wobei n die Anzahl der Bilder und jede Spalte ein Pixel in Ihrem Bild darstellt. Offensichtlich verlierst du mit dieser Darstellung deines Bildes eine Menge interessanter Informationen, was einer der Gründe dafür ist, warum konvolutionelle neuronale Netze im allgemeinen weit überlegen sind, wenn es um die Bildklassifizierung geht. – David