机器学习笔记(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. 计算模型的准确率

# 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)

posted @ 2020-07-05 14:16  CQCx64  阅读(206)  评论(0)    收藏  举报