今天学了关于决策树的相关知识点,以下是对学习过程中遇到问题所做的笔记。
1.关于csv
csv文件格式是一种通用的电子表格和数据库导入导出格式。
读取csv文件
import csv
file = open('C:\Users\QAQ\Desktop\p.csv','rb')
reader = csv.reader(file)
for row in reader:
print row #其中我们也可以对row中的元素进行操作, 比如row【0】, row【1】....
写入csv文件
import csv
wf = open('C:\Users\QAQ\Desktop\p.csv','a+')
writer = csv.writer(wf)
writer.writerow(['15', 'youth', 'medium', 'no', 'excellent', 'yes'])
wf.flush()
wf.close()
2. 关于DictVectorizer() 参见http://blog.csdn.net/cheng9981/article/details/61924149
featureList=[] #里面储存特征值
LableList=[] #储存类别的值 yes/no
for row in reader:
LableList.append(row[len(row) - 1 ])#添加最后一列的值
rowDict={}#创建一个字典
for i in range(1, len(row) - 1):
rowDict[headers[i]] = row[i]
featureList.append(rowDict)#将每一行的的字典存在特征值里面
#print featureList
vec = DictVectorizer()#实例化DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()#特征值的提取
#参见http://blog.csdn.net/cheng9981/article/details/61924149
#print str(dummyX)
# [[ 0. 0. 1. 0. 1. 1. 0. 0. 1. 0.]
# [ 0. 0. 1. 1. 0. 1. 0. 0. 1. 0.]
# [ 1. 0. 0. 0. 1. 1. 0. 0. 1. 0.]
# [ 0. 1. 0. 0. 1. 0. 0. 1. 1. 0.]
# [ 0. 1. 0. 0. 1. 0. 1. 0. 0. 1.]
# [ 0. 1. 0. 1. 0. 0. 1. 0. 0. 1.]
# [ 1. 0. 0. 1. 0. 0. 1. 0. 0. 1.]
# [ 0. 0. 1. 0. 1. 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 0. 1. 0. 1. 0. 0. 1.]
# [ 0. 1. 0. 0. 1. 0. 0. 1. 0. 1.]
# [ 0. 0. 1. 1. 0. 0. 0. 1. 0. 1.]
# [ 1. 0. 0. 1. 0. 0. 0. 1. 1. 0.]
# [ 1. 0. 0. 0. 1. 0. 1. 0. 0. 1.]
# [ 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
3.tree.DecisionTreeClassifier(里面选择分离的方法) 决策树的算法, 这里我们选信息熵的分离
突然感觉python啥都替我们干好了,我们做的其实就是对前期数据的预处理。
#创建分离器
clf = tree.DecisionTreeClassifier(criterion='entropy')#选取分离的方法, 我们使用的是信息熵分离
clf = clf.fit(dummyX, dummyY)#建模 两个参数
print "clf" + str(clf)
4. tree.export_graphviz
with open('C:\\Users\\QAQ\\Desktop\\r.dot', 'w') as f:
f = tree.export_graphviz(clf, feature_names = vec.feature_names_, out_file = f)
# 这个参数 feature_names = vec.feature_names_ 将矩阵中的01特征值重新变为 youth、middle_age...
5.将dot文件转化为pdf格式
1、首先安装Graphviz
2、配置Path环境变量
3.dot -Tpdf r.dot -o outpu.pdf (在cmd 下面输入 可将dot文件转化为pdf格式)