完整的程序如下:
>from sklearn.feature_extraction import DictVectorizer>import csv>from sklearn import tree>from sklearn import PReprocessing>from sklearn.externals.six import StringIO># 第一步:读取CSV文件>def trainDicisionTree(csvfileurl):> featureList = [] # 存储特征值> labelList = [] # 存储预测的目标值> allElectronicsData=open(csvfileurl) # 读取CSV文件> reader = csv.reader(allElectronicsData) #逐行读取> headers=str(allElectronicsData.readline()).split(',') # 读取表头> print headers> for row in reader:> labelList.append(row[len(row)-1]) #读取最后一列的目标数据> rowDict = {} #存放特征值的字典> for i in range(1,len(row)-1):> rowDict[headers[i]] = row[i]> # print("rowDict:",rowDict)> featureList.append(rowDict)> print(featureList)> # 将文本信息转化为机器学习决策树库文件可以识别的形式> vec = DictVectorizer() # 整型数字转化> dummyX = vec.fit_transform(featureList).toarray() # 特征值转化为整型数据> print "dummyX: " + str(dummyX)> print(vec.get_feature_names())> print("labelList: " + str(labelList))> lb = preprocessing.LabelBinarizer()> dummyY = lb.fit_transform(labelList)> print("dummyY: /n" + str(dummyY))> > # 使用决策树进行分类预测处理> # 自定义采用信息熵的方式确定根节点> clf = tree.DecisionTreeClassifier(criterion='entropy')> clf = clf.fit(dummyX, dummyY)> print "clf: " + str(clf)> # 可视化模型> with open("****.dot", 'w') as f:> f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f) > # 预测> pre = clf.predict([[0,0,1,1,1,1,0,0,1,0]])若要将**.dot文件转化成图形,需要下载安装graphviz 安装后,需要将graphviz安装目录下的bin文件夹添加到Path环境变量中 验证:cmd进入命令行界面,输入dot -version,如果显示graphviz的相关版本信息,则安装配置成功。 安装成功之后,cd 切换到tree.dot所在的路径
新闻热点
疑难解答