如何训练仅包含True的数据集?在Python中

时间:2016-12-24 11:29:03

标签: python machine-learning tensorflow

我是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 

如何训练我的列车集数据,该数据只显示正常特征并对测试集中的异常数据进行分类?

2 个答案:

答案 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)

我认为你需要异常的训练样例,否则网络将学习每次输出“正常”。如果你想在训练集中没有异常的情况下进行异常检测,我不确定神经网络是最好的方法。