Как решить эту проблему ранжирования функций с помощью Классификации опорных векторов? - PullRequest
1 голос
/ 08 мая 2019

Если я хочу, чтобы классификатор был SVM (с помощью scikit-learn), как я могу изменить переменную 'clf' так, чтобы классификатор svm, используемый для ранжирования результатов результатов, был с высокой точностью? Какие параметры / аргументы мне нужно добавить? Какой тип ядра SVC («линейный» или «rbf» или «сигмовидный» или другие) вы бы предложили для лучшей точности? Коды приведены по следующей ссылке: https://github.com/CynthiaKoopman/Network-Intrusion-Detection/blob/master/RandomForest_IDS.ipynb

У меня есть 10 функций, которые ранжируются (с RecursiveFeatureElimination scikit learning) от 1 до 10, которые относятся к DoS-атакам набора данных NSL-KDD с использованием RandomForestClassifier с точностью 99% (с использованием RFC в качестве модели прогнозирования).

from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
#from sklearn.svm import SVC

# Create a decision tree classifier. clf is the 'variable for classifier'

clf = RandomForestClassifier(n_jobs = 2)

# If classifier used is svm
#clf = SVC(kernel = "linear")
#rank all features, i.e continue the elimination until the last one

rfe = RFE(clf, n_features_to_select=1)
rfe.fit(X_newDoS, Y_DoS)
print ("DoS Features sorted by their rank:")
#print (sorted(zip(map(lambda x: round(x, 4), rfe.ranking_), newcolname_DoS)))
sorted_newcolname_DoS = sorted(zip(map(lambda x: round(x, 4), rfe.ranking_), newcolname_DoS))
sorted_newcolname_DoS

Я ожидаю более или менее 99% -ное сходство между ранжированными признаками двух классификаторов, которое я не наблюдал.

...