python实现决策树数据直接赋值导入_决策树在python中的数据实现

我为python决策树算法实现完成了以下代码:from csv import reader

def load_csv(filename):

file = open(filename, "rb")

lines = reader(file)

dataset = list(lines)

return dataset

# Split a dataset based on an attribute and an attribute value

def test_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

# Calculate the Gini index for a split dataset

def gini_index(groups, classes):

# count all samples at split point

n_instances = float(sum([len(group) for group in groups]))

# sum weighted Gini index for each group

gini = 0.0

for group in groups:

size = float(len(group))

# avoid divide by zero

if size == 0:

continue

score = 0.0

# score the group based on the score for each class

for class_val in classes:

p = [row[-1] for row in group].count(class_val) / size

score += p * p

# weight the group score by its relative size

gini += (1.0 - score) * (size / n_instances)

return gini

# Select the best split point for a dataset

def get_split(dataset):

class_values = list(set(row[-1] for row in dataset))

b_index, b_value, b_score, b_groups = 999, 999, 999, None

for index in range(len(dataset[0])-1):

for row in dataset:

groups = test_split(index, row[index], dataset)

gini = gini_index(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}

# Create a terminal node value

def to_terminal(group):

outcomes = [row[-1] for row in group]

return max(set(outcomes), key=outcomes.count)

# Create child splits for a node or make terminal

def split(node, max_depth, min_size, depth):

left, right = node['groups']

del(node['groups'])

# check for a no split

if not left or not right:

node['left'] = node['right'] = to_terminal(left + right)

return

# check for max depth

if depth >= max_depth:

node['left'], node['right'] = to_terminal(left), to_terminal(right)

return

# process left child

if len(left) <= min_size:

node['left'] = to_terminal(left)

else:

node['left'] = get_split(left)

split(node['left'], max_depth, min_size, depth+1)

# process right child

if len(right) <= min_size:

node['right'] = to_terminal(right)

else:

node['right'] = get_split(right)

split(node['right'], max_depth, min_size, depth+1)

# Build a decision tree

def build_tree(train, max_depth, min_size):

root = get_split(train)

split(root, max_depth, min_size, 1)

return root

# Print a decision tree

def print_tree(node, depth=0):

if isinstance(node, dict):

print('%s[X%d < %.3f]' % ((depth*' ', (node['index']+1), node['value'])))

print_tree(node['left'], depth+1)

print_tree(node['right'], depth+1)

else:

print('%s[%s]' % ((depth*' ', node)))

# load and prepare data

filename = 'spine.csv'

dataset = load_csv(filename)

tree = build_tree(dataset, 1, 1)

print_tree(tree)

该数据集共包含13个与脊柱相关的属性,数据挖掘算法用来发现一个人的脊椎是否正常

对于数据集脊椎.csv链接如下:

它显示以下错误:

^{pr2}$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互评Beta版本(Hello World!——SkyHunter)

1 基于NABCD评论作品&#xff0c;及改进建议 SkyHunter这款游戏我很喜欢&#xff0c;小时候总玩飞机类的游戏&#xff0c;这款游戏我上课的时候试玩了&#xff0c;在我电脑上运行是很好玩的&#xff0c;音乐震撼&#xff0c;画面玄幻&#xff0c;富有金属音乐的味道&#xff0c…

time是python的标准库吗_python3关于date和time的标准库

python3中关于日期和时间的标准库datetime和time&#xff0c;之前都是用的时候随用随查&#xff0c;今天系统的看一下用这两个库可以做些什么。1、time标准库#首先添加一个time对象&#xff0c;看一下该对象的属性和方法>>> import time,datetime>>> a time…

unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度

var arr [1, 2];arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2]arr.unshift(-2, -1); // 5 //arr is [-2, -1, 0, 1, 2]arr.unshift( [-3] ); //arr is [[-3], -2, -1, 0, 1, 2]语法 arr.unshift(element1, ..., elementN)参数列表 elemen…

acctype mysql assoc_DedeCMS V5.3二次开发经验分享

DedeCMS V5.3二次开发经验分享写在前面,DedeCMS系统的模板是非固定的&#xff0c;用户可以在新建栏目时可以自行选择栏目模板&#xff0c;官方仅提供最基本的默认模板&#xff0c;即是内置系统模型的各个模板&#xff0c;由于DedeCMS支持自定义频道模型&#xff0c;用户自定义新…

markdown基础语法整理

标题级别(一共六级) &#xff08;建议在#后加一个空格比较标准&#xff09; 通过在文字下方添加“”和“-”&#xff0c;他们分别表示一级标题和二级标题。在文字开头加上 “#”&#xff0c;通过“#”数量表示几级标题。&#xff08;共1~6级标题&#xff0c;级别越小字体越大&a…

mysql connector配置_mysql connector odbc配置注意事项

官方下载&#xff1a;http://dev.mysql.com/downloads/connector/odbc/有64位和32位版本&#xff0c;要根据自己的office版本是32还是64的安装1、版本匹配问题&#xff1a;[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配…

