我正在使用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分类的常见问题,请告诉我这是什么原因。任何解决方案都很受欢感谢。