如何在python中进行PCA和支持向量机分类

2024-06-26 01:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做分类,我有一张这样两种尺码的单子

Data=[list1,list2]

列表1的大小为1000*784。这意味着1000幅图像已经从28*28大小重新整形为784

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

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

输出如下:

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

现在,我想用支持向量机作为分类器。 我应该加上标签。所以我有了支持向量机的新数据:

newData=[results,Data[1]]

我不知道这里怎么用SVM。


Tags: 代码图像列表datamatplotlib分类标签向量
2条回答
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)

根据这些参考资料:

我想你要找的是http://scikit-learn.org/。这是一个python库,您可以在其中找到PCA、支持向量机和其他很酷的机器学习算法。它有一个很好的教程,但我建议你遵循这家伙的http://www.astroml.org/sklearn_tutorial/general_concepts.html。对于您的特定问题,scikit learn的支持向量机页面应该足够http://scikit-learn.org/stable/modules/svm.html

相关问题 更多 >