sklearn(2):决策树和随机森林

本文深入探讨了决策树的使用,包括鸢尾花分类案例,以及与随机森林的准确率对比。介绍了极限森林和梯度提升树的概念及原理。同时,总结了算法应用,如创建、参数调节、数据清洗和数据库操作,以及算法背后的CPU技术、KNN和决策树的熵、信息增益等核心概念。
摘要由CSDN通过智能技术生成

决策树的使用及原理

决策树——鸢尾花分类

附:解释决策树每层分类的信息增益计算及选择按顺序如何选择特征分类顺序

import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn import  datasets
import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

#criterion:"entropy","gini"; max_Depth:树的深度
#min_sample_split:分裂一个内部节点(非叶子几点)需要的最少样本数
#max_leaf_nodes:制定了每个叶子几点包含的最少样本数
#min_samples_leaf:

#数据读取
iris=datasets.load_iris()
x=iris["data"]
y=iris["target"]
names=iris.feature_names
print(names)
#训练集分割
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=1)

#建立决策树,对于max_depth,叶节点不算在深度内,深度越深计算时间越长
clf=DecisionTreeClassifier(criterion="gini",max_depth=5)

#输入特征值,目标值
clf.fit(x_train,y_train)

# #对于连续的特征数据,给与阈值,threshold
# print(x_train.std(axis=0)) #标准差越大的特征向量波动越大,越容易区分
# #第一次划分
# print(np.sort(x_train[:,2])) #(1.9+3.3)/2=2.6
# #第二次划分
# # print (x_train[y_train!=0].std(axis=0))
# a=np.sort(x_train[:,3])
# x_train2=x_train[y_train!=0]
# x_train3=x_train2[:,3]
# # print(a)
# # print(np.median(a))
#
# #查看对于每一个特征给定一个阈值是不是可以将数据更好的分开
# index=np.argsort(x_train2[:,3])
# print(np.sort(x_train2[:,3]))
# print("--------------------------------")
# print("1.7出现的位置:",np.argwhere(x_train3==1.7))
# c=np.argwhere(x_train3==1.7)
# print("--------------------------------")
# y_train2=y_train[y_train!=0]
# print("1.7的索引对应的目标值:",y_train2[c])
# print(y_train2[index])

#预测
y_hat=clf.predict(x_test)
print(np.mean((y_hat==y_test)))
print(accuracy_score(y_test,y_hat))

#画图&存储
plt.figure(figsize=(18,12))
pic=tree.plot_tree(clf,filled=True,feature_names=names)
plt.savefig("./treegini.jpg")

#对于基尼系数的计算
#39,37,44,totalgini=39/120(1-39/120)+37/120(1-37/1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值