机器学习(二)--决策树

机器学习(二)–决策树

今天学习了决策树算法,trees.py代码没有遇到什么问题,但是在程序清单3-5利用文本注解绘制树节点时,中文的显示遇到了问题。
我用的是Anaconda,Python3.5版本,按照网上的说法修改matplotlib中的matplotlibrc文件,但是在Anaconda安装目录下,matplotlib是个tar.bz2压缩包,修改了也没用。于是按照
http://blog.chinaunix.net/uid-26611383-id-3521248.html
的方法,在代码文件中动态修改,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Mar 10 20:35:42 2016

@author: Daniel
"""
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
font = FontProperties(fname=r"c:\Windows\Fonts\msyh.ttf", size=10) 

decisionNode = dict(boxstyle = "sawtooth", fc="0.8")
leafNode = dict(boxstyle = "round4",fc="0.8")
arrow_args = dict(arrowstyle = "<-")

def plotNode(nodeTxt, centerPt, parentPt, nodeType):
    createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction',
                            xytext=centerPt, textcoords='axes fraction',
                            va="center", ha="center", bbox=nodeType, 
                            arrowprops=arrow_args, fontproperties=font)
def createPlot():
    fig = plt.figure(1,facecolor='white')
    fig.clf()
    createPlot.ax1 = plt.subplot(111, frameon=False)
    plotNode('决策节点',(0.5,0.1),(0.1,0.5),decisionNode)
    plotNode('叶节点', (0.8,0.1),(0.3,0.8),leafNode)
    plt.show()

主要是在font中引用了微软雅黑字体,好像不能用宋体、楷体等,要用Fonts文件夹下有的且支持中文的。
Python3.0后,字符串都是utf-8编码,所以不用在‘决策节点’‘叶节点’前加U了。

程序清单3-6
dict.keys()函数返回的对象可迭代,但不可索引,因此,必须显式转化为list,

firstStr = list(myTree.keys())[0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值