使用全量比较,而不是最频繁和最不频繁的比较。
1.数据搜集
我们使用词集的模型,将全部命令去重后形成一个大型向量空间,每个命令代表一个特征,首先通过遍历全部命令,生成对应词集。
with open(filename) as f:
for line in f:
line = line.strip('\n')
dist.append(line)
fdist = FreqDist(dist).key()
2.特征化
使用词集将操作命令向量化。
def get_user_cmd_feature_new(user_cmd_list,dist):
user_cmd_feature=[]
for cmd_list in user_cmd_list:
v=[0]*len(dist)
for i in range(0,len(dist)):
if dist[i] in cmd_list:
v[i] += 1
user_cmd_feature.append(v)
return user_cmd_featrue
3.训练模型
user_cmd_list,dist = load_user_cmd_new("..")
user_cmd_featrue = get_user_cmd_feature_new(user_cmd_list,dist)
labels = get_label("...",2)
y = [0]*50+labels
neigh =KneightborsClassifier(n_neighbors = 3)
4.效果验证
使用交叉验证,10次取样和验证,提高验证可信度。
cross_validation.cross_val_score(neight, user_cmd_feature, y, n_jobs=-1, cv=10)
准确率达到93%