林轩田 机器学习技法 作业3 决策树 随机森林

林轩田 机器学习技法 作业3 决策树 随机森林 分类问题(DecisionTree RandomForest)14-17题 python2.7

训练集来自
http://www.csie.ntu.edu.tw/~htlin/course/ml15fall/hw7/hw7_train.dat
测试集来自
http://www.csie.ntu.edu.tw/~htlin/course/ml15fall/hw7/hw7_test.dat
在处理决策树的分类使用的是基尼不纯度。
参考了https://www.cnblogs.com/xbf9xbf/p/4716834.html这位朋友的代码。这里表示感谢!

决策树流程图如下所示

图是自己画的,欢迎大家指点
决策树流程图 markov huang 绘制

随机森林流程图如下所示

随机森林流程 markov huang绘制

代码可能还不够简洁,欢迎大家提意见。

#encoding=utf8
import numpy as np
import math
from random import *
class TreeNode:
    def __init__(self,index,value):
        self.index=index
        self.value=value
        self.sign=0
        self.left=None
        self.right=None

def read_input_data(path):
    x = []
    y = []
    for line in open(path).readlines():
        items = line.strip().split(' ')
        tmp_x = []
        for i in range(0,len(items)-1): tmp_x.append(float(items[i]))
        x.append(tmp_x)
        y.append(float(items[-1]))
    return np.array(x),np.array(y)

def Gini(label):
   m=np.shape(label)[0]
   if m==0:
       return 0
   positive_num=sum(label==1)
   negative_num=sum(label==-1)
   if (positive_num+negative_num)==0 :return 0
   return 1-(positive_num/float(m))**2-(negative_num/float(m))**2

##统计完全树的节点,叶子节点不需要统计进去
def internal_node(node):
    leftNum
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值