您的位置:首页 > 编程语言 > Python开发

Python-决策树ID3实践

2016-10-11 23:17 239 查看
scikit-learn是Python一个机器学习的库,安装简单,不过需要提前装好numpy,Scipy和matplotlib等科学计算的包。

实践代码如下:

from sklearn.feature_extraction import DictVectorizer
#属性类型转化要用到的包
import csv #因为下面用于生成决策树的原始数据是csv电子表格的形式,故导入此包
from sklearn import tree #导入树相关的包
from sklearn import preprocessing#导入结果标记类型转化要用的包
from sklearn.externals.six import StringIO#IO相关的包
#以上是导入一些要用的sklearn库中的包
# Read in the csv file and put features into list of dict and list of class label

allElectronicsData = open(r'D:/AllElectronics.csv', 'rb')
reader = csv.reader(allElectronicsData)
headers = reader.next()
#heades是属性的列表
#print(headers)
#这一段将csv文件中的数据读取到reader上

featureList = []
labelList = []

for row in reader:
labelList.append(row[len(row)-1])
rowDict = {}
for i in range(1, len(row)-1):
rowDict[headers[i]] = row[i]
featureList.append(rowDict)
#创建两个列表,通过循环将所有样例的结果放入labelList,将每个样例所有属性数据以字典的形式放入featureList中

#print(featureList)
# Vetorize features

vec = DictVectorizer()
dummyX = vec.fit_transform(featureList) .toarray()
#print("dummyX: " + str(dummyX))
#print(vec.get_feature_names())
#print("labelList: " + str(labelList))
# vectorize class labels

lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
#print("dummyY: " + str(dummyY))
#以上两段分别用sklearn提供的包将样例各属性数据和结果数据,转化为生成决策树所需的dummy类型。也就是用0,1编码的类型。

# Using decision tree for classification
# clf = tree.DecisionTreeClassifier()

clf = tree.DecisionTreeClassifier(criterion='entropy')
#决策树的定义,criterion = 'entropy'表明决策树用ID3算法
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)

#以上是构建决策树的过程最终生成一个dot文件,可以在网上下载一个Graphviz工具将dot文件转化为pdf或png等可视化的树形图。
#oneRowX = dummyX[0, :]
#newRowX = oneRowX

#newRowX[1] = 1
#newRowX[2] = 0

#predictx = clf.predict(newRowX)
#print (str(newRowX))
#print("predictx:", str(predictx))
#这里是一个决策树的测试例子,用一条样例的各属性稍微改,调用predict函数预测,则通过各个属性的值直接预测出结果。


详细的sklearn库的API文档资料可以去官网查看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python-决策树