SVM 算法:不使用 sklearn 包(从头开始编码)

Posted

技术标签:

【中文标题】SVM 算法:不使用 sklearn 包(从头开始编码)【英文标题】:SVM Algorithm: Without using sklearn package (Coded From the Scratch) 【发布时间】:2018-08-11 19:17:49 【问题描述】:

我正在尝试在不使用 sklearn 包的情况下从头开始编写 SVM 算法,现在我想测试我的 X_test 和 Y_predict 的准确度得分。 sklearn 已经为此发挥了作用:

clf.score(X_test,Y_predict)

现在,我从 sklearn 包中跟踪代码,我找不到“score”函数是如何从头开始编码的。

以及如何从 sklearn SVC 生成模型:

SVM classifier :: SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape='ovr', degree=3, gamma=2, kernel='poly', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)

在我对数据集进行拟合和训练后,我希望生成模型,以便我可以使用 Pickle 保存和加载它。

【问题讨论】:

sklearn 中的所有分类器都使用accuracy_score(),这是对所有预测中正确预测百分比的简单计算。 【参考方案1】:

如果您使用 IPython,您通常可以通过将 ?? 附加到函数来找出定义函数的位置。例如:

>>> from sklearn.svm import SVC
>>> svc = SVC()
>>> svc.score??
Signature: svc.score(X, y, sample_weight=None)
Source:   
    def score(self, X, y, sample_weight=None):
        """Returns the mean accuracy on the given test data and labels.

        In multi-label classification, this is the subset accuracy
        which is a harsh metric since you require for each sample that
        each label set be correctly predicted.

        Parameters
        ----------
        X : array-like, shape = (n_samples, n_features)
            Test samples.

        y : array-like, shape = (n_samples) or (n_samples, n_outputs)
            True labels for X.

        sample_weight : array-like, shape = [n_samples], optional
            Sample weights.

        Returns
        -------
        score : float
            Mean accuracy of self.predict(X) wrt. y.

        """
        from .metrics import accuracy_score
        return accuracy_score(y, self.predict(X), sample_weight=sample_weight)
File:      ~/miniconda/lib/python3.6/site-packages/sklearn/base.py
Type:      method

在这种情况下,它来自ClassifierMixin,因此此代码可用于所有分类器。

https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/base.py#L310

https://ipython.readthedocs.io/en/stable/interactive/python-ipython-diff.html#accessing-help

【讨论】:

非常感谢!有用!我在任何地方搜索,但找不到任何可以解决我的问题的东西。谢谢! SVC 训练 (clf.fit) 从头开始​​生成模型怎么样?因为我将使用这个模型来保存和使用 pickle 加载它 @ChristelJunco 没问题!你应该能够在你的 python 类中使用 pickle 模块,就像它们在 scikit-learn 文档中显示的那样:scikit-learn.org/stable/modules/…

以上是关于SVM 算法:不使用 sklearn 包(从头开始编码)的主要内容,如果未能解决你的问题,请参考以下文章

sklearn调用SVM算法

sklearn SVM 默认距离测量

sklearn中SVM的实现

机器学习sklearn(69):算法实例(二十六)分类(十三)SVMsklearn.svm.SVC 附录

sklearn系列之 sklearn.svm.SVC详解

SVM的sklearn.svm.SVC()函数应用