非线性支持向量机在ScikitLearn中的错误

2024-09-27 20:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码尝试使用非线性支持向量机(RBF核)。在

raw_data1 = open("/Users/prateek/Desktop/Programs/ML/Dataset.csv")
raw_data2 = open("/Users/prateek/Desktop/Programs/ML/Result.csv")

dataset1 = np.loadtxt(raw_data1,delimiter=",")
result1 = np.loadtxt(raw_data2,delimiter=",")

clf = svm.NuSVC(kernel='rbf')
clf.fit(dataset1,result1)

然而,当我试图拟合时,我得到了错误

^{pr2}$

Link for Results.csv

Link for dataset

出现这种错误的原因是什么?在


Tags: csvrawnpopenmlusersdesktopdelimiter
1条回答
网友
1楼 · 发布于 2024-09-27 20:19:04

正如文档中指出的,nu参数是“训练错误分数的上界和支持向量分数的下界”。在

所以,每当你试图拟合你的数据而这个界限不能满足时,优化问题就变得不可行了。所以你的错误。在

事实上,我从1.循环到0.1(以十进制单位递减),仍然得到错误,然后用0.01进行尝试,没有引起任何投诉。但当然,你应该检查用这个值拟合模型的结果,检查预测的准确性是否可以接受。在

Update: actually I was curious and splitted your dataset to validate, output was 69% accuracy (also I think your training set might be very little)

为了重现性,这里,我进行了快速测试:

from sklearn import svm
import numpy as np 
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score

raw_data1 = open("Dataset.csv")
raw_data2 = open("Result.csv")
dataset1 = np.loadtxt(raw_data1,delimiter=",")
result1 = np.loadtxt(raw_data2,delimiter=",")

clf = svm.NuSVC(kernel='rbf',nu=0.01)
X_train, X_test, y_train, y_test = train_test_split(dataset1,result1, test_size=0.25, random_state=42)
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
accuracy_score(y_test, y_pred, normalize=True, sample_weight=None)

相关问题 更多 >

    热门问题