【问题标题】:Trained SVM has 0 percent training accuracy经过训练的 SVM 的训练准确率为 0%
【发布时间】:2018-12-26 19:01:24
【问题描述】:

我正在一些 EEG 数据上训练 SVM,以进行语音识别。我正在尝试对数据点进行二进制分类。这是训练我的 SVM 的代码。

rbf_clf = svm.SVC()
param_grid = {"C": [0.001, 0.01, 0.1, 1, 1.5],
            "gamma": [0.001, 0.01, 0.1, 1, 10],
            "kernel": ['linear', 'rbf', 'sigmoid', 'poly'],
            "decision_function_shape": ['ovo'],
            }
grid_cv = GridSearchCV(rbf_clf, param_grid=param_grid, cv=4, refit=True, n_jobs=4, pre_dispatch=8)
grid_cv.fit(training_features, training_labels)
rbf_clf = grid_cv.best_estimator_
rbf_clf.fit(training_features, training_labels)
prediction = rbf_clf.predict(training_features)
print(prediction)
print(testing_labels)
print(rbf_clf.decision_function(training_features))

作为一个实验者,我尝试对 training_features 进行预测,我期待一个完美的分类,因为这是训练分类器的数据。然而,预测的输出是一个全为 0 的向量。有谁知道为什么会发生这种情况?或者任何人都可以暗示我可以在哪里解决这个问题或者我错过了什么?感谢您的帮助!

【问题讨论】:

  • "the output of the prediction was a vector of all 0's" 是什么意思?也许训练数据的标签为 0,模型预测正确?

标签: machine-learning classification svm


【解决方案1】:

尝试改组您的数据。对于您的训练和测试拆分,所有训练示例都可能属于 0 类,因此您的分类器知道无论输入特征如何,始终输出 0。

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 2020-03-12
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2018-12-20
    • 2017-10-05
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多