在C+中存储表的最佳方式是什么+; 我用C++的一个稍微修改的版本编程C++中的决策树。每个节点表示数据集的一个属性或一列,并且每个属性的可能值都有一个子节点
我的问题是如何存储训练数据集,因为我必须为每个节点使用一个子集,所以我需要一种只选择行和列的子集的快速方法 主要目标是尽可能在内存和时间效率最高的情况下完成(按优先级顺序) 我认为最好的方法是有一个数组(或std::vector)或类似的东西,每个节点都有一个列表(数组、向量等)或一些对该节点有效的在C+中存储表的最佳方式是什么+; 我用C++的一个稍微修改的版本编程C++中的决策树。每个节点表示数据集的一个属性或一列,并且每个属性的可能值都有一个子节点,c++,data-structures,decision-tree,C++,Data Structures,Decision Tree,我的问题是如何存储训练数据集,因为我必须为每个节点使用一个子集,所以我需要一种只选择行和列的子集的快速方法 主要目标是尽可能在内存和时间效率最高的情况下完成(按优先级顺序) 我认为最好的方法是有一个数组(或std::vector)或类似的东西,每个节点都有一个列表(数组、向量等)或一些对该节点有效的列、行(可能是元组)对 我现在应该有更好的方法,有什么建议吗 更新:我需要的是这样的东西: Paris 4 5.0 True New York 7 1.3 True To
列、行(可能是元组)对
我现在应该有更好的方法,有什么建议吗
更新:我需要的是这样的东西:
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 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
但对于第二个节点,我只需要以下数据:
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中使用如何:
还讨论了如何实施trie:
在C++中,总是在数组之前思考。@ JoaCHIMPILBOG是的,我几乎总是这样做,但是我从来没有使用向量向量,所以我不确定这是不是一个好主意。为什么C5.0算法?@ Eutho.Tiib,我看到C5算法只是有一些内存效率增强,它并没有真正生成比C4.5或其前身ID3算法更好的决策树。您能详细介绍一下如何使用trie来表示数据表吗?