Если я хочу, чтобы классификатор был 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% -ное сходство между ранжированными признаками двух классификаторов, которое я не наблюдал.