决策树 java iris_用决策树(CART)解决iris分类问题

首先先看Iris数据集

Sepal.Length——花萼长度Sepal.Width——花萼宽度

Petal.Length——花瓣长度Petal.Width——花瓣宽度

通过上述4中属性可以预测花卉属于Setosa,Versicolour,Virginica 三个种类中的哪一类

决策树 by CART

决策树有挺多种,这里讲下CART

CART的执行过程是这样的:

用特征值k和下限tk二分子集

不断二分,直到到达最大深度或者划分不能再减少不纯度为止

这一下sklearn都会自动帮我们完成,我们调用就行了

如何避免过拟合问题

减小最大深度等等

一个tip:

​min_* 的调大

​ max_*的调小

​就是DecisionTreeClassifier里面的参数,具体看文档_(:з」∠)_

损失函数的比较

sklearn提供了两种损失函数gini和entropy

gini是通过计算每个节点的不纯度,具体公式如下↓

\(J(k,t_k) = \frac{m_{left}}{m}G_{left} + \frac{m_{right}}{m}G_{right}\)

entropy在这里就不再赘述了

sklearn默认的是调用gini,因为gini的速度会快点,而且两者最后的效果是差不多的,真要比的话entropy产生的决策树会更平衡点

接下来我们来看代码

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

import numpy as np

iris = load_iris()

X = iris.data[:, 2:] # petal length and width

y = iris.target#目标值

tree_clf = DecisionTreeClassifier(max_depth=2, random_state=42)#定义最大深度和确定随机种子

tree_clf.fit(X, y)#训练

print(tree_clf.predict_proba([[5, 1.5]]))#预测返回的是可能性

#以上代码运行后将会产生如下输出 [[ 0. 0.90740741 0.09259259]]

#分别代表属于每一种类别可能的概率

#也可以用如下代码

print(tree_clf.predict[[5,1.5]])#直接输出属于哪一类

看下上面生成的决策树的样子

决策树 java iris_用决策树(CART)解决iris分类问题_第1张图片

注:

​valuse是它划分到各个类的数量

​samples 指的是当前节点的数据个数

​从左表橙色的点可以看出,gini=0意味着划分到了相同的类别里面

ps.以上代码及图片来自《Hands-On Machine Learning with Scikit-Learn》一书

如需转载请注明出处

喜欢要不支持下(:з」∠)

机器学习实战---决策树CART简介及分类树实现

https://blog.csdn.net/weixin_43383558/article/details/84303339?utm_medium=distribute.pc_relevant_t0. ...

机器学习实战---决策树CART回归树实现

机器学习实战---决策树CART简介及分类树实现 一:对比分类树 CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方.首先,我 ...

02-23 决策树CART算法

目录 决策树CART算法 一.决策树CART算法学习目标 二.决策树CART算法详解 2.1 基尼指数和熵 2.2 CART算法对连续值特征的处理 2.3 CART算法对离散值特征的处理 2.4 CA ...

03机器学习实战之决策树CART算法

CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有 ...

Keras入门(一)搭建深度神经网络(DNN)解决多分类问题

Keras介绍   Keras是一个开源的高层神经网络API,由纯Python编写而成,其后端可以基于Tensorflow.Theano.MXNet以及CNTK.Keras 为支持快速实验而生,能够把 ...

决策树--CART树详解

1.CART简介 CART是一棵二叉树,每一次分裂会产生两个子节点.CART树分为分类树和回归树. 分类树主要针对目标标量为分类变量,比如预测一个动物是否是哺乳动物. 回归树针对目标变量为连续值的情况 ...

采用boosting思想开发一个解决二分类样本不平衡的多估计器模型

# -*- coding: utf-8 -*- """ Created on Wed Oct 31 20:59:39 2018 脚本描述:采用boosting思想开发一个 ...

决策树的剪枝,分类回归树CART

决策树的剪枝 决策树为什么要剪枝?原因就是避免决策树“过拟合”样本.前面的算法生成的决策树非常的详细而庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的.因此用这个决策树来 ...

tensorflow 线性回归解决 iris 2分类

# Combining Everything Together #---------------------------------- # This file will perform binary ...

随机推荐

HBase初探

string hbaseCluster = "https://charju.azurehdinsight.net"; string hadoopUsername = "账 ...

popUpWindow 动画无法超出窗体的解决方案

popupWindow 做动画时,当要求有一个放大动画时,动画无法超出窗体,给人的感觉是只有内容在放大,窗体不动. 这是由于窗口大小固定的原因,解决方案是加大popUpwindow的 大小. 一个比较 ...

HDU3487 play with chain

题目大意:给出1到n的有序数列,现在有两个操作: 1.CUT a b c 把第a到第b个数剪切下来,放到剩下的第c个数的后边. 2.FLIP a b  把第a到第b个数反转. 经过总共m次操作后,求现 ...

Python性能测试

python -m profile xxx.py > log.txt 打开log.txt查看,搜索你所关心的方法调用耗费的时间. profile的统计结果分为ncalls.tottime.per ...

以前5年只专注于.net,现今开始学习java.

从2011年毕业至今一直在学习.net和c#,大概几年6月份底开始研究java了. 虽然不知道以后的路是否好走,但是我依然会努力.不放弃! 写这篇文字是为了鼓励自己,也为这段时光留下记忆.加油,红红!

Python Scrapy反爬虫常见解决方案(包含5种方法)

爬虫的本质就是“抓取”第二方网站中有价值的数据,因此,每个网站都会或多或少地采用一些反爬虫技术来防范爬虫.比如前面介绍的通过 User-Agent 请求头验证是否为浏览器.使用 JavaScript ...

web APIS

WEB API系列:   很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场 ...

比起Windows,怎样解读Linux的文件系统与目录结构?

比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...

JQ中的 offsetTop 和 offset().top 的区别

话不多说先上图: offset()的top是指元素与document的上边的距离,而不是浏览器当前窗体的上边缘,如图 document高度超过window,浏览器出现滚动条,滚动滚动条,提交按钮的of ...

Spring中注入对象为NULL

Java工程报错, java.lang.reflect.InvocationTargetException,网上搜索过后,发现是注入错误,通过调试发现,具体报错位置是某个dao层对象为null,进而引 ...

你可能感兴趣的:(决策树,java,iris)