作者:沂水寒城,CSDN博客专家,个人研究方向:机器学习、深度学习、NLP、CV

Blog: http://yishuihancheng.blog.csdn.net

在机器学习、数据挖掘领域里面,接触到数据处理分析的人来说,数据探索是非常重要的一部分工作,而数据可视化会成为数据分析工程师完成数据探索工作的有力工具。本文主要是介绍一款我日常使用较多的可视化利器Yellowbrick,这是一款基于sklearn+matplotlib模块构建的更加高级的可视化工具,能够更加方便地完成很多数据探索、分词与展示工作。

学习使用一个模块最好的方式就是学习它提供的API,下面先给出来几个比较好的参考地址:

1)官方文档地址(英文)

https://www.scikit-yb.org/en/latest/

2)官方文档地址(中文)

http://www.scikit-yb.org/zh/latest/

Yellowbrick是由一套被称为"Visualizers"组成的可视化诊断工具组成的集合,其由Scikit-Learn API延伸而来,对模型选择过程其指导作用。总之,Yellowbrick结合了Scikit-Learn和Matplotlib并且最好得传承了Scikit-Learn文档,对你的模型进行可视化!

想要了解Yellowbrick就必须先了解Visualizers,它是estimators从数据中学习得的对象,其主要任务是产生可对模型选择过程有更深入了解的视图。从Scikit-Learn来看,当可视化数据空间或者封装一个模型estimator时,其和转换器(transformers)相似,就像"ModelCV" (比如RidgeCV,LassoCV)的工作原理一样。Yellowbrick的主要目标是创建一个和Scikit-Learn类似的有意义的API。

Yellowbrick中最受欢迎的visualizers包括:

如此强大的可视化工具,安装方式却很简单,使用下面的命令:

pip install yellowbrick

如果需要升级最新版本的则可以使用下面的命令:

pip install –u yellowbrick

安装完成后,我们就可以进行使用了。该模块提供了几个常用的可用于实验使用的数据集,如下所示:

进入到对应数据集文件夹下面,都会有三个文件,对于bikeshare如下:

其中:bikeshare.csv为数据集文件,如:

Meta.json为字段元信息文件,如:

README.md为介绍说明文件,如:

基于共享单车数据集,简单的数据分析工作实现如下:

def testFunc5(savepath='Results/bikeshare_Rank2D.png'):'''共享单车数据集预测'''data=pd.read_csv('bikeshare/bikeshare.csv')X=data[["season", "month", "hour", "holiday", "weekday", "workingday","weather", "temp", "feelslike", "humidity", "windspeed"]]y=data["riders"]visualizer=Rank2D(algorithm="pearson")visualizer.fit_transform(X)visualizer.poof(outpath=savepath)def testFunc6(savepath='Results/bikeshare_temperate_feelslike_relation.png'):'''进一步考察相关性'''data=pd.read_csv('bikeshare/bikeshare.csv')X=data[["season", "month", "hour", "holiday", "weekday", "workingday","weather", "temp", "feelslike", "humidity", "windspeed"]]y=data["riders"]visualizer=JointPlotVisualizer(feature='temp', target='feelslike')visualizer.fit(X['temp'], X['feelslike'])visualizer.poof(outpath=savepath)def testFunc7(savepath='Results/bikeshare_LinearRegression_ResidualsPlot.png'):'''基于共享单车数据使用线性回归模型预测'''data = pd.read_csv('bikeshare/bikeshare.csv')X=data[["season", "month", "hour", "holiday", "weekday", "workingday","weather", "temp", "feelslike", "humidity", "windspeed"]]y=data["riders"]X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)visualizer=ResidualsPlot(LinearRegression())visualizer.fit(X_train, y_train)visualizer.score(X_test, y_test)visualizer.poof(outpath=savepath)def testFunc8(savepath='Results/bikeshare_RidgeCV_AlphaSelection.png'):'''基于共享单车数据使用AlphaSelection'''data=pd.read_csv('bikeshare/bikeshare.csv')X=data[["season", "month", "hour", "holiday", "weekday", "workingday","weather", "temp", "feelslike", "humidity", "windspeed"]]y=data["riders"]alphas=np.logspace(-10, 1, 200)visualizer=AlphaSelection(RidgeCV(alphas=alphas))visualizer.fit(X, y)visualizer.poof(outpath=savepath)def testFunc9(savepath='Results/bikeshare_Ridge_PredictionError.png'):'''基于共享单车数据绘制预测错误图'''data=pd.read_csv('bikeshare/bikeshare.csv')X=data[["season", "month", "hour", "holiday", "weekday", "workingday","weather", "temp", "feelslike", "humidity", "windspeed"]]y=data["riders"]X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)visualizer=PredictionError(Ridge(alpha=3.181))visualizer.fit(X_train, y_train)visualizer.score(X_test, y_test)visualizer.poof(outpath=savepath)

bikeshare_Rank2D.png特征相关性计算

bikeshare_LinearRegression_ResidualsPlot.png使用线性回归模型预测

