首先,为了提供完整的信息披露,我想指出这与机器学习课程中的家庭作业有关.这个问题不是作业问题,而是我需要弄清楚的是为了完成创建ID3决策树算法的更大问题.
在给出真值表时,我需要生成类似于以下的树
let learnedTree = Node(0,"A0", Node(2,"A2", Leaf(0), Leaf(1)), Node(1,"A1", Node(2,"A2", Leaf(0), Leaf(1)), Leaf(0)))
Run Code Online (Sandbox Code Playgroud)
learnedTree是BinaryTree类型,我定义如下:
type BinaryTree =
| Leaf of int
| Node of int * string * BinaryTree * BinaryTree
Run Code Online (Sandbox Code Playgroud)
ID3算法考虑了各种方程式来确定在哪里拆分树,而且我已经弄明白了,我只是在从真值表创建学习树时遇到了麻烦.例如,如果我有下表
A1 | A2 | A3 | Class
1 0 0 1
0 1 0 1
0 0 0 0
1 0 1 0
0 0 0 0
1 1 0 1
0 1 1 0
Run Code Online (Sandbox Code Playgroud)
我决定拆分属性A1,最后会得到以下内容:
(A1 = 1) A1 (A1 = 0)
A2 | A3 | …Run Code Online (Sandbox Code Playgroud) f# ×1