标签: svm

解释径向基函数在支持向量机中的工作原理

我无法准确理解 SVM 在使用 RBF 时的工作原理。我的数学知识还可以,但到目前为止我遇到的每一个解释对我来说都太简洁了。我目前的理解如下。假设我使用 SVM 作为不可线性分离的数据集的二元分类器(所以 rbf 是正确的选择?)。当 SVM 被训练时,它会绘制一个超平面(我认为它就像 3d 中的平面,但具有更多维度?),以最好地分离数据。

调整时,改变 gamma 的值会改变超平面的表面(也称为决策边界?)。

这就是我开始感到困惑的地方。

因此,伽马值的增加会导致高斯分布更窄。这是否就像说可以绘制的平面上的凹凸(如果以 3d 形式绘制)可以更窄以更好地拟合训练数据?或者在 2D 中,这就像伽玛定义了分隔数据的线的弯曲程度一样?

我也很困惑这如何从有限数量的特征中产生无限维度的表示?任何好的类比都会对我有很大帮助。

kernel machine-learning gaussian svm

1
推荐指数
1
解决办法
2550
查看次数

R在RFE(递归特征消除)中使用我自己的模型来选择重要特征

使用 RFE,您可以获得特征的重要性等级,但现在我只能使用包内的模型和参数,例如:lmFuncs(linear model),rfFuncs(random forest) 似乎

caretFuncs
Run Code Online (Sandbox Code Playgroud)

可以对自己的模型和参数做一些自定义设置,但是我不知道细节,正式文档没有给出细节,我想在这个RFE过程中应用svm和gbm,因为这是我当前使用的模型训练,有人知道吗?

r svm feature-selection rfe r-caret

1
推荐指数
1
解决办法
1539
查看次数

在 SVM scikit-learn 中可视化 2D/3D 决策面

我让 sklearn svm 分类器工作。我只是使用特征向量对 2 个选项 0 或 1 进行分类。它工作正常。

我想使用图表在页面上对其进行可视化。

问题是我的向量是 512 项长度,所以很难在 x,y 图上显示。

有没有办法可视化像 512 这样的长特征向量的分类超平面?

python svm scikit-learn

1
推荐指数
1
解决办法
5020
查看次数

为什么在 sklearn GridsearchCV SVM 中使用 class_weight 时会出错?

下面是我的代码:

tuned_parameters = [
    {'kernel': ['linear], 'C':[1, 10], 'class_weight': ['auto']}, {'kernel': ['rbf'], 'C':[1,10], 'class_weight':['auto']}]
clf = GridSearchCV(svm.SVC(), tuned_parameters, cv=5, scoring='accuracy')
clf.fit(x_train,y_train)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

Traceback (most recent call last):
  File "/home/arajabi/PycharmProjects/Muffin/classification.py", line 77, in <module>
    clf3.fit(x_train, y_train)
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_search.py", line 639, in fit
    cv.split(X, y, groups)))
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 779, in __call__
    while self.dispatch_one_batch(iterator):
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 625, in dispatch_one_batch
    self._dispatch(tasks)
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 588, in _dispatch
    job = self._backend.apply_async(batch, callback=cb)
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 111, in apply_async
    result = ImmediateResult(func)
  File "/home/arajabi/anaconda3/lib/python3.5/site-packages/sklearn/externals/joblib/_parallel_backends.py", …
Run Code Online (Sandbox Code Playgroud)

python class svm weighted scikit-learn

1
推荐指数
1
解决办法
2125
查看次数

不使用train_test_split方法对sklearn的SVM进行数据预处理

我使用 Inception 为大约 11000 个视频生成了 1000 个特征(对象的概率)。这些视频已按流派分类,我希望 SVM 预测视频属于哪种流派。

我想将 SVM 应用于这些特征向量,但到目前为止我读过的每个教程都使用train_test_splitsklearn.model_selection.

我的数据看起来如何:

  • 我将数据集分成两个 csv 文件,其中包含约 9000 个训练记录和约 2000 个测试记录(每个记录有 1000 个特征)。它的格式为videoId,feature1,feature2,...,feature1000

  • 我有以流派为标题的文件,例如Training/education.txt用于培训和Testing/education.txt测试。每个文件都包含videoId属于该类型的 s。

我对数据科学和 pandas、sklearn 等库很陌生,所以我不知道应该如何准备这些数据。我一直在遵循本指南

import pandas as pd  

bankdata = pd.read_csv("D:/Datasets/bill_authentication.csv")  
X = bankdata.drop('Class', axis=1)  
y = bankdata['Class']  
from sklearn.model_selection import train_test_split  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)  
Run Code Online (Sandbox Code Playgroud)