bikeshare_RidgeCV_AlphaSelection.png使用AlphaSelection特征选择

bikeshare_Ridge_PredictionError.png绘制预测错误图

除了可以直接对数据进行分析展示之外,Yellowbrick同样可以对文本数据进行处理分析,下面我们基于爱好数据集进行简单的使用说明,具体代码实现如下所示:

def hobbiesFreqDistVisualizer():'''文本可视化Token 频率分布:绘制语料库中令牌的频率t-SNE 语料库可视化:绘制更接近发现聚类的类似文档'''corpus=load_corpus("data/hobbies")vectorizer = CountVectorizer()docs       = vectorizer.fit_transform(corpus.data)features   = vectorizer.get_feature_names()visualizer = FreqDistVisualizer(features=features)visualizer.fit(docs)visualizer.poof(outpath='text_hobbies_FreqDistVisualizer.png')#去停用词vectorizer = CountVectorizer(stop_words='english')docs       = vectorizer.fit_transform(corpus.data)features   = vectorizer.get_feature_names()visualizer = FreqDistVisualizer(features=features)visualizer.fit(docs)visualizer.poof(outpath='text_hobbies_FreqDistVisualizer_stop_words.png')def hobbiesFreqDistVisualizer2():'''探索 烹饪和游戏 两种爱好的频度分布(报错:没有label,应该为corpus.target)'''corpus=load_corpus("data/hobbies")#烹饪爱好频度分布统计图hobbies=defaultdict(list)for text,label in zip(corpus.data,corpus.target):hobbies[label].append(text)vectorizer = CountVectorizer(stop_words='english')docs       = vectorizer.fit_transform(text for text in hobbies['cooking'])features   = vectorizer.get_feature_names()visualizer = FreqDistVisualizer(features=features)visualizer.fit(docs)visualizer.poof(outpath='text_hobbies_cooking_FreqDistVisualizer.png')#游戏爱好频度分布统计图hobbies=defaultdict(list)for text,label in zip(corpus.data, corpus.target):hobbies[label].append(text)vectorizer = CountVectorizer(stop_words='english')docs       = vectorizer.fit_transform(text for text in hobbies['gaming'])features   = vectorizer.get_feature_names()visualizer = FreqDistVisualizer(features=features)visualizer.fit(docs)visualizer.poof(outpath='text_hobbies_gaming_FreqDistVisualizer.png')def hobbiesTSNEVisualizer():'''t-SNE语料库可视化T分布随机邻域嵌入,t-SNE。Scikit-Learn将此分解方法实现为sklearn.manifold.TSNE转换器。通过使用来自原始维度和分解维度的不同分布将高维文档向量分解为二维。 通过分解为2维或3维,可以使用散点图来显示文档。'''corpus=load_corpus("data/hobbies")tfidf  = TfidfVectorizer()docs   = tfidf.fit_transform(corpus.data)labels = corpus.targettsne = TSNEVisualizer()tsne.fit(docs, labels)tsne.poof(outpath='text_hobbies_TSNEVisualizer.png')#Don't color points with their classestsne = TSNEVisualizer(labels=["documents"])tsne.fit(docs)tsne.poof(outpath='text_hobbies_TSNEVisualizer_nocolor.png')def hobbiesClusterTSNEVisualizer():'''聚类应用'''corpus=load_corpus("data/hobbies")tfidf  = TfidfVectorizer()docs   = tfidf.fit_transform(corpus.data)clusters=KMeans(n_clusters=5)clusters.fit(docs)tsne=TSNEVisualizer()tsne.fit(docs,["c{}".format(c) for c in clusters.labels_])tsne.poof(outpath='text_hobbies_cluster_TSNEVisualizer.png')

text_hobbies_FreqDistVisualizer.png

text_hobbies_FreqDistVisualizer_stop_words.png

text_hobbies_cooking_FreqDistVisualizer.png

text_hobbies_gaming_FreqDistVisualizer.png

text_hobbies_TSNEVisualizer.png

text_hobbies_TSNEVisualizer_nocolor.png

text_hobbies_cluster_TSNEVisualizer.png

这里简单介绍一些TSNE,t-distributed Stochastic Neighbor Embedding(t-SNE)是目前来说效果最好的数据降维与可视化方法,但是它的缺点也很明显,比如:占内存大,运行时间长。但是,当我们想要对高维数据进行分类,又不清楚这个数据集有没有很好的可分性(即同类之间间隔小,异类之间间隔大),可以通过 t-SNE 投影到 2 维或者3维的空间中观察一下。如果在低维空间中具有可分性,则数据是可分的;如果在高维空间中不具有可分性,可能是数据不可分,也可能仅仅是因为不能投影到低维空间。

TSNE将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“Student t 分布”表示。虽然 Isomap,LLE 和 variants等数据降维和可视化方法,更适合展开单个连续的低维的manifold。但如果要准确的可视化样本间的相似度关系,t-SNE表现更好。因为t-SNE主要是关注数据的局部结构。

