关于Python Sklearn SVM 为什么运行很慢得到结果的原因

原因

由于SVM是需要不断的寻找可以最优区分开数据之间的超平面直到计算出的结果收敛为止,但由于数据的变化,例如区分高矮的准则是,超过180cm就是高,否则就不是的这种,当你给出身高的数据时,数据间具有明显的线性关系时,在你正确的选择核函数,线性函数时,svm就能很快的找到区分数据收敛的超平面,只需要重复计算几次就收敛。但当碰到需要区分一个人的高矮,而给出的数据是他喜欢玩英雄联盟or吃鸡的数据时,你就很难找出他们的联系,这个时候SVM选择的核函数是线性函数去区分这堆数据时,SVM也会无语,尽管计算了很多次,还是找不出区别,也就是找不到那个收敛的超平面。所以就会发现,有时候尽管很小的数据,SVM也久久算不出结果。

解决办法

第一:因为是反复计算都计算不出那个最优超平面,所以将模型中的参数max_iter设置一下,默认为-1,也就是计算出直到收敛的平面时,改成较小的次数就可以解决。
第二:将核函数改一下,例如线性的改成非线性的,说不定在另外一个层面上可以很好的区分这堆数据。

你可能感兴趣的:(机器学习,SVM,机器学习,python,慢,速度)