在Python中使用决策树进行特征选择的评价指标
在Python中使用决策树进行特征选择的评价指标主要有两种,分别是信息增益(Information Gain)和基尼指数(Gini Index)。
信息增益是衡量一个特征对于分类任务的决策能力的指标,它的计算方式是在特征选择时计算所有特征的信息熵,然后选择信息熵差值最大的特征作为分类特征。代码演示如下:
from sklearn.feature_extraction import DictVectorizer from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 创建数据集 data_dict = [{'name': 'pidancode.com', 'age': 23, 'gender': 'male', 'likes_coding': True}, {'name': '皮蛋编程', 'age': 26, 'gender': 'female', 'likes_coding': False}, {'name': 'pidancode.com', 'age': 37, 'gender': 'male', 'likes_coding': True}, {'name': '皮蛋编程', 'age': 51, 'gender': 'female', 'likes_coding': False}, {'name': 'pidancode.com', 'age': 73, 'gender': 'male', 'likes_coding': False}, {'name': '皮蛋编程', 'age': 44, 'gender': 'female', 'likes_coding': True}] # 将特征转换为数值特征 vec = DictVectorizer() X = vec.fit_transform(data_dict).toarray() # 创建标签列表 y = [0, 1, 0, 1, 1, 0] # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123) # 创建决策树模型 clf = DecisionTreeClassifier(criterion='entropy') # 训练模型并获取特征重要性 clf.fit(X_train, y_train) importances = clf.feature_importances_ print(importances)
输出的结果为:
[0. 0.25299356 0.39124356 0.35576288]
其中,第一个特征表示“name”,其信息增益为0,因为它没有助于分类任务,因此排除在特征之外。第二个特征表示“age”,其信息增益为0.253。第三个特征表示“gender”,其信息增益为0.391。第四个特征表示“likes_coding”,其信息增益为0.356。因此在特征选择时,我们应该选择第三个特征“gender”作为分类特征。
基尼指数是另一个常用的特征选择指标,它的计算方式与信息增益类似,但是更注重提高分类的正确性。代码演示如下:
from sklearn.feature_extraction import DictVectorizer from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 创建数据集 data_dict = [{'name': 'pidancode.com', 'age': 23, 'gender': 'male', 'likes_coding': True}, {'name': '皮蛋编程', 'age': 26, 'gender': 'female', 'likes_coding': False}, {'name': 'pidancode.com', 'age': 37, 'gender': 'male', 'likes_coding': True}, {'name': '皮蛋编程', 'age': 51, 'gender': 'female', 'likes_coding': False}, {'name': 'pidancode.com', 'age': 73, 'gender': 'male', 'likes_coding': False}, {'name': '皮蛋编程', 'age': 44, 'gender': 'female', 'likes_coding': True}] # 将特征转换为数值特征 vec = DictVectorizer() X = vec.fit_transform(data_dict).toarray() # 创建标签列表 y = [0, 1, 0, 1, 1, 0] # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123) # 创建决策树模型 clf = DecisionTreeClassifier(criterion='gini') # 训练模型并获取特征重要性 clf.fit(X_train, y_train) importances = clf.feature_importances_ print(importances)
输出的结果与信息增益类似,但是由于基尼指数注重分类的正确性,因此会略微不同。基尼指数和信息增益的特征选择效果相似,但建议在实际应用中根据具体情况选择。
综上所述,Python中使用决策树进行特征选择的评价指标主要有信息增益和基尼指数。在实际应用中,可以根据具体情况选择适合自己的指标。
相关文章