文档章节

2017年2月20日 Random Forest Classifier

airxiechao
 airxiechao
发布于 2017/03/21 08:43
字数 200
阅读 14
收藏 0

Random Forests builds various decision trees on bootstrap samples and random seleted features, prediction can be made by averaging

from __future__ import division
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier

data = pd.read_csv('data/sonar.all-data.csv', header=None)
X = data[data.columns[:-1]].as_matrix()
y = data[data.columns[-1]].as_matrix()

class myRandomForest:
    
    def fit(self, X, y, n_estimators, max_depth):
        self.learners = []
        for n in range(n_estimators):
            idx_data = np.random.choice(X.shape[0],X.shape[0],replace=True)
            idx_feat = np.random.choice(X.shape[1],int(np.sqrt(X.shape[1])),replace=False)
            X_sub = X[idx_data][:,idx_feat]
            y_sub = y[idx_data]
            
            clf = DecisionTreeClassifier(max_depth=max_depth)
            clf.fit(X_sub, y_sub)
            
            self.learners.append({
                'tree': clf,
                'idx_feat': idx_feat
            })
            
    def predict(self, X):
        ps = []
        for i in range(len(self.learners)):
            clf = self.learners[i]['tree']
            idx_feat = self.learners[i]['idx_feat']
            
            p = clf.predict(X[:, idx_feat])
            ps.append(p)
            
        ps = np.transpose(ps).tolist()
        return [ max(p, key=p.count) for p in ps]
    
    def score(self, X, y):
        return np.count_nonzero(self.predict(X) == y)/len(y)
        

rf = myRandomForest()
rf.fit(X,y,50,3)
print 'score:', rf.score(X,y)
#score: 0.942307692308

dt = DecisionTreeClassifier(max_depth=3)
dt.fit(X,y)
print 'decision tree score:', np.count_nonzero(dt.predict(X) == y)/len(y)
#decision tree score: 0.884615384615

 

© 著作权归作者所有

airxiechao
粉丝 4
博文 42
码字总数 9717
作品 1
成都
程序员
私信 提问
机器学习算法 --- Pruning (decision trees) & Random Forest Algorithm

一、Table for Content   在之前的文章中我们介绍了Decision Trees Agorithms,然而这个学习算法有一个很大的弊端,就是很容易出现Overfitting,为了解决此问题人们找到了一种方法,就是对...

码农47
2018/06/26
0
0
在opencv3中的机器学习算法

转载:https://www.cnblogs.com/denny402/p/5032232.html 在opencv3.0中,提供了一个ml.cpp的文件,这里面全是机器学习的算法,共提供了这么几种: 1、正态贝叶斯:normal Bayessian classi...

byxdaz
05/15
0
0
Orange脚本调用Data Mining Library

原文(英):http://docs.orange.biolab.si/3/data-mining-library/ Orange Data Mining Library 教程 这是一个有好的关于 Orange 脚本使用的教程, 而Orange是一个基于Python 3的数据挖掘支持...

openthings
2016/01/02
226
0
Introduction to random forests

1: Introduction In the past three missions, we learned about decision trees, and looked at ways to reduce overfitting. The most powerful method to reduce decision tree overfitti......

Betty__
2016/09/29
12
0
分布式机器学习框架--Petuum

Petuum 是一个分布式机器学习框架。它致力于提供一个超大型机器学习的通用算法和系统接口。它主要集中在系统上 "plumbing work"和算法加速的优化上面,当简化分布式 ML 程序实现时——允许你...

大胖森
2015/05/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
53分钟前
4
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
6
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部