SVM分类器的准确率因机器而异

时间:2015-05-28 06:43:01

标签: python matlab machine-learning svm libsvm

我正在使用LIBSVM library,一个支持向量机的库,与Python和Matlab兼容,可以在数字识别算法和人脸识别算法中进行分类。

执行SVM分类时,我遇到了一个非常奇怪的问题。 当我在不同的计算机上运行程序时,使用相同的代码库,相同的解释器(在我的情况下为Python)以及相同的培训和测试数据,培训和测试的准确率会有很大差异。

以下是仅用于数字识别算法分类的函数调用的代码( 此处训练图像数量= 1409和测试图像数量= 997 ):

    from svmutil import *

    """Data for training"""
    train_features, train_labels = load_data('ocr_data/training/')

    """Data for testing"""
    test_features, test_labels = load_data('ocr_data/testing/')

    """Training a linear-SVM classifier"""
    train_features = train_features.tolist()
    test_features = test_features.tolist()


    problem = svm_problem(train_labels, train_features)
    parameter = svm_parameter('-t 0')

    model = svm_train(problem, parameter)
    svm_save_model('ocr.model', model)

    res = svm_predict(train_labels, train_features, model)
    res = svm_predict(test_labels, test_features, model)

完成培训和测试后的准确性输出,如下面的4gb RAM / 64位操作系统Windows 8:

Accuracy = 97.0901% (1368/1409) (classification) 
Accuracy = 35.6068% (355/997) (classification)

2gb RAM / 32位操作系统Windows 7的笔记本电脑中的相同输出:

Accuracy = 100.00% (1409/1409) (classification) 
Accuracy = 99.29% (990/997) (classification)

其他一些计算机还有其他可变精度输出,我不包括在内。我也遇到了另一个用Matlab编程的人脸识别算法的问题。

这是SVM的一个普遍问题还是我做错了什么。此外,如果这是SVM分类的常见问题,请告诉我这是什么原因。任何解决方案都很受欢感谢。

0 个答案:

没有答案