资源简介
完全可编译通过,python3代码实现,不调库,纯手撸,带数据集。
代码片段和文件信息
#-*- coding: utf-8 -*-
from random import seed
from random import randint
from csv import reader
# 建立一棵CART树
‘‘‘试探分枝‘‘‘
def data_split(index value dataset):
left right = list() list()
for row in dataset:
if row[index] < value:
left.append(row)
else:
right.append(row)
return left right
‘‘‘计算基尼指数‘‘‘
def calc_gini(groups class_values):
gini = 0.0
total_size = 0
for group in groups:
total_size += len(group)
for group in groups:
size = len(group)
if size == 0:
continue
for class_value in class_values:
proportion = [row[-1] for row in group].count(class_value) / float(size)
gini += (size / float(total_size)) * (proportion * (1.0 - proportion))
return gini
‘‘‘找最佳分叉点‘‘‘
def get_split(dataset n_features):
class_values = list(set(row[-1] for row in dataset))
b_index b_value b_score b_groups = 999 999 999 None
features = list()
while len(features) < n_features:
index = randint(0 len(dataset[0]) - 2) # 往features添加n_features个特征(n_feature等于特征数的根号),特征索引从dataset中随机取
if index not in features:
features.append(index)
for index in features:
for row in dataset:
groups = data_split(index row[index] dataset)
gini = calc_gini(groups class_values)
if gini < b_score:
b_index b_value b_score b_groups = index row[index] gini groups
return {‘index‘: b_index ‘value‘: b_value ‘groups‘: b_groups} # 每个节点由字典组成
‘‘‘多数表决‘‘‘
def to_terminal(group):
outcomes = [row[-1] for row in group]
return max(set(outcomes) key=outcomes.count)
‘‘‘分枝‘‘‘
def split(node max_depth min_size n_features depth):
left right = node[‘groups‘]
del (node[‘groups‘])
if not left or not right:
node[‘left‘] = node[‘right‘] = to_terminal(left + right) # 叶节点不好理解
return
if depth >= max_depth:
node[‘left‘] node[‘right‘] = to_terminal(left) to_terminal(right)
return
if len(left) <= min_size:
node[‘left‘] = to_terminal(left)
else:
node[‘left‘] = get_split(left n_features)
split(node[‘left‘] max_depth min_size n_features depth + 1)
if len(right) <= min_size:
node[‘right‘] = to_terminal(right)
else:
node[‘right‘] = get_split(right n_features)
split(node[‘right‘] max_depth min_size n_features depth + 1)
‘‘‘建立一棵树‘‘‘
def build_one_tree(train max_depth min_size n_features):
root = get_split(train n_features)
split(root max_depth min_size n_features 1)
return root
‘‘‘用森林里的一棵树来预测‘‘‘
def predict(node row):
if row[node[‘index‘]] < node[‘value‘]:
if isinstance(node[‘left‘] dict):
return predict(node[‘left‘] row)
else:
return node[‘left‘]
else:
if isinstance(node[‘right‘] dict):
return predict(node[‘right‘] row)
el
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-18 02:24 myRF\
文件 86084 2017-03-17 03:29 myRF\sonar-all-data.csv
文件 6565 2018-12-18 02:24 myRF\myRF.py
目录 0 2018-12-18 02:21 myRF\venv\
文件 69 2018-12-18 02:21 myRF\venv\pyvenv.cfg
目录 0 2018-12-18 02:51 myRF\.idea\
文件 466 2018-12-18 02:21 myRF\.idea\myRF.iml
文件 260 2018-12-18 02:21 myRF\.idea\modules.xm
文件 192 2018-12-18 02:21 myRF\.idea\misc.xm
文件 7004 2018-12-18 02:51 myRF\.idea\workspace.xm
目录 0 2018-12-18 02:21 myRF\venv\bin\
文件 395 2018-12-18 02:21 myRF\venv\bin\pip
文件 397 2018-12-18 02:21 myRF\venv\bin\pip3
文件 401 2018-12-18 02:21 myRF\venv\bin\pip3.5
文件 434 2018-12-18 02:21 myRF\venv\bin\easy_install
文件 442 2018-12-18 02:21 myRF\venv\bin\easy_install-3.5
文件 2405 2018-12-18 02:21 myRF\venv\bin\activate.fish
文件 2151 2018-12-18 02:21 myRF\venv\bin\activate
文件 1267 2018-12-18 02:21 myRF\venv\bin\activate.csh
文件 4464368 2018-12-18 02:21 myRF\venv\bin\python3
文件 4464368 2018-12-18 02:21 myRF\venv\bin\python
文件 4464368 2018-12-18 02:21 myRF\venv\bin\python3.5
文件 3 2018-12-18 02:21 myRF\venv\lib64
目录 0 2018-12-18 02:21 myRF\venv\include\
目录 0 2018-12-18 02:21 myRF\venv\lib64\python3.5\
目录 0 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\
文件 30 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\setuptools.pth
文件 53 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\easy-install.pth
文件 563197 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\setuptools-39.1.0-py3.5.egg
目录 0 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\pip-10.0.1-py3.5.egg\
目录 0 2018-12-18 02:21 myRF\venv\lib64\python3.5\site-packages\pip-10.0.1-py3.5.egg\pip\
............此处省略334个文件信息
相关资源
- python实现SGBM图像匹配算法
- python机器学习Sebastian Raschka中文最新完
- 带书签-数据结构与算法 Python语言描
- 2019届华为软件精英挑战赛A*算法实现
- Python-DeepMoji模型的pyTorch实现
- 图像分割-snake算法 python版本
- 基于PyQt实现可视化宽度优先、深度优
- 蚁狮算法(Ant Lion AlgorithmPython实现和
- 基于自编写的随机森林算法的adult数据
- 《机器学习实战》源代码Python3
- VMD变分模态分解算法
- miller_rabin检测生成大素数的RSA算法实
- Python-使用DeepFakes实现YouTube视频自动换
- Introduction to machine learning with python (
- python遗传算法解决八皇后问题
- python新浪微博爬虫,爬取微博和用户
- 计算机语言学n-gram算法的python实现
- Introduction to Programming in Python An Inter
- 多目标优化算法(二)MOEADMATLAB
- Python-一系列高品质的动漫人脸数据集
- Python-Insightface人脸检测识别的最小化
- 非线性回归Python代码
- 093 2018北风网人工智能视频(完结)转
- 决策树算法的PPT与实现代码
- 用python实现sm2国密算法
- python的色情图片识别
- 基于Python完成张军版计算智能相关算
- 哈工大威海 算法设计与分析 朱东杰老
- 西电数据挖掘作业之利用Python编程实
- 贝叶斯网络程序
评论
共有 条评论