决策树
决策树是什么
它是一种监督学习算法,主要用于分类问题,适用于可分类的、连续的输入和输出变量。
决策树是这样的一种树,这棵树的每个分支节点表示多个可以选择的选项,并且每个叶节点表示最终所做的决策。
决策树算法:ID3
ID3代表的是Iterative Dichotomizer 3。它的基本思想是,通过在给定集合中使用自上而下的贪婪搜索算法来构造决策树,以测试每个树节点处的每个属性。
听起来很简单 - 但是我们应该选择哪个节点来构建正确且最精确的决策树呢?我们该如何决定呢?好吧,有一些措施可以帮助我们作出最佳选择!
循环:
A — > 最好的属性;
将A分配给每个节点的决策属性;
对于A的每个值,创建一个字节点;
将训练示例排序
如果 示例被很好地分类:
停止;
否则:
继续迭代
信息增益
什么是最好的属性呢?那就是能带给我们最大信息增益的属性。从广义上讲,这是一种数学方法,它可以通过选择特定属性来获得我们想要的信息量。但它的真正意义是,基于已知的特定属性的值,数据集表格的随机性会逐渐减少。信息增益定义如下:
S = 训练集
A = 特定属性
|Sv| = Sv中元素的数量
|S| = S中元素的数量
v = 属性的所有可能值
熵
机器学习中的熵也具有与热力学力几乎相同的含义,如果是随机性度量的话。
v = 属性的所有可能值
步骤:
1、计算数据集的熵;
2、对于每个属性/ 特征:
(1)计算所有分类值的熵;
(2)取当前属性的平均信息熵;
(3)计算当前属性的增益;
3、选择最高增益属性;
4、重复,直到得到我们想要的树。
第1步:数据预处理
#导入相关库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values
#将数据集拆分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
#特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test