不纯度
信息不纯度就是指从给定的信息源中获得的信息的纯度或精度。一般用信息熵或者基尼指数来计算。
信息熵(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)