繁体   English   中英

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

[英]How to do PCA and SVM for classification in python

我正在分类,我有一个像这样的两种尺寸的清单。

Data=[list1,list2]

list1是1000 * 784尺寸。 这意味着1000张图片已从28 * 28尺寸重塑为784张

list2是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。

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,SVM和其他用于机器学习的出色算法。 它有一个很好的教程,但是我建议您遵循这个人的http://www.astroml.org/sklearn_tutorial/general_concepts.html 对于您的特定问题,scikit-learn的SVM页面应足够http://scikit-learn.org/stable/modules/svm.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM