gpt4 book ai didi

machine-learning - 为什么它只适用于设置内核 : 'rbf' in SVM Classifier?

转载 作者:行者123 更新时间:2023-11-30 08:48:42 24 4
gpt4 key购买 nike

    from sklearn.model_selection import GridSearchCV
from sklearn import svm
params_svm = {
'kernel' : ['linear','rbf','poly'],
'C' : [0.1,0.5,1,10,100],
'gamma' : [0.001,0.01,0.1,1,10]
}
svm_clf = svm.SVC()
estimator_svm = GridSearchCV(svm_clf,param_grid=params_svm,cv=4,verbose=1,scoring='accuracy')
estimator_svm.fit(data,labels)
print(estimator_svm.best_params_)
estimator_svm.best_score_



/*
data.shape is (891,9)
labels.shape is (891) both are numeric 2-D and 1-D arrays.
*/

当我将 GridSearchCV 与 rbf 结合使用时,它只需 2.7 秒即可给出最佳参数组合..!但是当我单独制作包含任何“poly”或“线性”或与“rbf”的内核列表时,生成输出需要很长时间,即即使在 15-20 分钟后也没有给出输出,这意味着我做错了。我是机器学习(监督)的新手。我无法在编码中找到任何错误...我不明白幕后出了什么问题!

谁能向我解释一下,我做错了什么

最佳答案

不,根据您的代码,您没有做任何错误的事情。这里有很多因素在起作用

  • SVC 是一个复杂的分类器,需要计算数据集中每对点之间的距离。
  • 不同内核的复杂度也不同。我不确定,但我认为对于 rbf 内核来说它是 O((no_of_samples)^2 * n_features) ,而对于线性内核来说它是 O(n_samples*n_features) 。因此,并不是说 rbf 内核在 15 分钟内工作,那么线性内核也将在相似的时间内工作。

  • 此外,所花费的时间很大程度上取决于数据集及其中存在的数据模式。例如rbf 核可以在 C = 0.5 下快速收敛,但对于相同的 C 值,多项式核收敛可能需要更多时间。

  • 此外,如果不使用缓存,运行时间会增加很多。在 this answer ,作者提到它可能会增加到 O(n_samples^3 *n_features)。

  • 这里是官方文档from sklearn about SVM complexity 。请参阅this section以及使用 SVM 的实用技巧。

  • 您可以将 verbose 设置为 True 以查看分类器的进度及其训练方式。

引用文献

关于machine-learning - 为什么它只适用于设置内核 : 'rbf' in SVM Classifier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51350915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com