【发布时间】:2019-07-23 20:33:18
【问题描述】:
我有一组生成的数据以 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!
【问题讨论】:
标签: python machine-learning scikit-learn