我正在使用HOG,以便通过图像A提取一组功能。 HOG返回1xN元素的特征向量。 然而,线性SVM仅接受每个样本的2个特征,即训练数据矩阵的大小为Mx2。所以我如何调整HOG矢量来训练线性SVM。 请帮我。 感谢
答案 0 :(得分:2)
你是什么意思"线性SVM只接受每个样本的2个特征"?您可能会对SVM功能如何接受其训练数据感到困惑。这是我如何使用它的一个简单示例:
首先,让我们使用fitcsvm
使用500个随机数据样本(训练数据矩阵中的行)训练SVM模型,每个样本有1000个元素(训练数据矩阵中的列),其中前250个样本属于1级(前250行训练标签),最后250个样本属于0级(最后250行训练标签):
>> training_data = rand(500, 1000);
>> training_labels = [ones(250,1); zeros(250,1)];
>>
>> svm_model = fitcsvm(training_data, testing_data)
svm_model =
ClassificationSVM
PredictorNames: {1x1000 cell}
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'none'
NumObservations: 500
Alpha: [418x1 double]
Bias: 2.3217
KernelParameters: [1x1 struct]
BoxConstraints: [500x1 double]
ConvergenceInfo: [1x1 struct]
IsSupportVector: [500x1 logical]
Solver: 'SMO'
Properties, Methods
我们可以为10个测试样本生成一些随机测试数据,每个测试样本包含1000个元素,并从中创建一些预测:
>> test_data = rand(10, 1000);
>> predicted_classes = predict(svm_model, test_data)
predicted_classes =
1
1
1
1
1
0
0
0
1
0
这会回答你的问题吗?