Python 决策树算法的实现

完整的程序如下:

>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环境变量中
Python 决策树算法的实现_第1张图片
验证:cmd进入命令行界面,输入dot -version,如果显示graphviz的相关版本信息,则安装配置成功。
安装成功之后,cd 切换到tree.dot所在的路径

> dot -Tpng ****.dot -o tree.png

你可能感兴趣的:(python)