#PyCon2018两款最新ML数据可视化库:Altair和Yellowbrick,函数式编程的可视化库和scikit-learn增强可视化库

数据科学的可视化库和深度学习框架库一样,虽然层出不穷,但是大致分为两种:

一种是通用可视化库任何类似json schema的静态数据都可以用它作图如:  PandasSeaborn , ggplotBokehpygalPlotly 。

另一种是和框架耦合较高的可视化库,如TensorFlow的TensorBoard,scikit-learn增强可视化库Yellowbrick

对于第一种通用库,方便简洁、易用的趋势一直没有改变。这届PyCon2018上的talk:Exploratory Data Visualization with Vega, Vega-Lite, and Altair 就介绍了Altair这种新的函数式编程可视化库,其简洁程度,只要拿到panda的dataframe数据,多加一句声明代码,就可以进行可视化了:

import altair as alt

# to use with Jupyter notebook (not JupyterLab) run the following
# alt.renderers.enable('notebook')

# load a simple dataset as a pandas DataFrame
from vega_datasets import data
cars = data.cars()

# 这里是声明代码,是不是有函数式编程的味道 ?
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
)
Altair例程

如果要把点的样式改成线的样式,只需把函数mark_point()改成mark_line()即可:

alt.Chart(cars).mark_line().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
)

这里可以注意到无论你的car数据集有多少特征,可视化时你需要什么特征,在encode函数中声明就可以了。当然,Altair API还有许多便捷的地方,许多实例的jupyterNOTEBOOK例子可以先试试

而对于和scikit-learn耦合较高的可视化库Yellowbrick, 甚至在可视化的过程中,已经融入的训练过程:

from sklearn.linear_model import LogisticRegression

from yellowbrick.classifier import ROCAUC

# 初始化分类模型和可视化
logistic = LogisticRegression()
visualizer = ROCAUC(logistic)

visualizer.fit(X_train, y_train)  # visualizer对象其实就是estimater类的继承,可以进行fit训练
visualizer.score(X_test, y_test)  # 在测试集上得分
g = visualizer.poof()             # 获得ROCAUC的分析图

如上述代码,在logistic回归模型训练完毕就立即输出分析图

来自:http://www.scikit-yb.org/en/latest/api/classifier/rocauc.html

同样,PCA分析也一样,可视化和训练代码是耦合的:

from yellowbrick.features.pca import PCADecomposition

visualizer = PCADecomposition(scale=True, center=False, color=y)
visualizer.fit_transform(X,y)
visualizer.poof()

上述代码直接实现了两维的PCA可视化:

 

参考文献:

  1. http://www.scikit-yb.org/en/latest/
  2. https://github.com/altair-viz/altair

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

发表评论

电子邮件地址不会被公开。 必填项已用*标注