一流的分类

时间:2018-02-11 12:51:26

标签: python scikit-learn

我有超过2500个样本进行了静态分析,每个样本提取了300多个特征。

在这些样本中,我已经区分了10多个APT类,我的目标是为每个类构建一个一类的分类器。

我正在使用python scikit库进行机器学习,特别是我面对的是One-class SVM。

第一个问题:这种方法还有其他一些好的一类分类器吗?

第二个问题:我必须提出一些可以定义分类器“准确性”的指标。现在我知道,对于单类SVM,准确性概念并没有那么明确。我报告了我的代码和我的概念:

import numpy as np
import pandas as pd
from sklearn import svm
from sklearn.model_selection import train_test_split


df = pd.read_csv('features_labeled_apt17.csv')

X = df.ix[:,1:341].values



X_train, X_test = train_test_split(X,test_size = 0.3,random_state = 42)



clf = svm.OneClassSVM(nu=0.1,kernel = "linear", gamma =0.1)
y_score = clf.fit(X_train)

pred = clf.predict(X_test)


print(pred)

这些代表代码的输出:

[ 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
1  1   1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
1  1 -1   1  1  1  1  1  1  1  1  1  1  1  1  1 -1  1  1  1  1  1  1  1  1  1 -1  1   1  1  1  1  1  1  1 -1  1  1  1  1  1  1  1  1 -1  1  1  1
1 1  1  1  1   1  1  1  1  1 -1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  
1  1  1  1  1   1  1  1  1  1  1]

1表示标记良好的样本,而-1表示错误的样本。

首先:您认为这可能是一个好方法吗? 第二:对于指标,如果我将测试集中的总元素除以错误的标记?

1 个答案:

答案 0 :(得分:-1)

根据我对机器学习算法的理解,你的用例不适合应用oneclass-SVM分类器。

通常,oneclass-svm用于无监督异常值检测问题。请参阅此page以查看oneclass-svm的实现以检测异常值。

只需显示您的数据框,我就会找到解决问题的新方法。