0
我想实现一个算法来从数据集中构建决策树。 我写了一个函数来计算子集和特定分区之间的信息增益,然后尝试所有可能的分区,并希望选择“最佳”分区,因为它具有最低的熵。 此过程必须是递归的,因此,在第一次迭代之后,它需要为您在上一步中获得的每个分区子集工作。Mathematica:零件分配
这些是数据:
X = {{1, 0, 1, 1}, {1, 1, 1, 1}, {0, 1, 1, 1}, {1, 1, 1, 0}, {1, 1, 0, 0}}
Xfin[0]=X
这是函数:用于分区的子集的每个,尝试所有可能的分区和计算IG
。然后,它选择具有IGMAX
分区:
Partizioneottimale[X_, n_] :=
For[l = 1, l <= Length[Flatten[X[n], n - 1]], l++,
For[v = 1, v <= m, v++,
If[IG[X[n][[l]], Partizione[X[n][[l]], v]] == IGMAX[X[n][[l]]],
X[n + 1][[l]] := Partizione[X[n][[l]], v]]]]
然后我把它叫做:
Partizioneottimale[Xfin, 0]
,它的第一个正常工作:
Xfin[1]
{{{1, 0, 1, 1}, {1, 1, 1, 1}, {0, 1, 1, 1}, {1, 1, 1, 0}}, {{1, 0, 0, 0}}}
这是最低的熵分区。
但它不为下者工作:
Partizioneottimale[Xfin, 1]
Set delayed::steps : Xfin[1+1] in the part assignment is not a symbol
有任何关于如何解决这个任何想法? 感谢