【发布时间】:2019-07-24 12:56:35
【问题描述】:
我在一个数据集上应用了 svm,我达到了 100% 的准确率! 但是当我使用 matlab 分类器应用程序时,我达到了 98.8% 的准确率。 在他们两个中,内核都是 RBF 。 在 python 中,我使用 20% 的数据作为测试数据,80% 的数据作为训练数据。 谁能解释一下?
all_data = pd.read_csv('data.csv', header=0, lineterminator="\n")
all_data = shuffle(all_data,random_state= 20)
all_data = all_data.apply(LabelEncoder().fit_transform)
data = np.array(all_data.drop('g', axis=1), dtype=np.float32)
labels = np.array(all_data['g'])
train_data = data[:200]
train_lable = labels[:200]
test_data = data[200:]
test_lable = labels[200:]
class_names = [25]
clf = svm.SVC(gamma=0.001)
clf.fit(train_data, train_lable)
score = clf.score(test_data,test_lable)
print(score)
【问题讨论】:
-
每个设置都一样吗?无论如何,差异很小
-
我不知道matlab是怎么分割训练数据和测试数据的,所以训练数据和测试数据可能会有一些差异,内核是一样的,其他设置都是默认的。跨度>
-
嗯,有你的答案;匹配设置,您将获得相同的性能。
-
经过大量搜索(我是 ML 等的初学者),这里是 python 和 Matlab 中的设置:在 python + kernel : RBF 中,使用一对一的方法(默认根据 sklearn doc 的 svm 是一对一的) , gamma = 0.0001 。在 MATLAB + 内核中:高斯(经过一番搜索,我意识到这两个(RBF 和高斯)是相同的。使用一对一方法,内核比例为 0.94。框约束级别:1(我不知道如何更改在 python 中,我在 sklearn 的 svm 文档中找不到任何内容。当我将 gamma 更改为 0.94 或更高时,准确度从 100% 降低到 40% 左右。
标签: python matlab classification svm