Yellowbrick对数据的可视化有更加高级的封装和实现,对于新手和有一定经验的分析人员来说都是非常友好的,这里强烈推荐入门这款神器,一篇文章的内容有限不足以讲清楚整个模块,感兴趣的话可以阅读我的系列文章。

很高兴在自己温习回顾知识的同时能写下点分享的东西出来,如果说您觉得我的内容还可以或者是对您有所启发、帮助,还希望得到您的鼓励支持!

- END -
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「perfect_iscas」,关注后回复「进群」或者扫描下方二维码即可进入无广告技术交流群。
扫描二维码进群↓

在看 

Python可视化神器Yellowbrick使用相关推荐

  1. python可视化神器_详解Python可视化神器Yellowbrick使用

    机器学习中非常重要的一环就是数据的可视化分析,从源数据的可视化到结果数据的可视化都离不开可视化工具的使用,sklearn+matplotlib的组合在日常的工作中已经满足了绝对大多数的需求,今天主要介 ...

  2. pyecharts开篇(python可视化神器)

    python可视化神器--pyecharts库导读: 根据与大佬的询问,故而开启<python pyecharts>这个系列 pyecharts是什么? pyecharts 是一个用于生成 ...

  3. >python可视化神器altair

    python可视化神器 一.些简单图形的绘制 (一).柱状图 1. 然后我们还可以设置高亮柱状图的某一根柱子,其他柱子设置为一样的颜色: 2. 翻转图片,同时添加图片标注,在图上加上数据 3.在图形上 ...

  4. python语言实现lassocv中的可视化显示_Python可视化神器Yellowbrick使用

    码农那点事儿 关注我们,一起学习进步 作者:Together_CZ 链接:https://blog.csdn.net/Together_CZ/article/details/86640784 在机器学 ...

  5. Python 可视化神器--Plotly

    文 | 潮汐 来源:Python 技术「ID: pythonall」 学习Python是做数分析的最基础的一步,数据分析离不开数据可视化.Python第三方库中我们最常用的可视化库是 pandas,m ...

  6. python可视化案例书籍推荐_这5款Python可视化神器,总有一款适合你!

    我们都知道视觉是人们很重要的一种感官,而Python中可视化,在数据相关的研发中也起到"一木支危楼"的作用.如果从直接查看离线存储在各类数据库中杂乱无章的数据,会让人瞬间感到崩溃且 ...

  7. 强烈推荐一款Python可视化神器!

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 翻译 | Lemon 来源 | Plotly 出品 | Python数据之道 (ID:PyDataRoad) Plotly Express 入 ...

  8. 这才是你寻寻觅觅想要的 Python 可视化神器!

    翻译 | Lemon 来源 | Plotly 译文出品 | Python数据之道 (ID:PyDataRoad) Plotly Express 入门之路 Plotly Express 是一个新的高级 ...

  9. Visdom:Python可视化神器

    Visdom:可视化神器 项目地址:visdom 文章目录 Visdom:可视化神器 visdom实质 visdom核心概念 env:环境 pane:窗格 创建Visdom环境 常用API plot. ...

最新文章

  1. RabbitMQ脑裂问题解决方案调查
  2. java 复制剪贴板_java_swing复制粘贴、剪贴板
  3. 华为S5700交换机开启telnet远程登陆配置(推荐)
  4. [原创]网银在线chinabank安全漏洞之“不完善的开发软件包”
  5. 重心法例题matlab,Excel重心法选址计算题的详细步骤
  6. 深入了解前端路由 hash 与 history 差异
  7. position:fixed;支持ie6,清楚ie6下抖动。
  8. Proxmox VE的初试小探
  9. 18个使用 jQuery 制作的创意网站欣赏
  10. Python的函数理解外传
  11. SOFA BOLT源码解析之设计要点-网络IO
  12. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
  13. mt管理器图片在哪个文件夹_微信apk用mt管理器 替换主界面背景图片是那个文件? 其他文件怎么替换 不要视频...
  14. oracle 有iif么,ORACLE IIF声明
  15. 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始
  16. 树莓派Linux开机使用root自动运行python的pyqt文件
  17. echarts地图城市坐标
  18. 网页左右两边加广告横幅
  19. CSS中position属性(relative,absolute,fixed)和display中的inline-block
  20. 信息学奥林匹克竞赛——你适合么?

热门文章

  1. 【POJ】1308 Is It A Tree?((并查集 + set)or (map))
  2. 【HDU】1005 Number Sequence (有点可爱)
  3. 云从完成超过18亿元新一轮融资,加快上市步伐
  4. 训练数据也外包?这家公司“承包”了不少注释训练数据,原来是这样做的……...
  5. 代替Mask R-CNN,BlendMask欲做实例预测任务的新基准?
  6. 论文解读 | 微信看一看实时Look-alike推荐算法
  7. 吃瓜腾讯平均月薪7.27万后,微信又出大招
  8. 继往开来!目标检测二十年技术综述
  9. 翻译们又要失业?Facebook最新无监督机器翻译成果,BLEU提升10个点!
  10. 面试官:为什么要尽量避免使用 IN 和 NOT IN 呢?