分类 Python 下的文章

Python四舍五入round精度缺失问题


说了你可能不信,是内置函数的锅。

起步

round()是python进行四舍五入的函数,然而这里有坑。在我不断排查,万万没想到是内置函数也有错误,在此记个坑。

20160902175619.png

这是在python2.6的环境下,保留小数位数都是错的,一个bug。于是好奇在不同版本下round是怎么工作的


Win10+XGBoost Python包的安装


  鉴于网上教程大多过时而且扯淡,特此记录一下我的安装过程。XGBoost提供R和Python的包,这里介绍Python包的安装。   XGBoost是数据挖掘中用到一个新型的数据分析包,相对其它Boosting模型更加高效。具体请看XGBoost

  想要安装XGBoost首先需要具备以下几个条件:

  1.安装Python(建议2.7)并设置好环境变量   2.安装numpy和scipy包(或者直接用Python科学计算的集成环境Anaconda)   3.下载mingw-w64,并解压到C盘根目录(路径不含中文即可),将其bin目录位置添加到系统环境变量path之后(如 C:\mingw64\bin),并将bin目录下 mingw32-make.exe改名为make.exe,便于后面调用。   4.安装好Git,推荐Git

  然后就可以开始安装XGBoost了。

  1.打开 Git Bash 并选择一个下载位置

  2.依次执行 git clone --recursive https://github.com/dmlc/xgboost

cd xgboost

git submodule init

git submodule update

  注:git submodule 用于更新公共资源

  3.执行 cp make/mingw64.mk config.mk (如果不用Bash会报错)

  执行 make -j4 大约编译10分钟

  4. 进入文件夹 cd python-package

  执行 python setup.py install

  结束之后使用import xgboost验证,不报错即可。


解决cv2.drawMatches函数不存在的问题


起步

cv2.drawMatches这个函数在OpenCV 2.4.12中不存在。3.0以后才提供。所以运行时得到这样的报错:

Traceback (most recent call last):
File "match.py", line 22, in <module>
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2)
AttributeError: 'module' object has no attribute 'drawMatches'