我有一组生成的数据,用于描述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模块确定哪种算法可以提供最佳性能。

08-24 20:57