Halo
发布于 2023-10-09 / 93 阅读 / 0 评论 / 0 点赞

决策树

不纯度

信息不纯度就是指从给定的信息源中获得的信息的纯度或精度。一般用信息熵或者基尼指数来计算。

信息熵(entropy)

信息熵是信息论中的一个概念,用于描述信息的不确定性和随机性。它是由香农在20世纪40年代借鉴了热力学的概念后提出的,可以看作是信息源的不确定性的度量。

H(X)=-\sum_{x\in \chi }p(x)logp(x)

基尼指数(gini)

这里的基尼指数和人口收入的基尼系数是不一样的,它是熵的一个近似值。

Gini(X)=-\sum_{x\in \chi }p(x)(1-p(x))
from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.tree import DecisionTreeClassifier  
from sklearn import metrics  
  
# 加载iris数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 将数据集分为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)   
  
# 创建一个决策树分类器实例  
clf = DecisionTreeClassifier()  
  
# 使用训练数据训练模型  
clf = clf.fit(X_train,y_train)  
  
# 使用测试集进行预测  
y_pred = clf.predict(X_test)  
 
# 输出模型的准确度  
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

其中函数:

class sklearn.tree.DecisionTreeClassifier (
criterion=’gini’, splitter=’best’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None,random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None,class_weight=None, presort=False
)

criterion 这个参数正是用来决定不纯度的计算方法的。sklearn提供了两种选择:

  • 输入”entropy“,使用信息熵(Entropy)
  • 输入”gini“,使用基尼系数(Gini Impurity)

评论