2015-08-25 2 views
0

Я занимаюсь классификацией, и у меня есть список с двумя размерами:Как сделать PCA и SVM для классификации в python

Data=[list1,list2] 

песни1 является 1000 * 784 размер. Это означает, что 1000 изображений были изменены с 28 * 28 размер на .

лист2 - 1000 * 1 размер. Он показывает метку, к которой принадлежат изображения. С кода ниже, я применил PCA:

from matplotlib.mlab import PCA 
results = PCA(Data[0]) 

выход, как это:

Out[40]: <matplotlib.mlab.PCA instance at 0x7f301d58c638> 

теперь, я хочу использовать SVM в качестве классификатора. Я должен добавить ярлыки. Поэтому у меня есть новые данные, подобные этому для SVm:

newData=[results,Data[1]] 

Не знаю, как использовать SVM здесь.

+0

Вы можете использовать пакет из sklearn сделать сокращение возможностей и обучение классификаторов. – William

ответ

3
from sklearn.decomposition import PCA 
from sklearn.svm import SVC 
from sklearn import cross_validation 

Data=[list1,list2] 
X = Data[0] 
y = Data[1] 
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.4, random_state=0) 
pca = PCA(n_components=2)# adjust yourself 
pca.fit(X_train) 
X_t_train = pca.transform(X_train) 
X_t_test = pca.transform(X_test) 
clf = SVC() 
clf.fit(X_t_train, y_train) 
print 'score', clf.score(X_t_test, y_test) 
print 'pred label', clf.predict(X_t_test) 

Это проверенный код на другой набор данных.

import numpy as np 
from sklearn import datasets 
from sklearn.decomposition import PCA 
from sklearn.svm import SVC 
from sklearn import cross_validation 

iris = datasets.load_iris() 
X = iris.data 
y = iris.target 
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.4, random_state=0) 
pca = PCA(n_components=2)# adjust yourself 
pca.fit(X_train) 
X_t_train = pca.transform(X_train) 
X_t_test = pca.transform(X_test) 
clf = SVC() 
clf.fit(X_t_train, y_train) 
print 'score', clf.score(X_t_test, y_test) 
print 'pred label', clf.predict(X_t_test) 

На основании этих ссылок:

+0

Благодарим вас за ответ. 'AttributeError: объект« PCA »не имеет атрибута« fit_tranform » – mar

+0

@mar, опечатка, fit_transform. Извините, что у меня нет среды для проверки этого кода. – William

+0

Теперь, как я могу использовать его для тестирования? – mar

0

Я думаю, что вы ищете http://scikit-learn.org/. Это библиотека python, где вы найдете PCA, SVM и другие классные алгоритмы для машинного обучения. У этого есть хороший учебник, но я рекомендую вам следовать за этим парнем http://www.astroml.org/sklearn_tutorial/general_concepts.html. Для вашего конкретного вопроса на странице SVM scikit-learn должно быть достаточно http://scikit-learn.org/stable/modules/svm.html.

Смежные вопросы