我将如何利用我所拥有的东西来获得X_train, X_test, y_train, ?由于目前我的数据设置方式,y_test我无法使用类似的方法。train_test_split

svm pandas scikit-learn

1
推荐指数
1
解决办法
1410
查看次数

使用 SVM 的 coef_ 函数计算特征重要性

我正在开发一个文本分类项目,并尝试使用 SVC(kernel= '线性') 来获取特征重要性。这是我的代码:(我更改了这篇文章
中的代码)

X = df1[features]
y = df1['label']


# Create selector class for text and numbers
class TextSelector(BaseEstimator, TransformerMixin):
    """Transformer to select a single column from the data frame to perform additional transformations on"""
    def __init__(self, key):
        self.key = key

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        return X[self.key]

class NumberSelector(BaseEstimator, TransformerMixin):
    """For data grouped by feature, select subset of data at a provided key."""
    def __init__(self, key):
        self.key = key

    def fit(self, X, …
Run Code Online (Sandbox Code Playgroud)

python svm scikit-learn

1
推荐指数
1
解决办法
2125
查看次数

运行我的代码时无法获取 Predict_proba

我正在为不太大的数据集(1000 条记录)构建算法

但它有大约 2000 个列

我收到这个错误

  File "C:\Users\User\anaconda3\lib\site-packages\sklearn\svm\_base.py", line 603, in _check_proba
    raise AttributeError("predict_proba is not available when "

AttributeError: predict_proba is not available when  probability=False
Run Code Online (Sandbox Code Playgroud)

这是我的代码

multilabel_binarizer = MultiLabelBinarizer()
multilabel_binarizer.fit(df['Result'])
y = multilabel_binarizer.transform(df['Result'])
    
X = df[df.columns.difference(["Result"])]

xtrain, xval, ytrain, yval = train_test_split(X, y, test_size=0.2, random_state=9)
lr = SVC(gamma='auto')
clf = OneVsRestClassifier(lr)
clf.fit(xtrain, ytrain)
y_pred = clf.predict(xval)
Run Code Online (Sandbox Code Playgroud)

如何避免此类错误

当我为 LogisticRegression 运行相同的代码时,它工作正常

python machine-learning svm

1
推荐指数
1
解决办法
5086
查看次数

如何训练scvit中的svm学习csv文件中存在的训练数据

我将训练数据放在CSV文件中,其第一个元素是结果,其余元素构成特征向量.

我正在使用Weka来训练和测试这种训练数据的各种算法.但是现在我想多次使用经过训练的模型来测试一个特征向量,这个特征向量不是训练数据的一部分,我对如何去做也不知道.我想我可以通过使用scikit-learn来做到这一点.请提供一些帮助.

csv machine-learning svm weka scikit-learn

0
推荐指数
1
解决办法
3269
查看次数

结构风险最小化和SVM

我知道什么是SRM,但我不理解SRM和SVM之间的关系.谁能解释一下这个?为什么他们说SVM依赖于SRM方法?非常感谢!

classification svm

0
推荐指数
1
解决办法
969
查看次数

经过几次训练后,libsvm-java抛出NullPointerException

我使用libsvm java包进行句子分类任务.我有3节课.每个句子都表示为大小为435的向量.vector_file的格式如下:

1 0 0.12 0 0.5 0.24 0.32 0 0 0 ... 0.43 0 第一个数字表示类标签,剩余部分是矢量.

以下是我如何制作svm_problem:

public void makeSvmProb(ArrayList<Float> inputVector,float label,int p){
        // p is 0 to 77 (total training sentences)

        int idx=0,count=0;

        svm_prob.y[p]=label;
        for(int i=0;i<inputVector.size();i++){
            if(inputVector.get(i)!=0) {
                count++; // To get the count of non-zero values
            }

        }
        svm_node[] x = new svm_node[count];
        for(int i=0;i<inputVector.size();i++){

          if(inputVector.get(i)!=0){


              x[idx] = new svm_node();
              x[idx].index = i;
              x[idx].value = inputVector.get(i);

                idx++;
           }

        }
        svm_prob.x[p]=x;
}
Run Code Online (Sandbox Code Playgroud)

参数设置:

param.svm_type …
Run Code Online (Sandbox Code Playgroud)

machine-learning svm libsvm

0
推荐指数
1
解决办法
109
查看次数