我是python的初学者,我正在使用tensorflow在python中学习机器学习。
我有两个数据集'trainset.csv''testset.csv'
trainset.csv like(只是示例):
#1 2 3 4 5 6 7 8 9 normal abnormal
---------------------------------
0 1 2 3 1 2 1 4 6 1 0
0 1 1 1 4 1 1 2 1 1 0
0 2 1 1 1 2 1 2 2 1 0
...
0 1 1 1 1 4 3 1 1 1 0
tesetset.csv like(只是示例):
#1 2 3 4 5 6 7 8 9
--------------------
0 1 2 1 3 4 1 4 5
0 1 1 1 4 5 5 5 5
0 2 3 1 5 2 1 2 2
...
0 1 6 1 7 4 3 4 1
如何训练我的列车集数据,该数据只显示正常特征并对测试集中的异常数据进行分类?
答案 0 :(得分:0)
我在这里使用pandas
库,因为使用数据非常方便。关于你的问题 - 我认为你必须从所有可能的价值组合中创建新的火车数据集,然后进行训练。
我们假设您有一个包含所有列的所有可能值的字典。我通过从您的火车数据框中获取所有可能的组合来伪造它:
>>> import pandas as pd
>>> del df['abnormal']
>>> cols = [x for x in df.columns if x != 'normal']
>>> cols
['1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> d = df[cols].apply(lambda x: list(x.unique())).to_dict()
>>> d
{'1': [0], '3': [2, 1], '2': [1, 2], '5': [1, 4], '4': [3, 1], '7': [1, 3], '6': [2, 1, 4], '9': [6, 1, 2], '8': [4, 2, 1]}
然后您可以从中创建完整的数据框:
>>> df_full = pd.DataFrame(list(itertools.product(*d.values())), columns=d.keys())
现在您可以创建新的列车数据框:
>>> df_train_new = pd.merge(df_full, df, how='left').fillna(0)
因此,它将包含所有可能的值组合+已填充normal
列
答案 1 :(得分:0)
我认为你需要异常的训练样例,否则网络将学习每次输出“正常”。如果你想在训练集中没有异常的情况下进行异常检测,我不确定神经网络是最好的方法。