从相亲实例简单的讲明机器学习——决策树

xiaoxiao2021-02-28  61

一、前言

决策树其实就是一种分类模型,那为什么起这个名字啊?因为他分类的时候,也就是决策的时候画出来的模型很像一颗倒着生长的数。一枝一枝的往下生长。

我们常见的分类都是线性分类,比如初中时候的数学题,画几个线性方程,看看所给的数例如点A(50,50) 在那个范围类,诸如此类。

但是千变万化的世界内,事物并不是具有规则,也不是用方程式能解决了得,所以决策树应势而生。

决策树主要有两种算法去分类,ID3算法和C4.5算法。前者以信息增益为判断标准,后者以信息增益率为判断标准。(不要慌,虽然是专用名词,不碍理解该算法)。

说到这还得提一个名词“熵”,他指的是系统的凌乱程度。

二、实例

现在以相亲的例子开讲决策树的来龙去脉:

图示表达了相亲时的基本过程,可以大致认为是一棵决策树,将其量化之后,便可以进行分类。

橙色节点:叶子结点表示决策结果。

绿色节点:表示判断条件。

属性值:表示判断条件选择的阈值,去选择那一个趋向。

(此次模型纯属瞎搞,如有得罪还请见谅#微笑脸#)

下面我们将模型量化,让机器去判断一下相亲时 是见还是不见。

首先利用rand函数随机生成的前五列的属性值,然后一开始想自己判断出结果,但是陈SIR说EXCEL可以直接写函数出结果的啊,所以又先学得到EXCEL的IF函数,感觉到了学无止境,哈哈,待会儿再出一篇EXCEL的IF函数的博文。

现在书归正传,现在先把这部分结果的部分数据展示出来。

注:财富数值1为有钱;人品数值1为好;工作数值1为生意人;  外貌数值1为帅;结果数值1为见。                        

%% 清空环境变量 clear all clc %% 导入数据 load dating.mat %% 随机产生训练集/测试集 a = randperm(49); Train = dating(a(1:40),:); Test = dating(a(41:end),:); %% 训练数据 Ptrain = Train(:,1:end-1); Ttrain = Train(:,end); %% 测试数据 P_test = Test(:,1:end-1); T_test = Test(:,end); %% 创建决策树分类器 ctree = ClassificationTree.fit(Ptrain,Ttrain); %% 查看决策树视图 view(ctree,'mode','graph'); %% IV. 仿真测试 T_pre = predict(ctree,P_test); %% 结果分析 numberD = length(find(T_test == 1)); numberND = length(find(T_test == 0)); numberD_pre = length(find(T_pre == 1 & T_test == 1)); numberND_pre = length(find(T_pre == 0 & T_test == 0)); disp(['见(去约会):' num2str(numberD_pre)... '误判个数:' num2str(numberD - numberD_pre)]); disp(['不见(不去约会):' num2str(numberND_pre)... '误判个数:' num2str(numberND - numberND_pre)]);

结果如下:

是不是和上图我分析的很一致啊,证明此次建模成功!

再来看看预测结果:

误判个数为:0。那这个可把我牛逼坏了,插会腰。。。

转载请注明原文地址: https://www.6miu.com/read-2300185.html

最新回复(0)