Python 支持向量机如何处理容易混淆的特征向量?

Python 支持向量机如何处理容易混淆的特征向量?,python,machine-learning,svm,feature-extraction,Python,Machine Learning,Svm,Feature Extraction,假设我有以下特征向量: 训练向量: 第1类: [ 3, 5, 4, 2, 0, 3, 2], [33,50,44,22,0,33,20] 第2类: [ 1, 2, 3, 1, 0, 0, 4], [11,22,33,11,0,0,44] 测试向量: 第1类: [3305504402200330200] 第2类: [110220333111,0,0444] 我使用支持向量机,它从训练向量中学习,然后对测试样本进行分类 正如您所看到的,特征向量具有非常不同的维度:训练集特

假设我有以下特征向量:

训练向量:

第1类: [ 3, 5, 4, 2, 0, 3, 2], [33,50,44,22,0,33,20]

第2类: [ 1, 2, 3, 1, 0, 0, 4], [11,22,33,11,0,0,44]

测试向量:

第1类: [3305504402200330200]

第2类: [110220333111,0,0444]

我使用支持向量机,它从训练向量中学习,然后对测试样本进行分类

正如您所看到的,特征向量具有非常不同的维度:训练集特征是非常低值的数字,而测试集向量是非常高值的数字

我的问题是SVM从这些特征向量中学习是否令人困惑

当然,当我进行矢量缩放时,差异仍然存在:

例如,在类1的特征向量上应用standardScaler()后:

培训:

[0.19 1.53 0.86-0.48-1.82 0.19-0.48]

[20.39 31.85 27.80 12.99-1.82 20.39 11.64]

测试: [220.45368.63294.54146.35-1.82220.45132.88]

基本上,这是一个现实世界的问题,我之所以问这个问题,是因为我已经开发了一种方法,可以为我的特定情况预缩放这些特征向量

因此,在我使用预缩放方法后,类别1的特征向量将变成:

培训:

[3.5.4.2.0.3.2]

[2.75 4.16666667 3.666667 1.83333 0.2.75 1.666[7]

测试: [ 2.84482759 4.74137931 3.79310345 1.89655172 0. 2.84482759 1.72413793]

这使得它们在性质上非常相似

将standardScaler()应用于预缩放向量时,效果会更好:

培训:

[0.61.0.80.40.0.60.4]

[0.55 0.83333 0.73333 0.36666667 0.0.55 0.33333]

测试: [ 0.56896552 0.94827586 0.75862069 0.37931034 0. 0.56896552 0.34482759]


最终的问题是,我的预缩放方法是否会以任何方式帮助支持向量机?这更多的是一个理论问题,任何对此的洞察都是值得赞赏的。

是的,它将影响支持向量机的性能。看起来你的测试向量只是训练向量的缩放版本。SVM无法知道缩放与您的情况无关(除非您提供了大量不同缩放的训练向量)


对于缩放不相关的特征向量,通常的做法是将所有测试和训练向量缩放到一个公共长度

是的,它会影响支持向量机的性能。看起来你的测试向量只是训练向量的缩放版本。SVM无法知道缩放与您的情况无关(除非您提供了大量不同缩放的训练向量)

对于缩放不相关的特征向量,通常的做法是将所有测试和训练向量缩放到一个公共长度