【机器学习】使用python构建决策树
2017-02-26 16:34
411 查看
在看了决策树相关内容和麦子学院讲解的利用Python构建决策树的视频教程后,跟着视频做了构建决策树的过程
本次构建决策树的使用的算法是ID3算法,主要思想是利用不同特征值的信息熵来作为最优划分属性,决策树具体内容将在其余文章内给出。
1.环境搭建:
本次使用的环境是Mac OS + PyCharm + anaconda2.7 + GraphViz
需要用到的库主要是sklearn,此外,在Mac上装GraphViz只需在终端输入“brew install graphviz”即可,安装完成后,将下载的文件路径添加到系统环境变量中即可。添加方法:
终端下输入:export PATH="/usr/local/Cellar/graphviz/2.40.1/bin:$PATH"
其中的文件路径就是利用brew安装的文件路径。
配置好后,使用Pycharm新建工程文件“decisionTree”
写入如下程序:
本程序的csv文件内容大致如下:
程序的目的就是对这14个样本进行构建决策树并对输入的新样本进行预测的过程。
程序的最后是进行预测的过程,最后程序输出为:
可以看到对于一个输入数据,成功的进行了预测。
此外,利用graphviz还可以很方便的将程序过程中生成的.dot文件转化为pdf文件进行显示决策树的样子,具体方法是在终端下输入:dot -Tpdf name.dot -o name1.pdf,在这个程序中生成的决策树如下图所示:
本次构建决策树的使用的算法是ID3算法,主要思想是利用不同特征值的信息熵来作为最优划分属性,决策树具体内容将在其余文章内给出。
1.环境搭建:
本次使用的环境是Mac OS + PyCharm + anaconda2.7 + GraphViz
需要用到的库主要是sklearn,此外,在Mac上装GraphViz只需在终端输入“brew install graphviz”即可,安装完成后,将下载的文件路径添加到系统环境变量中即可。添加方法:
终端下输入:export PATH="/usr/local/Cellar/graphviz/2.40.1/bin:$PATH"
其中的文件路径就是利用brew安装的文件路径。
配置好后,使用Pycharm新建工程文件“decisionTree”
写入如下程序:
# -*- coding: utf-8 -*- # coding=utf-8 # 实现决策树并进行预测 from sklearn.feature_extraction import DictVectorizer import csv from sklearn import preprocessing from sklearn import tree # from ..items import DmozItem # from sklearn.externals.six import StringIO # read in the csv file and put features in a list of dict and list of class label allElectronicsData = open('/Users/damu/study/AppData/ML/decisionTree/AllElectronics.csv', 'rb') reader = csv.reader(allElectronicsData) headers = reader.next() # print(headers) featuresList = [] 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] featuresList.append(rowDict) # print(featuresList) vec = DictVectorizer() dummyX = vec.fit_transform(featuresList).toarray() print("dummyX:"+str(dummyX)) print(vec.get_feature_names()) print("labelList:"+str(labelList)) lb = preprocessing.LabelBinarizer() dummyY = lb.fit_transform(labelList) print("dummyY:"+str(dummyY)) clf = tree.DecisionTreeClassifier(criterion='entropy') clf = clf.fit(dummyX, dummyY) print("clf:"+str(clf)) 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) print("predictedY: " + str(predictedY))
本程序的csv文件内容大致如下:
程序的目的就是对这14个样本进行构建决策树并对输入的新样本进行预测的过程。
程序的最后是进行预测的过程,最后程序输出为:
可以看到对于一个输入数据,成功的进行了预测。
此外,利用graphviz还可以很方便的将程序过程中生成的.dot文件转化为pdf文件进行显示决策树的样子,具体方法是在终端下输入:dot -Tpdf name.dot -o name1.pdf,在这个程序中生成的决策树如下图所示:
相关文章推荐
- 机器学习(一):决策树算法及使用python构造一个决策树
- 使用Python构建决策树
- 关于使用Aptana+Pydev构建Python开发环境(Django)
- 构建简单的 C++ 服务组件,第 2 部分: 通过服务组件体系结构使用 Python、Ruby 和 Web 服务
- 关于使用Aptana+Pydev构建Python开发环境(Django)
- 使用python构建基于hadoop的mapreduce日志分析平台
- 使用ID3算法构建决策树
- 使用Boost.Python构建混合系统
- 使用百度翻译开放API构建的python命令行词典
- 使用python构建基于hadoop的mapreduce日志分析平台
- 使用python构建基于hadoop的mapreduce日志分析平台 推荐
- 使用 Python 和 Cheetah 构建和扩充模板
- 使用excel插件treeplan构建决策树
- 使用zc.buildout构建python项目
- 使用Visual Studio 2010本地构建libxml-python
- Python web框架Django学习(1)——在win7 64bit下配置开发环境Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和
- 关于使用Aptana+Pydev构建Python开发环境的更新(Django)
- 使用zc.buildout构建python项目
- 使用python的Tkinter构建应用程序
- python中机器学习包scikit-learn使用笔记与sign prediction简单小结