2016-12-24 74 views
2

我是一名Python初学者,我正在使用tensorflow在python中学习机器学习。如何训练仅包含True的数据集?在Python中

我有两个数据集 'trainset.csv' 'testset.csv'

trainset.csv等(只是例子):

#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等(只是例子):

#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

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

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

相关问题