sklearn决策树(Decision Tree)多分类问题

步骤

建立模型

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:{‘gini’, ‘entropy’} 基尼系数和信息增益,特征选择要用
    • max_depth:整数,预剪枝要用

特征选择

  • 选择特征的算法主要有以下三种:
    • ID3 (使用信息增益)
    • C4.5(使用信息增益率)
    • CART(使用gini系数)
  • 在模型的criterion参数中设定。'gini’是CART, 'entropy’是ID3

预剪枝

  • 通过设定max_depth实现。max_depth表示决策树的最大层数。太大容易过拟合,太小容易欠拟合。

预处理

  • 主要是看有没有缺失值、异常值;
  • 还需要把分类变量转化为数值变量(分类变量不能是字符串)
import pandas as pd
# 数据
path = "../Data/classify.csv"
rawdata = pd.read_csv(path) 
X = rawdata.iloc[:,:13]
Y = rawdata.iloc[:,14]  # {”A":0,"B":1,"C":2}
Y = pd.Categorical(Y).codes  # ABC变成123

训练

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
# 训练集和测试集
x_train, x_test, y_train, y_test = \
            train_test_split(X, Y, test_size=0.3)
# 训练
tree = DecisionTreeClassifier(random_state=1
### 使用 Sklearn 中的 DecisionTree 实现机器学习 在 `sklearn` 库中,可以通过 `DecisionTreeClassifier` 或者 `DecisionTreeRegressor` 来构建决策树模型。对于分类问题可以使用 `DecisionTreeClassifier` 而对于回归问题则适用 `DecisionTreeRegressor`[^1]。 #### 导入必要的模块并加载数据集 首先需要导入所需的 Python 包以及准备用于训练的数据集: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier import numpy as np # 加载鸢尾花数据集作为例子 data = load_iris() X = data.data y = data.target ``` #### 数据预处理与划分 接着对数据进行简单的预处理,并将其划分为训练集和测试集两部分以便后续评估模型性能: ```python # 将数据随机分成70%训练集和30%测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) ``` #### 构建决策树模型 创建一个基于 CART 算法的决策树实例对象,并调用 fit 方法完成模型拟合过程: ```python clf = DecisionTreeClassifier(criterion="gini", max_depth=None) # 训练模型 clf.fit(X_train, y_train) ``` 此处设置参数 criterion 为 "gini" 表示采用基尼系数来计算节点不纯度;max_depth 参数设为空意味着不限制树的最大深度[^5]。 #### 预测新样本类别标签 利用已经训练好的模型来进行未知数据类别的预测操作: ```python predictions = clf.predict(X_test) print(predictions[:10]) # 输出前十个预测结果供观察 ``` 除了 predict 函数外还可以使用 apply 函数获取输入特征向量对应的叶节点编号信息: ```python leaf_indices = clf.apply(X_test) print(leaf_indices[:10]) ``` 这有助于进一步理解给定观测值是如何沿着路径到达最终叶子位置上的。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值