我正在使用比利时交通标志数据集在MATLAB中编写交通标志识别代码。数据集由培训数据和测试数据组成。
我使用VL_HOG函数从VL_feat库中调整给定图像的大小并提取HOG特征,然后使用训练数据集中的所有标记训练多类支持向量机。
我特别感兴趣的是探测到8个信号。问题1:我是否应该只使用这8个符号的训练集来训练模型,还是用整个训练数据集来训练模型,而忽略我在检测阶段不感兴趣的迹象?
在训练多类支持向量机时,我想利用测试数据测试分类器的性能.问题2:有人能指导我如何做到这一点吗?我发现了一些与我正在寻找的可用这里类似的东西。如果我能获得定量数据,如百分比形式的混淆矩阵,那就太好了。
谢谢!
发布于 2018-05-14 08:32:13
机器学习过程通常有三个步骤:
这三个数据集的交集必须是零,它们应该来自相同的分布。
回顾一下,第一件事是两个数据集的命名约定:
我特别感兴趣的是探测到8个信号。问题1:我是否应该只使用这8个符号的训练集来训练模型,还是用整个训练数据集来训练模型,而忽略我在检测阶段不感兴趣的迹象?
这取决于您正在设计的算法的实际应用程序是否会遇到这些剩余的标志。如果是这样的话,我会给这些标志一个标签,例如“不关心”。该算法应该有能力识别你的8个标志,并知道其他的是不重要的,但不要落在你想要的目标。相反,如果算法总是使用这8个符号,则只能使用这些图像。还有其他方法:您可以训练以前的支持向量机,其中设置两组符号(二进制分类器或支持向量数据描述),其中一组包含目标8,另一组包含其余的符号。然后,另一种支持向量机只有在先前对所需的8种符号进行分类后才能识别出该符号(该SVM仅用这8种符号进行训练)。
在训练多类支持向量机时,我想利用测试数据测试分类器的性能.问题2:有人能指导我如何做到这一点吗?我在这里发现了一些与我正在寻找的类似的东西。如果我能获得定量数据,如百分比形式的混淆矩阵,那就太好了。
考虑到这一点,我想您必须将您的数据集命名为培训和评估。首先使用培训数据对模型进行培训,然后评估其如何与评估数据进行泛化。首先,您必须决定您将使用哪些度量标准,我建议您在每个类中使用精确性和召回性。一旦您有了经过培训的模型,您就可以在评估测试中执行预测,并获得该数据集的指标。例如,如果您对评估数据的结果比对培训数据的结果差,则您的模型正在对培训数据集进行过度拟合。
不过,我强烈建议您在培训数据集上使用交叉验证,请访问此链接。
发布于 2018-12-19 15:43:26
有许多不同的参数可以通过比较真实标签和预测标签来评估您的方法的性能。我建议使用PyCM模块,它可以给出各种各样的参数。
您可以在python中使用以下简单代码:
>>> from pycm import *
>>> y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2] # or y_actu = numpy.array([2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2])
>>> y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2] # or y_pred = numpy.array([0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2])
>>> cm = ConfusionMatrix(actual_vector=y_actu, predict_vector=y_pred) # Create CM From Data
>>> print(cm)https://datascience.stackexchange.com/questions/31613
复制相似问题