决策树入门程序,各部分配有解析

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import tree
from sklearn import preprocessing
from sklearn.externals.six import StringIO

#Read in the csv file and put features into list of dict and list of class label
allElectronicsData = open(r‘AllElectronics.csv‘, ‘rt‘)
reader = csv.reader(allElectronicsData)
headers = next(reader)

print(headers)

featureList = []
labelList = []

for row in reader:
# 把所有的结果放到这里,相当于
labelList.append(row[len(row)-1])
#存x值,以键值对的形式,键值从headers里面取,属性值从每行数据里面取
rowDict = {}
for i in range(1, len(row)-1):
rowDict[headers[i]] = row[i]
featureList.append(rowDict)

print(featureList)

#Vetorize features
#0-1化
#说明:DictVectorizer的处理对象是符号化(非数字化)的但是具有一定结构的特征数据,如字典等,将符号转成数字0/1表示。
#我们不难发现,DictVectorizer对非数字化的处理方式是,借助原特征的名称,组合成新的特征,并采用0/1的方式进行量化,
#而数值型的特征转化比较方便,一般情况维持原值即可。
vec = DictVectorizer()
#fit_transform():先拟合数据再标准化
#transform():标准化
dummyX = vec.fit_transform(featureList) .toarray()

print("dummyX: " + str(dummyX))
print(vec.get_feature_names())

print("labelList: " + str(labelList))

#vectorize class labels
#标签二值化:sklearn.preprocessing.LabelBinarizer(neg_label=0, pos_label=1,sparse_output=False)
#主要是将多类标签转化为二值标签,最终返回的是一个二值数组或稀疏矩阵
#参数说明:
#neg_label:输出消极标签值
#pos_label:输出积极标签值
#sparse_output:设置True时,以行压缩格式稀疏矩阵返回,否则返回数组
#classes_属性:类标签的取值组成数组
#①设置neg_label=2、pos_label=4,只能返回二值数组,理解neg_label、pos_label两标签值的含义

lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY: " + str(dummyY))

#Using decision tree for classification
#clf = tree.DecisionTreeClassifier()
#决策树分类器
clf = tree.DecisionTreeClassifier(criterion=‘entropy‘)
clf = clf.fit(dummyX, dummyY)
print("clf: " + str(clf))

#Visualize model
with open("allElectronicInformationGainOri.dot", ‘w‘) as f:
f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)

oneRowX = dummyX[0, :]
print("oneRowX: " + str(oneRowX))

newRowX = oneRowX
newRowX[0] = 1
newRowX[2] = 0
print("newRowX: " + str(newRowX))

predictedY = clf.predict(newRowX.reshape(1, -1))
print("predictedY: " + str(predictedY))

数据样本:

原文地址:http://blog.51cto.com/13831593/2173570

时间: 2024-10-09 22:07:28

决策树入门程序,各部分配有解析的相关文章

springmvc入门程序

springmvc的入门程序(和前面的mybatis使用同一个案例,商城的案例.订单,购物车等) 需求: 功能需求: 商品的列表查询 环境准备: Java环境: Jdk1.7 Myeclipes9 Springmvc版本:spring3.2 需要spring3.2所有jar,一定要包括spring-webmvc那个 开发步骤: 1.导入jar包,这个不解释了. 2.在web.xml中配置前端控制器: <servlet> <servlet-name>springmvc</ser

视音频数据处理入门:FLV封装格式解析

===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理入门:PCM音频采样数据处理 视音频数据处理入门:H.264视频码流解析 视音频数据处理入门:AAC音频码流解析 视音频数据处理入门:FLV封装格式解析 视音频数据处理入门:UDP-RTP协议解析 ===================================================

mybatis入门_mybatis基本原理以及入门程序

一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的重复性编码 二.mybatis执行流程 Mybatis基本的执行流程如下图所示: 三.mybatis入门程序 3.1 通过mybatis完成通过主键(id)查询用户(user) 3.1.1.项目环境搭建 建立的是Java项目.采用的mybatis版本为3.2.7. 需要导入mybatis核心jar包

springMVC2 1入门程序

1入门程序 1.1需求 实现商品列表查询 1.2需要的jar包 使用spring3.2.0(带springwebmvc模块) 1.1前端控制器 在web.xml中配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.c

1.2 lucene入门程序环境搭建及入门代码

 lucene入门程序环境搭建及入门代码 1.1      需求 使用lucene完成对数据库中图书信息的索引和搜索功能. 1.2      环境准备 l  Jdk:1.7及以上 l  Lucene:4.10(从4.8版本以后,必须使用jdk1.7及以上) l  Ide:indigo l  数据库:mysql 5 1.3      工程搭建 l  Mysql驱动包 l  Analysis的包 l  Core包 l  QueryParser包 l  Junit包(非必须) 创建po类 1 publ

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

Mybatis入门程序

在做这个入门程序之前,我们来顶一下需求,根据需求来写程序会不会很有感觉呢? 一.  需求 实现以下功能: 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户 更新用户 删除用户 1.  第一步:创建java工程 使用eclipse创建java工程,jdk使用1.7. 2.  第二步:加入jar包 加入mybatis核心包.依赖包.数据驱动包. 3.  第三步:log4j.properties 在classpath下创建log4j.properties如下: <span st

JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) SpringMVC默认支持的类型 b) 简单数据类型 c) Pojo类型 d) Pojo包装类型 e) 自定义参数绑定 6.SpringMVC和Struts2的区别   第二天 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Con

Lucene入门程序-Java API的简单使用

Lucene入门程序 准备环境 JDK: 1.8.0_162 IDE: Eclipse Neon.3 数据库: MySQL 5.7.20 Lucene: 4.10.4(已经很稳定了,高版本对部分分词器支持不好) 准备数据 SET FOREIGN_KEY_CHECKS=0; -------------------------------- Table structure for `book` -------------------------------- DROP TABLE IF EXISTS