决策树实例

import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report


def load_data():
    from sklearn.datasets import load_iris#鸢尾花数据集
    from sklearn.preprocessing import StandardScaler#特征缩放
    from sklearn.model_selection import train_test_split#交叉验证
    data = load_iris()
    X = data.data
    y = data.target
    ss = StandardScaler()
    X = ss.fit_transform(X)
    x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
    return x_train, y_train, x_test, y_test, data.feature_names


def train():
    x_train, y_train, x_test, y_test, _ = load_data()
    model = DecisionTreeClassifier()
    model.fit(x_train, y_train)
    y_pre = model.predict(x_test)
    print(model.score(x_test, y_test))
    print(classification_report(y_test, y_pre))


def grid_search():
    from sklearn.model_selection import GridSearchCV#网格搜索
    x_train, y_train, x_test, y_test, _ = load_data()#'_'值date.feature_names,我们不用这 
    #个参数
    model = DecisionTreeClassifier()
    parameters = {'max_depth': np.arange(1, 50, 2)}#这里超参数为决策树中的深度
    gs = GridSearchCV(model, parameters, verbose=5, cv=5)
    gs.fit(x_train, y_train)
    print('最佳模型:', gs.best_params_, gs.best_score_)
    y_pre = gs.predict(x_test)
    print(classification_report(y_test, y_pre))


def tree_visilize():
    from sklearn import tree
    x_train, y_train, x_test, y_test, feature_names = load_data()
    print('类标:', np.unique(y_train))#np.unique为除去y_train中重复的数字
    print('特征名称:', feature_names)
    model = DecisionTreeClassifier(max_depth=3)
    model.fit(x_train, y_train)
    print(model.score(x_test, y_test))
    with open("allElectronicsData.dot", "w") as f:
        tree.export_graphviz(model, feature_names=feature_names, class_names=['A', 'B', 'C'], out_file=f)


if __name__ == '__main__':
    train()#训练决策树,这里的决策树没有剪枝,生成的是最大最复杂的树,容易过拟合
    grid_search()#训练决策树并找出最合适的超参数,这个参数是根据决策树剪枝来的
    tree_visilize()#决策树的显示,运用剪枝后的决策树,剪枝后深度为3

其中,tree_visilize函数为显示决策树的函数,需要下载软件:软件为graphviz-2.38.msi 详细操作

决策树的显示:

这个文件是代码生成的,

显示所生成的决策树可以用装好的gvedit.exe打开,在这里

显示:

决策树详细讲解文章:

文章1

文章2

文章3

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值