У меня есть более 2500 образцов, на которых был выполнен статический анализ, и из каждого образца было извлечено более 300 признаков.
Среди этих образцов я выделил более 10 APT
классов, и моя цель состоит в том, чтобы построить для каждого класса одноклассовый классификатор.
Я использую библиотеку python scikit для машинного обучения, и, в частности, я сталкиваюсь с 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 представляет неправильный.
Во-первых: как вы думаете, может ли это быть хорошим подходом? Второе: для метрик, если я разделю общий элемент в тестовом наборе на неправильную маркировку?