Scikit-Learn - отличный модуль Python, который снабжает support vector machine множеством алгоритмов. Я изучаю, как использовать модуль в течение последних нескольких дней, и я заметил, что он сильно зависит от отдельного модуля numpy.Как получить данные в формате ndarray для SKLearn?
Я понимаю, что делает модуль, но я все еще узнаю, как это работает. Вот очень краткий пример того, что я использую для sklearn
:
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%.
Это очень простой классификации. Существует 10 классов: 0,1,2,3,4,5,6,7,8,9.
Используя следующий код с matplotlib.pyplot:
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()
Первый пиксель (слева направо, сверху вниз, как чтение) будет представлена 0. То же самое для второго, но третье будет представлено 7 или что-то (диапазон от 0 до 15), четвертый - около 13. Вот фактические данные для изображения:
[[ 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.]]
Так что я задал вопрос:, если я хотел классифицировать текстовые данные, например, сообщения на форуме в неправильном подфоруме/категории, как бы преобразовать эти данные в числовую систему, используемую в этом примере набора данных?
Вам нужно будет сгладить его до одного вектора. Таким образом, ваш массив numpy будет nx64, где n - количество изображений, и каждый столбец представляет один пиксель вашего изображения. Очевидно, вы теряете много интересной информации с этим представлением вашего изображения, что является одной из причин, почему сверточные нейронные сети, вообще говоря, намного превосходят, когда дело доходит до классификации изображений. – David