机器学习(一):决策树算法及使用python构造一个决策树

原创 2016年08月28日 19:33:11

本文使用python学习机器学习,其中anaconda包很强大,并且使用到scikit-learn这个机器学习的库

首先是第一个算法:决策树算法

一,安装配置python及anaconda,见我另一篇博客。http://blog.csdn.net/qq_32166627/article/details/52301641

二,安装scikit-learn库

三,决策树的理论知识参见网络

四,准备好数据:下图用于预测一个人是否会买电脑,特征有age,income,student,credit_rating,标签就是是否买电脑

该表保存到一个csv文件里面data.csv,可用excel编辑。


五,eclipse创建一个PyDev项目,代码如下:

# _*_ coding: utf-8 _*_

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

allData = open("E:\eclipse_file\Deeplearning\data\decisionTree.csv", "rU")
reader = csv.reader(allData)
headers = next(reader)#3.4版本使用该语法,2.7版本则使用headers=reader.next()
print(headers)#打印文件第一行


featureList = []
lableList = []
for row in reader:
    lableList.append(row[len(row)-1])
    rowDic = {}
    for i in range(1,len(row)-1):
        rowDic[headers[i]] = row[i]
    featureList.append(rowDic)
print("featureList:"+str(featureList))
print("lablelist:"+str(lableList))
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()


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


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


clf = tree.DecisionTreeClassifier(criterion="entropy")
clf = clf.fit(dummyX, dummyY)
print("clf:"+str(clf))


with open("DecisionTree_BuyCompute.dot","w") as f:
    f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(),out_file = f)
    
oneRow = dummyX[0]
print("oneRow:"+str(oneRow))
oneRow[0] = 1
oneRow[2] = 0
predictY = clf.predict(oneRow)
print("predictY:"+str(predictY))



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hadoop学习之hive

1.文件读取的三种方法 方法一: 代码如下: f = open("foo.txt")             # 返回一个文件对象   ...

数学之美番外篇:平凡而又神奇的贝叶斯方法

数学之美番外篇:平凡而又神奇的贝叶斯方法   转载自:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/        概率...

arcgis/arcmap面共用边

需求说明有些地质现象、遥感解译等面需要共用边,一般情况下,可以先画出整体范围,然后使用裁剪面工具,但是有时是先画出了局部,欲在此基础上补充紧邻的面。 解决方案使用创建要素的自动完成面(或自动完成手绘...

机器学习经典算法详解及Python实现--决策树(Decision Tree)

决策树也是最经常使用的数据挖掘算法,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子)。判断模块表示对一个特征取值的判断(该特征有几个值,判断模块就有几个分支)。决策树...

Python机器学习(三)--决策树算法

一、决策树原理 决策树是用样本的属性作为结点,用属性的取值作为分支的树结构。 决策树的根结点是所有样本中信息量最大的属性。树的中间结点是该结点为根的子树所包含的样本子集中信息量最大的属性。决策树...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)