决策树算法对数据进行分类的一种算法,根据数据的属性进行分类,例如对鸢尾花进行分类,可以根据花瓣大小进行分类。决策树可以使用信息熵和基尼指数进行数据分类。
- 信息熵:信息熵越低,样本不确定性越小,对应的纯度就越高。
- 基尼指数:基尼表示集合的不确定性,基尼指数越小代表不确定性越小。
决策树通过上述公式,递归的找到最优解,并对数据集进行切分创建树节点。
基尼决策树
使用Sklearn 实现基尼决策树
# 准备数据
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
from utils import feature_split, calculate_ginifrom sklearn import datasets
data = datasets.load_iris()
X, y = data.data, data.targety = y.reshape(-1,1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)# 分类
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)print(accuracy_score(y_test, y_pred))
交叉熵决策树
from sklearn.datasets import load_iris
from sklearn import treeiris = load_iris()
clf = tree.DecisionTreeClassifier(criterion='entropy', splitter='best')
clf = clf.fit(iris.data, iris.target)
## 展示树结构
dot_data = tree.export_graphviz(clf, out_file=None,feature_names=iris.feature_names,class_names=iris.target_names,filled=True, rounded=True,special_characters=True)
graph = graphviz.Source(dot_data)
graph
总结
决策树根据交叉熵或者基尼指数对数据进行分类并最终生成决策树,可以应用一些相对确定的分类场景。