我在python中使用scikit-learn使用svm.SVC对我的实例进行分类;但是,对于某些参数组合,从不停止。这是因为算法需要更多时间。或者算法可能无法收敛到极值点。
请注意,我没有对我的数据做出任何假设。知道了,svm是否总是收敛于任意数据集?
答案 0 :(得分:3)
除非存在数字问题,否则它应该总是收敛。
确保您的数据已正确缩放。如果不同的特征具有不同数量级的值,那么这是一个坏主意。您可能希望将所有要素标准化为范围[-1,+ 1],尤其是对于具有100多个要素的问题。
问:程序继续运行(带输出,即多点)。什么 我该怎么办?
理论上,libsvm保证收敛。因此,这 意味着你正在处理病态的情况(例如 大/小参数)因此出现了数值上的困难。
答案 1 :(得分:0)
根据Imanol&Others的上述建议,扩展培训和测试投入。
遵循通用标准,例如:均值= 0和性病= 1
您可以使用sklearn.preprocessing库中提供的StandardScaler API。
注意:仅将StandardScaler功能适合训练输入集,并转换训练和测试,因此应用相同的比例。
scaler = StandardScaler().fit(train_ip)
scaler.transform(train_ip)
scaler.transform(test_ip)