我有一组生成的数据,用于描述CSV中的Web连接,如下所示:
conn_duration,conn_destination,response_size,response_code,is_malicious
1564,130,279,532,302,0
1024,200,627,1032,307,0
2940,130,456,3101,201,1
完整CSV here
该类基于持续时间,destination_id和响应代码指示哪些是您感兴趣的。
我认为LogisticRegression在这里很合适,但是我得到的结果并不理想。在生成的数据集上,我有750行0类和150行1。
这就是我处理和提供数据的方式:
names = ['conn_duration', 'conn_destination', 'response_size', 'response_code', 'is_malicious']
dataframe = pandas.read_csv(path, names=names)
array = dataframe.values
# separate array into input and output components
X = array[:,0:4]
y = array[:,4]
scaler = Normalizer().fit(X)
normalizedX = scaler.transform(X)
# summarize transformed data
numpy.set_printoptions(precision=3)
print(normalizedX[0:5,:])
model = LogisticRegression()
model.fit(X, y)
# Two test bits of data, expect the first to be predicted 1 and the second to be 0
Xnew = [[[3492, 150, 750, 200]], [[3492, 120, 901, 200]]]
for conn in Xnew:
# make a prediction
ynew = model.predict(conn)
print("X=%s, Predicted=%s" % (conn[0], ynew[0]))
恶意流量的标准是响应代码为200,conn_destination为150,响应大小大于500。
我得到了合理的预测,但想知道LogisticRegression是否是使用的正确算法?
TIA!
最佳答案
如果代码可以正常工作,但是您不确定要使用哪种算法,则建议您尝试使用SVM,随机森林等。使用GridSearchCV模块确定哪种算法可以提供最佳性能。