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.
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)
基于这些参考: