minepy、treePlotter导包的问题
minepy、treePlotter导包的问题
minepy包
当学习最大信息系数时我们需要导minepy,用pip install minepy 时报错
解决方法:进入官网Unofficial Windows Binaries for Python Extension Packages,这个网站包含了很多Python扩展包的非官方Windows二进制文件,根据你的windows版本和python版本选择下载对应的minepy.whl文件。将Anaconda Prompt切换到安装包当前minepy.whl所在路径,执行pip install minepy-1.2.2-cp37-cp37m-win_amd64.whl
即可完成minepy的安装。其他包安装不了也可以类似操作。
treePlotter
机器学习中一些树的绘制需要用到treePlotter,一开始以为它是个包导了几次还是显示未安装,后面发现它是一系列函数组成的自定义模块。
解决方法:新建一个python包,在新建的包中的__init__文件中复制以下代码:
import matplotlib.pyplot as plt"""绘决策树的函数"""
decisionNode = dict(boxstyle="sawtooth", fc="0.8") # 定义分支点的样式
leafNode = dict(boxstyle="round4", fc="0.8") # 定义叶节点的样式
arrow_args = dict(arrowstyle="<-") # 定义箭头标识样式# 计算树的叶子节点数量
def getNumLeafs(myTree):numLeafs = 0firstStr = list(myTree.keys())[0]secondDict = myTree[firstStr]for key in secondDict.keys():if type(secondDict[key]).__name__ == 'dict':numLeafs += getNumLeafs(secondDict[key])else:numLeafs += 1return numLeafs# 计算树的最大深度
def getTreeDepth(myTree):maxDepth = 0firstStr = list(myTree.keys())[0]secondDict = myTree[firstStr]for key in secondDict.keys():if type(secondDict[key]).__name__ == 'dict':thisDepth = 1 + getTreeDepth(secondDict[key])else:thisDepth = 1if thisDepth > maxDepth:maxDepth = thisDepthreturn maxDepth# 画出节点
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)# 标箭头上的文字
def plotMidText(cntrPt, parentPt, txtString):lens = len(txtString)xMid = (parentPt[0] + cntrPt[0]) / 2.0 - lens * 0.002yMid = (parentPt[1] + cntrPt[1]) / 2.0createPlot.ax1.text(xMid, yMid, txtString)def plotTree(myTree, parentPt, nodeTxt):numLeafs = getNumLeafs(myTree)depth = getTreeDepth(myTree)firstStr = list(myTree.keys())[0]cntrPt = (plotTree.x0ff + \(1.0 + float(numLeafs)) / 2.0 / plotTree.totalW, plotTree.y0ff)plotMidText(cntrPt, parentPt, nodeTxt)plotNode(firstStr, cntrPt, parentPt, decisionNode)secondDict = myTree[firstStr]plotTree.y0ff = plotTree.y0ff - 1.0 / plotTree.totalDfor key in secondDict.keys():if type(secondDict[key]).__name__ == 'dict':plotTree(secondDict[key], cntrPt, str(key))else:plotTree.x0ff = plotTree.x0ff + 1.0 / plotTree.totalWplotNode(secondDict[key], \(plotTree.x0ff, plotTree.y0ff), cntrPt, leafNode)plotMidText((plotTree.x0ff, plotTree.y0ff) \, cntrPt, str(key))plotTree.y0ff = plotTree.y0ff + 1.0 / plotTree.totalDdef createPlot(inTree):fig = plt.figure(1, facecolor='white')fig.clf()axprops = dict(xticks=[], yticks=[])createPlot.ax1 = plt.subplot(111, frameon=False, **axprops)plotTree.totalW = float(getNumLeafs(inTree))plotTree.totalD = float(getTreeDepth(inTree))plotTree.x0ff = -0.5 / plotTree.totalWplotTree.y0ff = 1.0plotTree(inTree, (0.5, 1.0), '')plt.show()if __name__=='__main__':createPlot()
需要时直接import这个包即可。
可以参考:https://blog.csdn.net/pwc1996/article/details/52577148
minepy、treePlotter导包的问题相关推荐
- Android 删除无用的导包
window 10 系统 如果项目常见很久了,每个界面的去掉可以使用 ctrl + alt + o 快捷键, 或者 code -->Optimize imports 当然这样也是比较麻烦,为了 ...
- java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...
1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...
- RecyclerView导包
2019独角兽企业重金招聘Python工程师标准>>> 由于RecyclerView放在support library v7包中,所以我们想要使用就必须要导包.下面就介绍下在Ecli ...
- Eclipse之JSON导包
1.选中要导包的工程-–>2.右击选择创建文件夹--->3.将要导的包复制到该文件夹下--–>4.右击要导入的包-->5.选择Build path->Add to Bui ...
- python no module name_python导包显示No module named XXX问题
最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: 1 #coding ...
- pycharm 无法导包、无法导入模块(模块名不能含有连接符“-”)
注意,模块的命名很重要,名字中下划线是可以接受的,但是连接符"-"就不行了,如: 将"-"改成下划线就可以了 如果已经存在导包语句后,要将被导入的模块名修改为不 ...
- python 导包语法 import package as name 和 from package import name 的区别
今天在导包的时候: # from easydict import EasyDict as edict # 成功 # import easydict.EasyDict as edict # 失败 结果: ...
- python 如何将虚拟环境的项目的所有.py文件的import导包汇总到requirements.txt文件 (pipreqs)
参考文章: pipreqs - Generate requirements.txt file for any project based on imports 作用: 能快速汇总所需安装的包然后批量安 ...
- Golang的导包和引用包的问题
go不同文件之间的相互引用靠包来实现,包的名字类似命名空间可以用来间接访问包内声明的标识符,总结下来就是: 1,文件夹就是包,文件夹名就是包名 2,同一文件夹(包)下的所有文件可以视为同一文件,也就是 ...
最新文章
- oracle根据一张表更新另外一张表
- 【必读】2019年深度学习自然语言处理最新十大发展趋势, 附报告下载
- linux 26,Linux常用26条命令
- 【工具】更新云文档办公利器汇总,腾讯新增批量上传多文件上传,云文档对比测试报告...
- python argparse理解与实例
- 浅谈AI视频技术超分辨率
- react组件之间重用状态
- 程序员面试中遇到问题
- DecimalFormat 用法
- ckeditor内容保存后显示问题
- 罗永浩直播首秀开卖小米 10;微信能转账 QQ;Ruby 2.7.1 发布 | 极客头条
- 分布式存储系统学习笔记(二)—分布式文件系统(2)—淘宝文件系统(TFS)
- Canonical发布信息图:Ubuntu Linux连接一切
- swfupload 实例 php,文件上传之SWFUpload插件(代码)_php实例
- 入侵排查篇---勒索病毒自救指南
- ubuntu 安装dep文件
- 爬虫--07:MongoDB
- 金士顿内存条真假测试软件,金士顿内存条真伪怎么看?金士顿内存条判别真伪的几种方法...
- 为什么需要工作流调度系统?
- 魅族手机CUP浮点运算测试BUG