机器学习笔记(7) —— 决策树
在此部分,你将使用决策树拟合给定样本数据集。
在此之前,我们先了解下构建此模型所需的工具。
对于决策树模型,你将使用 scikit-learn 的Decision Tree Classifier类。该类提供了定义模型并将模型与数据进行拟合的函数。
fromsklearn.treeimportDecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(x_values, y_values)
在上述示例中,model变量是一个拟合到数据x_values和y_values的决策树模型。拟合模型是指寻找拟合训练数据的最佳线条。我们使用模型的predict()函数进行两项预测。
print(model.predict([ [0.2,0.8], [0.5,0.4] ]))
[[0.,1.]]
该模型返回了一个预测结果数组,每个输入数组一个预测结果。第一个输入[0.2, 0.8]的预测结果为0.。第二个输入[0.5, 0.4]的预测结果为1.。
超参数
当我们定义模型时,可以指定超参数。在实践中,最常见的超参数包括:
- max_depth:树中的最大层级数量。
- min_samples_leaf:叶子允许的最低样本数量。
- min_samples_split:拆分内部节点所需的最低样本数量。
- max_features:寻找最佳拆分方法时要考虑的特征数量。
例如,在此例中,我们定义了一个模型:树的最大深度max_depth为7,每个叶子的最低元素数量min_samples_leaf是 10。
model = DecisionTreeClassifier(max_depth =7, min_samples_leaf =10)
决策树练习
在此练习中,你将处理以下样本数据集,目标是定义一个准确率达到 100% 的模型。
你可以在以下练习的“data.csv”标签页中找到数据文件。它包含三列,前两列由点的坐标组成,第三列为标签。
我们将为你加载数据并将数据拆分为特征X和标签y。
你需要完成以下每步:
1. 构建决策树模型*使用 scikit-learn 的DecisionTree构建决策树分类模型,并将其赋值给变量model。
2. 将模型与数据进行拟合
- 你不需要指定任何超参数,因为默认的超参数将以 100% 的准确率拟合数据。但是,建议你实验这些超参数,例如max_depth和min_samples_leaf,并尝试找到最简单的潜在模型,即最不太可能过拟合的模型!
3. 使用模型进行预测
- 预测训练集的标签,并将此列表赋值给变量y_pred。
4. 计算模型的准确率
- 为此,使用 sklearn 函数accuracy_score。
# Import statements
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np# Read the data.
data = np.asarray(pd.read_csv('data.csv', header=None))
# Assign the features to the variable X, and the labels to the variable y.
X = data[:,0:2]
y = data[:,2]# TODO: Create the decision tree model and assign it to the variable model.
model = DecisionTreeClassifier()# TODO: Fit the model.
model.fit(X,y)# TODO: Make predictions. Store them in the variable y_pred.
y_pred = model.predict(X)# TODO: Calculate the accuracy and assign it to the variable acc.
acc = accuracy_score(y, y_pred)

浙公网安备 33010602011771号