Anaconda 环境配置及其他

小组信息分享,或会适时更新

dga_predict-master 文件夹 2019-4-13

dga_predict-master 是随数据下载的现成的对 DGA 域名的检测代码,也就是对 DGA 异常域名和 正常域名 进行二分类的代码。

  • 代码中使用的正常域名数据来自 top-1m.csv ,会在代码初次运行时下载。(在 whitedns 文件夹下也有一份。)
  • 代码使用的异常数据会在运行时调用 dga_predict-master/dga_classifier/dga_generators 下的代码生成。
  • 代码使用 bi-gramlstm 两种方式实现分类,算法分别对应 dga_classifier/bigram.pydga_classifier/lstm.py ,这两个实现代码中包含对域名数据的向量化。
  • run.py 也包含绘制 ROC 曲线的代码。
  • README.md 文档包含代码原说明
  • 原代码为 Python 2 版本,我已经将代码改为 Python 3 版本,如果环境配置好,可以顺利执行。执行:
    python ./run.py 
    

    开始运行代码。根据报错信息配置环境,直至代码顺利执行完毕。

  • 配置环境期间,建议对如下两条语句做修改,以减少等待时间。当代码可以顺利执行时,再修改回去完整执行。

    # bigram.py 第20行
    # def run(max_epoch=50, nfolds=10, batch_size=128):  # 注释这一行原代码
    def run(max_epoch=1, nfolds=10, batch_size=128):  # 使用这一行代码
    
    # lstm.py 第27行
    # def run(max_epoch=25, nfolds=10, batch_size=128):  # 注释这一行原代码
    def run(max_epoch=1, nfolds=10, batch_size=128):  # 使用这一行代码
    
  • results.pkl 是运行时保存的 结果数据,二进制形式。traindata.pkl 是运行时下载和生成的训练数据,二进制形式。results.png 是训练结束后绘制的 ROC 曲线。重新训练模型需要删除 result.pkl 文件。

环境配置步骤参考 2019-4-12

【package-download-image】下载它

  • 安装完毕之后,需要执行一条指令以便在 命令行 中也能使用 conda 命令。操作:以 管理员身份 打开 Anaconda Powershell Prompt 执行 conda init 命令即可,一般下载的是最新版本的 Anaconda (即版本高于 4.6),那么就不要再对环境变量 Path 进行配置了,否则后期无法激活创建的虚拟环境。

【anaconda-powershell-prompt】用管理员身份打开它执行 conda init 命令

  • 更换默认 conda 源。即添加 清华维护的 Anaconda 镜像。网站:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 按照网站说明操作,强烈建议把清华维护的所有第三方仓库镜像也进行添加,否则在国内下载一些第三方仓库模块时会速度非常慢。所以把说明页列出的所有命令都执行一遍就好了。

【tsinghuo-anaconda-mirror】一条一条地复制粘贴这些命令执行

  • 由于没能获得上游授权,清华的镜像源2019年4月16日起停止服务了,很可能是无限期的。以上内容中关于清华源的部分可更换为中科大或者阿里源。

    当然,直接使用官方源也是可以的。就是有时会速度感人,但不容易出现包之间的依赖问题。

  • 运行 Python 代码,凡是报错找不到模块 ModuleNotFoundError: No module named 'xxx' 的,就执行 conda install xxx 安装该模块,如果此条命令执行不成功,说明该模块属于第三方仓库,需要 进入 Anaconda 官网 https://anaconda.org/搜索该模块。使用搜索结果中对应的命令安装。

【anaconda-cloud-search-jieba】例如搜索分词库结巴库

【anaconda-third-repository-moduel-select】进入模块的详情页

【download-moduel-from-anaconda-cloud】复制命令下载结巴库

  • 如果涉及到 Tensorflow 模块的安装,不建议按照 tensorflow 官网说明安装(国内它的官网应该无法访问),建议直接安装 Anaconda 封装好的 tensorflow 或者 tensorflow-gpu 模块。安装命令:
    conda install tensorflow
    或 
    conda install tensorflow-gpu
    

    tensorflow-gpu 支持 GPU 运算,运算速度更快,但要求计算机具有 NVIDIA 显卡且安装好 CUDA Toolkit。 网址:https://developer.nvidia.com/cuda-downloads

    附 Anaconda 对 tensorflow 的说明页面:https://www.anaconda.com/tensorflow-in-anaconda/ 如果对 conda 的虚拟环境有了解,可以按照页面末尾命令操作,将 tensorflow 安装在独立的环境中。

其他 2019-4-12 (问题很难详尽,随时搜索报错信息或在群聊交流)

  • 跑代码时关注下计算机内存消耗情况,有时需要适当关闭其他应用程序

  • 如果报错提示:

    ... (省略若干行)
    TypeError: while_loop() got an unexpected keyword argument 'maximum_iterations'
    ... (省略若干行)
    

    解决方式:keras 需要安装 2.1.2 版本,指定安装版本的安装命令

    conda install keras=2.1.2
    
  • 如果报错:
    from matplotlib import afm, cbook, ft2font, rcParams, get_cachedir
    ImportError: DLL load failed: 找不到指定的模块。
    

    先用

    pip uninstall matplotlib 
    

    将当前环境 matplotlib 卸载,再用

    pip install matplotlib
    

    重新安装