如何在python中进行PCA和SVM分类

mar*_*mar 1 python classification svm pca

我正在做分类,我有一个像这样的两个大小的列表;

Data=[list1,list2]
Run Code Online (Sandbox Code Playgroud)

list1是1000*784大小.这意味着已将1000张图像从28*28大小重新整形为784.

list2是1000*1大小.它显示每个图像所属的标签.使用以下代码,我应用了PCA:

from matplotlib.mlab import PCA
results = PCA(Data[0])
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

Out[40]: <matplotlib.mlab.PCA instance at 0x7f301d58c638>
Run Code Online (Sandbox Code Playgroud)

现在,我想使用SVM作为分类器.我应该添加标签.所以我为SVm提供了这样的新数据:

newData=[results,Data[1]]
Run Code Online (Sandbox Code Playgroud)

我不知道如何在这里使用SVM.

Wil*_*iam 8

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)
Run Code Online (Sandbox Code Playgroud)

这是另一个数据集上的测试代码.

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)
Run Code Online (Sandbox Code Playgroud)

基于这些参考: