我正在使用scikit-learn在python中使用svm.SVC对我的实例进行分类;然而,对于某些参数组合,拟合永远不会停止。这是因为算法需要更多的时间吗?或者算法不收敛到极值点。
请注意,我没有对我的数据做任何假设。知道了这一点,svm对于任意数据集是否总是收敛?
它应该总是收敛的,除非存在数值问题。
确保您的数据适当缩放。如果不同的特征具有不同数量级的值,这是一个坏主意。您可能希望将所有特征标准化到[-1,+1]范围内,特别是对于超过100个特征的问题。
Q:程序继续运行(输出,即许多点)。什么我该怎么办?
理论上libsvm保证收敛。因此,该意思是你正在处理条件不佳的情况(例如too)大/小参数),因此出现了数值困难。
参考:https://www.csie.ntu.edu.tw/~ cjlin/libsvm faq.html
按照Imanol &其他人,扩大你的培训和测试投入。
遵循一般标准,如:mean=0, STD=1
你可以使用sklearn中提供的StandardScaler API。预处理图书馆。
注意:只在训练输入集上拟合StandardScaler函数,并对训练和测试进行转换,因此应用相同的尺度。
scaler = StandardScaler().fit(train_ip)
scaler.transform(train_ip)
scaler.transform(test_ip)