换底公式 nohup apply agg custom func无解 vcvarsall.bat
节奏不要乱,何必和菜鸡硬钢,根本就不是一个level可比较的!做好自己!
把昨天学到的新知识记录一下!
1. 好久没用linux一些命令又记不清楚了,后台运行nohup XXX & >filename 2>&1 标准输出和标准错误 输出到filename
2. np.log没有自定义的底数,只有log10 log1p等等,我后来想起,有著名的换底公式啊,np.log(x)/np.log(5),不就等价于5为底吗
3. Series.apply(math.log(base=5)),似乎不能这样放到apply函数里面,Series.apply(math.log),这样是可以,难道是dict参数传进去?直接是list似的参数传递进去,Series.apply(math.log, args = (5,)),当然也可以写成lambda函数,Series.apply(lambda x:math.log(x,5))
4. 昨天花了不少的时间,测试出了我特征工程的代码是慢在哪里,测试的方式就是用打日志的方式,后来我发现是慢在groupby.agg()中传入了自定义的函数,举个例子groupby('uid')['pid'].agg('sum'),这样很快,groupby('uid')['pid'].agg(np.sum)这样也很快,但是这样就会很慢groupby('uid')['pid'].agg(lambda x:np.sum(x)),这种问题只在数据量很大的情况才体现出来,大概5M以上,uid的distinct value在90k的样子。韩国人的说法是前面两种方式用的是cython代码,后面我只是用python包了一次,难道全部就变成了python代码?其实我有点没懂原因。
5. 后来yxz给我发了一个链接,我进去看了下,大概是如何在ipython中写cython来提高效率,我遇到的第一个问题就是%%cython这个magic命令报错,Unable to find vcvarsall.bat,很多和C有关的package安装也会遇到这个问题,其实就是安装VCforpython2.7便可,其实我已经安装了这个,但是我没搜索到vcvarsall.bat这个文件(这里我应该学习下正确地使用windows搜索的技巧),我又卸载了重新安装了一次,找到了,报这个错误的本质原因是Python中的distutils模块中的msvc9compiler.py找不到vcvarsall.bat,这个脚本的逻辑是按照regedit去查找,但是安装VCforpython2.7并不会去设置这个注册表,于是需要在HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC这个路径中添加productdir为key,string value为vcvarsall.bat的路径,这个是64位python的路径,详情见http://blog.csdn.net/donger_soft/article/details/44838109
6. 搞定了环境配置的问题,我试了试%%cython这个魔法命令,因为我里面直接是调用input的instance method,似乎没什么效果,应该要深入到内部逻辑才能cython化
7. 遇到一个linux图像存储的问题,我知道输出是不可能的,因为没有图形界面,但是后来明阳兄告诉我可以用jupter起一个远程连接然后在jupter里面显示,这种黑科技我还没试过,到时候可以试一下,简单来说问题是这样的,虽然用的是savefig,但是显示后端调用的是qt,但是linux QT相关开发又有一些问题,我最后直接放弃,用model.get_fscore直接输出变量重要性的dict
把昨天学到的新知识记录一下!
1. 好久没用linux一些命令又记不清楚了,后台运行nohup XXX & >filename 2>&1 标准输出和标准错误 输出到filename
2. np.log没有自定义的底数,只有log10 log1p等等,我后来想起,有著名的换底公式啊,np.log(x)/np.log(5),不就等价于5为底吗
3. Series.apply(math.log(base=5)),似乎不能这样放到apply函数里面,Series.apply(math.log),这样是可以,难道是dict参数传进去?直接是list似的参数传递进去,Series.apply(math.log, args = (5,)),当然也可以写成lambda函数,Series.apply(lambda x:math.log(x,5))
4. 昨天花了不少的时间,测试出了我特征工程的代码是慢在哪里,测试的方式就是用打日志的方式,后来我发现是慢在groupby.agg()中传入了自定义的函数,举个例子groupby('uid')['pid'].agg('sum'),这样很快,groupby('uid')['pid'].agg(np.sum)这样也很快,但是这样就会很慢groupby('uid')['pid'].agg(lambda x:np.sum(x)),这种问题只在数据量很大的情况才体现出来,大概5M以上,uid的distinct value在90k的样子。韩国人的说法是前面两种方式用的是cython代码,后面我只是用python包了一次,难道全部就变成了python代码?其实我有点没懂原因。
5. 后来yxz给我发了一个链接,我进去看了下,大概是如何在ipython中写cython来提高效率,我遇到的第一个问题就是%%cython这个magic命令报错,Unable to find vcvarsall.bat,很多和C有关的package安装也会遇到这个问题,其实就是安装VCforpython2.7便可,其实我已经安装了这个,但是我没搜索到vcvarsall.bat这个文件(这里我应该学习下正确地使用windows搜索的技巧),我又卸载了重新安装了一次,找到了,报这个错误的本质原因是Python中的distutils模块中的msvc9compiler.py找不到vcvarsall.bat,这个脚本的逻辑是按照regedit去查找,但是安装VCforpython2.7并不会去设置这个注册表,于是需要在HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC这个路径中添加productdir为key,string value为vcvarsall.bat的路径,这个是64位python的路径,详情见http://blog.csdn.net/donger_soft/article/details/44838109
6. 搞定了环境配置的问题,我试了试%%cython这个魔法命令,因为我里面直接是调用input的instance method,似乎没什么效果,应该要深入到内部逻辑才能cython化
7. 遇到一个linux图像存储的问题,我知道输出是不可能的,因为没有图形界面,但是后来明阳兄告诉我可以用jupter起一个远程连接然后在jupter里面显示,这种黑科技我还没试过,到时候可以试一下,简单来说问题是这样的,虽然用的是savefig,但是显示后端调用的是qt,但是linux QT相关开发又有一些问题,我最后直接放弃,用model.get_fscore直接输出变量重要性的dict
留言
張貼留言