我有兴趣测试SVM性能,将几个人分为四组/每组.当使用MATLAB中的svmtrain LibSVM函数时,我能够根据该等式的值得到用于对这4个组中的个体进行分类的三个方程式.计划如下:
All individuals (N)*
|
Group 1 (n1) <--- equation 1 ---> (N-n1)
|
(N-n1-n2) <--- equation 2 ---> Group 2 (n2)
|
Group 3 (n3) <--- equation 3 ---> Group 4(n4)
*N = n1+n2+n3+n4
Run Code Online (Sandbox Code Playgroud)
有没有办法在e1071 R包中使用svm函数来获得这些方程式?
我知道交叉验证用于选择好的参数.找到它们之后,我需要在不使用-v选项的情况下重新训练整个数据.
但我面临的问题是,在使用-v选项训练后,我获得了交叉验证的准确性(例如85%).没有模型,我看不到C和gamma的值.在那种情况下,我如何重新训练?
顺便说一句,我应用10倍交叉验证.例如
optimization finished, #iter = 138
nu = 0.612233
obj = -90.291046, rho = -0.367013
nSV = 165, nBSV = 128
Total nSV = 165
Cross Validation Accuracy = 98.1273%
Run Code Online (Sandbox Code Playgroud)
需要一些帮助..
为了获得最佳的C和gamma,我使用LIBSVM FAQ中提供的代码
bestcv = 0;
for log2c = -6:10,
for log2g = -6:3,
cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(TrainLabel,TrainVec, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
end
fprintf('(best c=%g, g=%g, rate=%g)\n',bestc, bestg, …Run Code Online (Sandbox Code Playgroud) 几何边界只是某个x(数据点)与高速公路之间的欧氏距离.
什么是功能边际的直观解释是什么?
注意:我意识到这里有一个类似的问题: 如何理解SVM中的功能边界?
然而,那里给出的答案解释了等式,但没有解释它的含义(正如我所理解的那样).
我正在尝试使用scikit学习包中的svm函数来获取python,但是我收到了错误消息:
from sklearn.utils.validation import check_arrays
Run Code Online (Sandbox Code Playgroud)
ImportError:无法导入名称'check_arrays'
我正在使用python 3.4.任何人都可以给我一个建议吗?提前致谢.
我看到在scikit-learn中我可以用最后3种不同的方式构建一个带线性内核的SVM分类器:
现在,我看到前两个分类器之间的区别在于前者是用liblinear实现的,后者是用libsvm实现的.
前两个分类器与第三个分类器有何不同?
我发现了几个与此相关的问题,但没有人解决我的疑虑.特别是,这个问题的两个答案让我更加困惑.
我正在基于一组特征训练线性SVM - 由图像产生的卷积神经网络特征.例如,我有一个3500x4096 X矩阵,像往常一样在列上的行和特征上有例子.
我想知道在输入SVM之前如何正确地标准化/规范化这个矩阵.我看到两种方式(使用sklearn):
标准化功能.它导致具有0均值和单一标准的特征.
X = sklearn.preprocessing.scale(X)
Run Code Online (Sandbox Code Playgroud)规范化功能.它导致具有单一规范的特征.
X = sklearn.preprocessing.normalize(X, axis=0)
Run Code Online (Sandbox Code Playgroud)归一化(76%准确度)比标准化(68%准确度)明显更好.
它是完全依赖数据集的选择吗?或者如何在这两种技术之间做出选择?
当我尝试在一些高维输入上应用一些ML算法(分类,更具体地说,特别是SVM)时,我应该如何处理,我得到的结果不太令人满意?
可以显示1,2或3维数据以及算法的结果,这样您就可以了解正在发生的事情,并了解如何解决问题.一旦数据超过3个维度,除了直观地使用参数,我不确定如何攻击它?
我一直致力于scikit-learn SVM的二进制分类问题.我已经计算了音频文件的功能并将它们写入CSV文件.这就是CSV文件中每一行的样子:
"13_10 The Long And Winding Road " "[-6.5633095666136669e-16,-1.56E-15,-3.21E-15,-2.20E-
15,-2.52E-15,-3.04E-15,-3.39E-15,-3.47E-15,-3.07E-15,-6.02E-15,-3.00E-15,-4.77E-15,-3.05E-
15,-2.13E-15,-1.57E-15,-1.87E-15,-2.05E-15,-1.76E-15,-1.38E-15,-9.89E-16,-7.89E-16,-8.99E-
16,-1.09E-15,-7.26E-16,-8.68E-16,-4.68E-16,-2.82E-16,-1.99E-16,-1.75E-16,-2.18E-16,-1.43E-
16,-1.56E-16,-1.91E-16,-1.21E-16,-4.82E-17,-4.39E-17,-2.89E-17,-2.05E-17,0.0]" 0
Run Code Online (Sandbox Code Playgroud)
第一列具有Audio的名称,第二列具有要素数组,最后一个要素是用于二进制分类的标签{0,1}.
数组中有39个浮点值.我使用以下代码从CSV文件中提取它们.
with open('File.csv', 'rb') as csvfile:
albumreader = csv.reader(csvfile, delimiter=' ')
data = list()
for row in albumreader:
data.append(row[0:])
data = np.array(data)
X_train = list()
Y_train = list()
k = data.shape[0]
for i in range(k):
feature = data[i][1]
x = map(float, feature[1:-2].split(','))
X_train.append(x)
label = data[i][2]
y = float(label)
Y_train.append(y)
Run Code Online (Sandbox Code Playgroud)
因此,当我打印X_train和Y_train时,我得到数组中的确切值.但是当我使用时
clf = svm.SVC(C=1.0, cache_size=200,kernel='linear', max_iter=-1)
clf.fit(X_train,Y_train)
Run Code Online (Sandbox Code Playgroud)
我得到错误说
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用libsvm的java绑定:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Run Code Online (Sandbox Code Playgroud)
我已经实现了一个"平凡"的例子,它可以在y中轻松地线性分离.数据定义为:
double[][] train = new double[1000][];
double[][] test = new double[10][];
for (int i = 0; i < train.length; i++){
if (i+1 > (train.length/2)){ // 50% positive
double[] vals = {1,0,i+i};
train[i] = vals;
} else {
double[] vals = {0,0,i-i-i-2}; // 50% negative
train[i] = vals;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个"特征"是类,并且训练集类似地定义.
训练模型:
private svm_model svmTrain() {
svm_problem prob = new svm_problem();
int dataCount = train.length;
prob.y = new double[dataCount];
prob.l = dataCount;
prob.x = new svm_node[dataCount][];
for (int i …Run Code Online (Sandbox Code Playgroud) svm ×10
libsvm ×4
scikit-learn ×4
matlab ×2
python ×2
arrays ×1
csv ×1
java ×1
python-2.7 ×1
r ×1
statistics ×1