目录
源代码文件请点击此处!
多样性指标
基尼杂质指数(Gini Impurity Index)
若集合中包含 \(m\) 个元素和 \(n\) 个类别,其中 \(a_i\) 个元素属于第 \(i\) 个类别,则:
\[基尼杂质指数 = 1 - p_1^2 - p_2^2 - ... - p_n^2 \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) \]【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)
\[基尼杂质指数 = 1 - \bigg(\frac{8}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 = 0.32 \]【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)
\[基尼杂质指数 = 1 - \bigg(\frac{4}{10}\bigg)^2 - \bigg(\frac{3}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 - \bigg(\frac{1}{10}\bigg)^2 = 0.70 \]基尼指数越低,集合中的元素就越相似(数据集多样性越低)。
熵(Entropy)
若集合中包含 \(m\) 个元素和 \(n\) 个类别,其中 \(a_i\) 个元素属于第 \(i\) 个类别,则:
\[熵 = - p_1 \log_2(p_1) - p_2 \log_2(p_2) - ... - p_n \log_2(p_n) \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) \]【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)
\[熵 = - \frac{8}{10}\log_2 \bigg(\frac{8}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) = 0.722 \]【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)
\[熵 = - \frac{4}{10}\log_2 \bigg(\frac{4}{10}\bigg) - \frac{3}{10}\log_2 \bigg(\frac{3}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) - \frac{1}{10}\log_2 \bigg(\frac{1}{10}\bigg) = 1.846 \]熵越低,集合中的元素就越相似(数据集多样性越低)。
决策树的应用
我们所使用的数据集如下:
dataset = pd.DataFrame({
'x_0': [7, 3, 2, 1, 2, 4, 1, 8, 6, 7, 8, 9],
'x_1': [1, 2, 3, 5, 6, 7, 9, 10, 5, 8, 4, 6],
'y': [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]})
features = dataset[['x_0', 'x_1']]
labels = dataset['y']
使用基尼指数作为划分标准的决策树如下:
decision_tree = DecisionTreeClassifier(criterion='gini')
decision_tree.fit(features, labels)
decision_tree.score(features, labels)
tree.plot_tree(decision_tree, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])
使用基尼指数作为划分标准的决策树(划分深度只到第一层)如下:
decision_tree_depth_1 = DecisionTreeClassifier(criterion='gini', max_depth=1)
decision_tree_depth_1.fit(features, labels)
decision_tree_depth_1.score(features, labels)
tree.plot_tree(decision_tree_depth_1, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])
标签:10,frac,log,模型,tree,笔记,基尼,bigg,决策树
From: https://www.cnblogs.com/Mount256/p/18240486