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
有任何關於如何解決這個任何想法? 感謝