机器学习的杂谈

25 May 2019

python 包管理

python 版本

# 当前python 版本信息
python --version -V
# 查看电脑里边所有python
which -a python

conda 常用指令

# 获取当前conda的信息
conda info
# 更新conda 版本
conda update conda
# 安装包
conda install/update scikit-learn
# 创建环境,开启/关闭环境
conda create --name/-n py35 python=3.5 activate/deactivate py35/base
# 遍历环境
conda env list
# 遍历当前环境的包
conda list/search
# 输出环境 到 文件
conda list -e > requirements.txt
# 从文本读取 安装 包 (--yes, 全部直接确认)
conda install --yes --file requirements.txt

pip 常用指令

pip install scikit-learn
pip uninstall scikit-learn
pip --version/-V
pip list
pip install scikit-learn-1.0-py2.py3-none-any.whl
pip show --files scikit-learn
pip install --upgrade/-U scikit-learn
# 指定python 的 pip
python -m pip install scikit-learn
python -m pip install --upgrade pip

关于激活函数

没有激活函数的神经网络, 不管多少层网络, 其实和一层网络没有区别, 矩阵相乘是可以合并的.

特征工程

数据和特征决定了机器学习的上限, 而模型和算法只是逼近整个上限而已

其本质是一项工程活动, 目的是最大限度的从原始数据中提取特征以供算法和模型使用

不论什么数据, 处理的目的都是转化成列向量

基本特征, 统计特征, 复杂特征 -》 结构化特征
自然特征 -》 非结构化特征

数据预处理

scikit-learning 数据预处理函数

样本数量不足的处理方法

图像

特征提取后的特征空间变换

超参数调优

降维与PCA

降维的目的:

  1. 缓解维度灾难
  2. 压缩数据时信息损失最小化
  3. 高维数据可视化

参数搜索

sklearn 中使用GridSearchCV, 遍历多种参数组合, 通过交叉寻找最优效果的参数.

Matplotlib 标题设置中文乱码解决

  1. 下载中文字体(黑体,看准系统版本) SimHei
  2. 解压之后在系统当中安装好,我的是Mac,打开字体册就可以安装了,Windows的在网上搜一下吧
  3. 找到matplotlib字体文件夹
    # 查找 matplotlib 在电脑中的位置
    pip show --files matplotlib
    

    例如:matplotlib/mpl-data/fonts/ttf,将SimHei.ttf拷贝到ttf文件夹下面

  4. 修改配置文件matplotlibrc
    同样在matplotlib/mpl-data/fonts目录下面,修改下面三项配置
    font.family: sans-serif
    font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
    axes.unicode_minus:False,#作用就是解决负号’-‘显示为方块的问题

    假如你只做到了这里,那要小心喽,代码里面还是会错,画图还是会显示方块
  5. 最重要的一步来了,改了配置之后并不会生效,需要重新加载字体,在Python中运行如下代码即可:
    import matplotlib as mpl
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    from matplotlib.font_manager import _rebuild
     _rebuild() #reload一下, 只有第一次添加font文件需要调用
    # 这样不需要调用plt.show()就能显示图表
    %matplotlib inline
    # mac下面显示清晰图表, 不加会模糊
    %config InlineBackend.figure_format = 'retina'