安卓源码下载

SetupSecurityPortingTuningCompatibilityReference转到源代码SetupGetting StartedDownloading and Building RequirementsEstablishing a Build EnvironmentDownloading the SourcePreparing to BuildCompiling with JackUsing Reference BoardsRunning BuildsBuilding Kerne…

mysql 创建查询 删除_MYSQL数据库查询删除创建企业基本知识

数据查询语言(DQL)从表中获取数据select where (位置) order by(排序) group by haveby查询用户&#xff1a;select user,host,password from mysql.user;select user,host,password from mysql.usser order by(排序) 参数 (如user)asc(升序)select user,host&#xff0…

mysql 端口time_wait_linux上大量tcp端口处于TIME_WAIT的问题

最近发现在连接监控数据库的时候偶尔会连不上&#xff0c;报错&#xff1a;Couldnt connect to host:3306/tcp: IO::Socket::INET: connect: Cannot assign requested address查看了一下发现系统中存在大量处于TIME_WAIT状态的tcp端口$netstat -n | awk /^tcp/ {S[$NF]} END {f…

mysql常用命令英文词汇_MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档

MySQL在高并发连接、数据库记录数较多的情况下&#xff0c;SELECT ... WHERE ... LIKE %...%的全文搜索方式不仅效率差&#xff0c;而且以通配符%和_开头作查询时&#xff0c;使用不到索引&#xff0c;需要全表扫描&#xff0c;对数据库的压力也很大。MySQL针对这一问题提供了一…

SDN第二次作业

1、为什么需要SDN&#xff1f;SDN特点&#xff1f; 需要SDN的原因主要是&#xff1a;随着网络规模的不断扩大,封闭的网络设备内置了过多的复杂协议,增加了运营商定制优化网络的难度,科研人员无法在真实环境中规模部署新协议.同时,互联网流量的快速增长(预计到2018年,全球流量将…

mysql数据库sysdate_MySql数据库知识点复习

文章目录1. MySql数据类型1.1 数值类型1.2 字符串类型1.3 日期类型2.表记录的操作2.1 字段约束2.2 drop、delete、truncate之间的区别&#xff1f;3. MySql常见的函数4. 外键和表关系4.1 外键介绍4.2 添加外键4.3 表关系4.4 关联查询、外连接查询1. MySql数据类型1.1 数值类型M…

python函数-基础知识

一、含义函数是程序内的“小程序”二、示例 #!/usr/bin/env python #coding:utf-8 def hello():print(Hello world!)print(Hello people!) hello() 以上内容&#xff0c;定义了一个叫 hello() 的函数&#xff0c;执行该函数。第一行是 def 语句&#xff0c;它定义了一个名为 he…

python task done_python queue task_done()问题

我对python多线程队列有问题。我有一个脚本&#xff0c;其中producer从输入队列获取元素&#xff0c;生成一些元素并将它们放入输出队列&#xff0c;consumer从输出队列获取元素并打印它们&#xff1a;import threadingimport Queueclass Producer(threading.Thread):def __ini…

dobbo 简单框架

转载于:https://www.cnblogs.com/huangjianping/p/7986881.html

python实现多人聊天udp_python—多任务版udp聊天机器人

将多任务(多线程)引入到udp聊天机器人&#xff0c;可以实现同时发送消息和接收消息1 import socket2 import threading345 def udp_send(udp_socket,ip,port):6 while true:7 try:8 # 获取发送的信息9 data input(请输入要发送的信息&#xff1a;)10 udp_socket.sendto(data.e…

kafka 集群的部署安装

这里我们罗列一下我们的环境 10.19.18.88 zk1 10.19.16.84 zk2 10.19.11.44 zk3这里公司需要接入kafka用于zipkin来定位调用链 kafka 的地址是http://kafka.apache.org/ zipkin 的地址是https://github.com/openzipkin/zipkin/tree/master/zipkin-server#environment-variables…

Ubuntu 16.04 设置MySQL远程访问权限

第一步&#xff1a;修改配置文件的端口绑定 打开的目录可能会根据MySQL的版本稍有不同&#xff0c;可以先尝试打开/etc/mysql/my.cnf这个配置文件&#xff0c;若该文件不存在或文件内容为空&#xff0c;则尝试下面的文件路径。 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 在下…

spring mysql整合_springboot mybatis mysql 整合

1、pom文件配置mysqlmysql-connector-javaruntimeorg.springframework.bootspring-boot-starter-testtestorg.mybatis.spring.bootmybatis-spring-boot-starter1.2.0org.springframework.bootspring-boot-starter-jdbc2、mybatis 数据库连接配置spring.datasource.driver-class…

Android 平台电容式触摸屏的驱动基本原理

Android 平台电容式触摸屏的驱动基本原理 Android 平台电容式触摸屏硬件基本原理 Linux 与 Android 的多点触摸协议 Linux输入子系统&#xff1a;事件的编码 转载于:https://www.cnblogs.com/LittleTiger/p/7992840.html