2016-12-24 29 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

相關問題