Python机器学习理论与实战(二)决策树
决策树是一种基于树结构的机器学习算法,可以用于分类和回归分析。在分类问题中,决策树的每个叶子节点对应于一个类别标签,而每个非叶子节点对应于一个测试条件。通过从根节点开始递归地应用测试条件,决策树最终确定样本所属于的类别标签。
本攻略将详细介绍Python中的决策树算法及其实现过程,包括:
- 决策树的原理与构建方法
- Python中基于决策树的机器学习库scikit-learn的介绍
- 实例1:使用鸢尾花数据集进行分类预测
- 实例2:使用sklearn中内置的digit数据集进行分类预测
决策树的原理与构建方法
决策树的基本概念
决策树包括根节点、叶节点和中间节点。决策树的根节点表示样本数据集中所有可供检验的属性集合,每个中间节点表示该节点所表示的属性取值,每个叶节点表示一个判定结果。在分类问题中,叶节点对应于类标签,通过对从根节点到叶节点的路径进行递归地测试,最终确定样本的分类。决策树的目标是生成具有一定泛化能力的决策规则。
决策树的构建方法
决策树的构建方法包括ID3(基于信息增益)、C4.5(基于信息增益比)和CART(基于Gini系数)。在scikit-learn中使用的是CART算法。
决策树的构建过程包括:
- 特征选择:按照信息增益或者Gini系数将该节点的待分样本集合划分为子集;
- 递归退出条件:子集为空;或者子集中所有实例都属于同一类;或者没有更多的特征可用于划分子集;
- 构建子树:使用子集递归构建子树。
Python中基于决策树的机器学习库scikit-learn的介绍
scikit-learn是一种基于Python语言的开源机器学习库,包含多种机器学习算法,其中包括决策树算法。通过使用scikit-learn,用户可以选择使用的算法、进行数据预处理、特征工程、模型选择、模型评估等操作。
如何使用scikit-learn构建决策树:
from sklearn import tree
#建立决策树分类器
clf = tree.DecisionTreeClassifier()
#训练模型
clf.fit(train_x, train_y)
#预测分类结果
y_pred = clf.predict(test_x)
以上代码中,train_x和train_y表示训练样本和标签,test_x表示测试样本,clf为定义的决策树分类器,fit()方法用于训练模型,predict()方法用于预测分类结果。
实例1:使用鸢尾花数据集进行分类预测
我们使用scikit-learn中内置的鸢尾花数据集,训练一个决策树分类器,预测鸢尾花的品种。
from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.metrics import accuracy_score,recall_score,precision_score,f1_score
#加载数据集
iris = load_iris()
#将数据集划分为训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(iris.data, iris.target, test_size = 0.2, random_state = 42)
#建立决策树分类器
clf = tree.DecisionTreeClassifier()
#训练模型
clf.fit(train_x, train_y)
#预测分类结果
y_pred = clf.predict(test_x)
#计算分类精度、召回率、准确率和F1分数
accuracy = accuracy_score(test_y, y_pred)
recall = recall_score(test_y, y_pred, average = 'micro')
precision = precision_score(test_y, y_pred, average = 'micro')
f1 = f1_score(test_y, y_pred, average = 'micro')
print("accuracy: %.2f%%, recall: %.2f%%, precision: %.2f%%, f1_score: %.2f%%" %(accuracy * 100, recall * 100, precision * 100, f1 * 100))
运行以上代码,我们可以获得决策树分类器的精度、召回率、准确率和F1分数。
实例2:使用sklearn中内置的digit数据集进行分类预测
我们使用scikit-learn中内置的digit数据集,训练一个决策树分类器,预测数字所对应的标签。
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn.metrics import accuracy_score,recall_score,precision_score,f1_score
#加载数据集
digits = load_digits()
#将数据集划分为训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(digits.data, digits.target, test_size = 0.2, random_state = 42)
#建立决策树分类器
clf = tree.DecisionTreeClassifier()
#训练模型
clf.fit(train_x, train_y)
#预测分类结果
y_pred = clf.predict(test_x)
#计算分类精度、召回率、准确率和F1分数
accuracy = accuracy_score(test_y, y_pred)
recall = recall_score(test_y, y_pred, average = 'micro')
precision = precision_score(test_y, y_pred, average = 'micro')
f1 = f1_score(test_y, y_pred, average = 'micro')
print("accuracy: %.2f%%, recall: %.2f%%, precision: %.2f%%, f1_score: %.2f%%" %(accuracy * 100, recall * 100, precision * 100, f1 * 100))
运行以上代码,我们可以获得决策树分类器的精度、召回率、准确率和F1分数,从而对数字进行准确的分类预测。
以上是Python中基于决策树的机器学习库scikit-learn的详细介绍以及两个实例的模型搭建与应用。希望对读者有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python机器学习理论与实战(二)决策树 - Python技术站