功能减少

时间:2016-05-21 07:27:53

标签: image-processing feature-extraction

如何减少要素尺寸?我的功能如下:

1(类号)10_10_1(文件名)0 0 0 0 0 0 0 0 0.564971751 23.16384181 25.98870056 19.20903955 16.10169492 13.27683616 1.694915254 0 0 0 0 0 0 0 3.95480226 11.5819209 20.33898305 60.4519774 3.672316384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.107344633 62.99435028 33.89830508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.412429379 66.66666667 31.92090395 0 0 0 0 0 0 0 0 0 0 0 0 0 0.564971751 22.59887006 26.83615819 46.89265537 3.107344633 0 0 0 0 0 0 0 0 0 0 0 0 0 0.564971751 16.38418079 28.53107345 50.84745763 3.672316384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90.6779661 9.322033898 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.847457627 90.11299435 9.039548023 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.79661017 81.3559322 0.847457627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27.11 864407 72.88135593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.564971751 37.85310734 61.29943503 0.282485876 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.412429379 50.84745763 47.45762712 0.282485876 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24.57627119 75.42372881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.23163842 82.20338983 0.564971751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.37853107 70.62146893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55.64971751 44.35028249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64.40677966 35.59322034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67.79661017 32.20338983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66.66666667 33.33333333 0 0 0 0 0 0 0 0 0 0 0 0 1 3 2 6 7 5 4 8 9 10 11 12 13 14 15 16 17 18 14.81834463 3.818489078 3.292 123621 2.219541777 2.740791003 1.160544518 2.820053602 1.006906813 0.090413195 2.246638594 0.269778302 2.183126126 2.239168249 0.781498607 2.229795302 0.743329919 1.293839141 0.783068011 1.104421291 0.770312707 0.697659061 1.082266169 0.408339745 1.073922207 0.999148017 0.602195061 1.247286588 0.712143548 0.867327913 0.603063537 0.474115683 0.596387106 0.370847522 0.54900076 0.35930586 0.580272233 0.397060362 0.535337691

在文件名之后,给出了特征值。

2 个答案:

答案 0 :(得分:0)

如果您的功能无人监管,则可以使用PCA

import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
pca.fit(X)
PCA(copy=True, n_components=2, whiten=False)
print(pca.explained_variance_ratio_) 

如果受到监督,您可以使用LDA

import numpy as np
from sklearn.lda import LDA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])
clf = LDA()
clf.fit(X, y)

答案 1 :(得分:0)

为了减少传递给模型的特征量,除了其他特征之外,还可以使用特征缩减或特征删除/选择。这里已经指出了一些常用的特征减少方法,如主成分分析( PCA ),线性判别分析( LDA ),或者偏最小二乘回归( PLSR )。这些基本上将原始数据投影到子空间中,该子空间旨在以较少的特征来表示信息。特别是,PCA因此试图最大化原始数据中保留的方差(无监督),而LDA试图最小化类内方差并最大化类间距离(监督,用于分类),并且PLSR试图最大化保留原始数据的方差,并最大化与目标变量的相关性(监督,回归)。

此外,可以使用经典的特征选择来减少特征量。那些不会将数据投射到子空间中但是选择“有用的”#34;直接来自现有功能集。通常这些方法分为要素过滤器要素包装,其中过滤器通过仅查看要素和目标变量来决定要使用哪些要素(例如,尝试最小化 - 特征相关,同时最大化特征 - 目标 - 相关性)。相比之下,特征包装器还考虑使用所选特征的模型 - 因此它们直接优化模型性能。通常,过滤器在计算上比包装器便宜 - 但与使用PCA类似,功能过滤器不一定需要提高后续模型性能,因为他们不知道要优化的

编辑:当您处理图像数据时,如果单独使用,功能过滤器和包装器可能不是最佳的 - 它们可能需要在使用之前进行图像预处理和/或缩小尺寸。

如果您使用的是R,我建议您使用caret软件包,它提供了已嵌入到模型模型培训和评估过程中的所有内容,这非常重要(有关其过滤器/包装器的一些详细信息,请参阅here。以下是使用上述方法的小片段:

library(caret)
# PCA with preserving 95% variance in original data
modelPca <- train(x = iris[,1:4], iris[,5], preProcess=c('center', 'scale', 'pca'), trControl=trainControl(preProcOptions=list(thresh=0.95)),  method='svmLinear', tuneGrid=expand.grid(C=3**(-3:3)))
# LDA with selection of dimensions
modelLda2 <- train(x = iris[,1:4], y = iris[,5], method='lda2', tuneGrid=expand.grid(dimen=1:4))
# PLSR with selection of dimensions
modelPls <- train(x = iris[,1:3], y = iris[,4], method='pls', tuneGrid=expand.grid(ncomp=1:3))
# feature wrapper: (backwards) recursive feature elimination (there exist more...)
modelRfe <- rfe(x = iris[,1:4], y = iris[,5], sizes = 1:4, rfeControl = rfeControl())
# feature filter: univariate filtering
modelSbf <- sbf(x = iris[,1:4], y = iris[,5], sbfControl = sbfControl())