簡體   English   中英

用C ++存儲表的最佳方法是什么

[英]What is the best way to store a table in C++

我正在使用C4.5算法的略微修改版本在C ++中編寫決策樹 每個節點代表一個屬性或數據集的一列,並且每個屬性的可能值都有一個子級。

我的問題是,如何記住訓練數據集,因為我必須為每個節點使用一個子集,因此我需要一種快速的方法來僅選擇行和列的子集。

主要目標是盡可能以最大的內存和最省時的方式(按優先級順序)執行此操作。

我認為最好的方法是擁有一個數組數組(或std :: vector)或類似的東西,並且每個節點都有一個列表(數組,vector等)或帶有column,line東西(可能是一個元組) )對該節點有效。

我現在應該有一個更好的方法來執行此操作,有什么建議嗎?

更新:我需要的是這樣的:

一開始我有以下數據:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False

但是對於第二個節點,我只需要以下數據:

Paris    4    5.0
New York 7    1.3
Paris    9    6.8

對於第三個節點:

Tokio    2    9.1
Tokio    0    8.4

但是,它具有數百萬條記錄的表,最多有數百列。

我要記住的是將所有數據保存在一個矩陣中,然后為每個節點保存當前列和行的信息。 像這樣:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False

節點2:

columns = [0,1,2]
rows = [0,1,3]

節點3:

columns = [0,1,2]
rows = [2,4]

這樣在最壞的情況下我只需要浪費

size_of(int) * (number_of_columns + number_of_rows) * node

這比為每個節點擁有一個獨立的數據矩陣要少得多。

在trie上如何使用: http : //en.wikipedia.org/wiki/Trie

還有關於如何實現特里的討論: 特里的實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM