《商务智能数据化运营管理》课程

本课程面向数据科学与大数据应用专业建设,定位一线运维人员岗位需求实现人才培养规划。基于商务智能数据可视化分析科研教学实践环境,通过直观的可视化操作界面,先进的商务智能数据可视化分析平台,并穿插海量真实行业数据分析案例,实现业务逻辑与商务思维应用在大数据分析领域的结合,精准匹配行业需求并提升职业竞争能力。不但对于计算机专业学生,即便是经管学院,数理学院,乃至文史类专业学生都能利用商务智能数据可视化分析平台,实现对数据的精确分析。

The Car Connection 汽车数据集

关于汽车的项目很多,比如拍照识车、汽车比价等等,尽管这些项目本身难度不大,但是往往受制于数据集的质量,模型的效果不能很好的发挥。Nicolas Gervais 近日发布了一个关于汽车的数据集,数据相当全质量也相当高,为面向汽车工程类的大数据分析机器学习自动驾驶等方向的科研实验室项目,提供有效的支撑帮助。数据集的来源是 The Car Connection 网站,该网站是全球最大的汽车评测网站之一,致力于让汽车研究更加容易。

The Car Connection
The Car Connection

数据集包括 297,000 张图片,但是其中许多是汽车的内部图像,关于汽车的外观大概有 60,000 张照片。所有的文件都对汽车的 15 个参数进行了标注:’Make’, ‘Model’, ‘Year’, ‘MSRP’, ‘Front Wheel Size (in)’, ‘SAE Net Horsepower @ RPM’, ‘Displacement’, ‘Engine Type’, ‘Width, Max w/o mirrors (in)’, ‘Height, Overall (in)’, ‘Length, Overall (in)’, ‘Gas Mileage’, ‘Drivetrain’, ‘Passenger Capacity’, ‘Passenger Doors’, ‘Body Style’

GitHub地址项目 GitHub 地址

Python 知识卡片完整中文版

此前,跨象乘云™ 发布了一系列 Python 数据科学核心库的多份知识卡片,包括 ——

此前的知识卡片主要是英文原版,再次跨象乘云™ 发布《Python 知识卡片完整中文版》,覆盖:Bokeh,Jupyter Notebook,Keras,Matplotlib 绘图,Numpy 基础,Pandas 基础,Pandas 进阶,Python 基础,Scikit-Learn,SciPy,Seaborn,Spark RDD 基础,Spark SQL 基础,导入数据等核心技术领域。

GitHub 超 2.7 万星,最全 Python 入门算法

Github 上超过 2.7 万星标;最全算法及 Python 实现

该项目的算法包括排序:

搜索等经典算法,描述较为详细,对算法原理本身、应用场景以及实现过程的可视化等。

我们讨论机器学习的时候,其实很多时候都是在讨论算法。今天就向大家推荐一个好资源,用 Python 实现所有算法。该项目在 Github 上已经获得了超过 2.7 万星标,可以说非常受欢迎了。

该项目主要包括两方面内容:

  • 算法的基本原理讲解,
  • 以及 Python 代码实现,并给出了算法实现过程的动图,非常直观易懂。

项目地址:

GitHub地址项目 GitHub 地址

1. 冒泡算法

冒泡算法
冒泡算法

代码实现:

https://www.toptal.com/developers/sorting-algorithms/bubble-sort

2. 桶排序算法

桶排序算法
桶排序算法

桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。

3. 鸡尾酒排序算法

鸡尾酒排序算法
鸡尾酒排序算法

鸡尾酒排序,也叫双向冒泡排序(Bidirectional Bubble Sort)等。这是冒泡排序的一种变体。不同之处在于,冒泡排序是从低到高比较序列里的每个元素,而鸡尾酒排序从两个方向(低到高、高到低)来回排序,效率更高。

代码实现:

https://en.wikipedia.org/wiki/Cocktail_shaker_sort

4. 插入排序

插入排序
插入排序

插入排序(英语:Insertion Sort )是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用 in-place 排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

代码实现:

https://www.toptal.com/developers/sorting-algorithms/insertion-sort

5. 归并排序

归并排序
归并排序

归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。

代码实现:

https://www.toptal.com/developers/sorting-algorithms/merge-sort

6. 快速排序

快速排序
快速排序

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出,用作按顺序放置数组元素的系统方法。

代码实现:

https://www.toptal.com/developers/sorting-algorithms/quick-sort

7. 堆排序

堆排序(英语:Heapsort )是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。

代码实现:

https://www.toptal.com/developers/sorting-algorithms/heap-sort

8. 基数排序

基数排序(英语:Radix sort )是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机( Tabulation Machine )上的贡献。

9. 选择排序

选择排序
选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

代码实现:

https://www.toptal.com/developers/sorting-algorithms/selection-sort

10. 希尔排序

希尔排序
希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:

插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率

但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

代码实现:

https://www.toptal.com/developers/sorting-algorithms/shell-sort

11. 拓扑排序

在计算机科学领域,有向图的拓扑排序是其顶点的线性排序,使得对于从顶点 u 到顶点 v 的每个有向边uv ,u 在排序中都在 v 之前。例如,图形的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个任务之前执行的约束; 在这个应用中,拓扑排序只是一个有效的任务顺序。 如果且仅当图形没有定向循环,即如果它是有向无环图(DAG),则拓扑排序是可能的。任何 DAG 具有至少一个拓扑排序,并且已知这些算法用于在线性时间内构建任何 DAG 的拓扑排序。

搜索算法

12. 线性搜索

线性搜索
线性搜索

线性搜索或顺序搜索是一种寻找某一特定值的搜索算法,指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。

13. 二分搜索算法

二分搜索算法
二分搜索算法

二分搜索(英语:binary search ),也称折半搜索(英语:half-interval search ),对数搜索(英语:logarithmic search ),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

14. 插值搜索算法

插值查找( Interpolation Search )是根据要查找的关键字 key 与顺序表中最大、最小记录的关键字比较后的查找方法,它假设输入数组是线性增加的(这个假设的精确度会影响算法的效率,但不会影响算法的正确性)。

15. 跳跃搜索算法

跳跃搜索算法( Jump Search )跟二分查找算法类似,它也是针对有序序列的查找,只是它是通过查找比较少的元素找到目标。当然它需要通过固定的跳跃间隔,这样它相比二分查找效率提高了很多。

16. 快速选择

快速选择
快速选择

快速选择(英语:Quickselect )是一种从无序列表找到第k小元素的选择算法。它从原理上来说与快速排序有关。与快速排序一样都由托尼·霍尔提出的,因而也被称为霍尔选择算法。它在实际应用是一种高效的算法,具有很好的平均时间复杂度,然而最坏时间复杂度则不理想。快速选择及其变种是实际应用中最常使用的高效选择算法。与快速排序一样,快速选择一般是以原地算法的方式实现,除了选出第k小的元素,数据也得到了部分地排序。

17. 禁忌搜索

禁忌搜索( Tabu Search,TS,又称禁忌搜寻法)是一种现代启发式算法,由美国科罗拉多大学教授 Fred Glover 在 1986 年左右提出的,是一个用来跳脱局部最优解的搜索方法。其先创立一个初始化的方案;基于此,算法“移动”到一相邻的方案。经过许多连续的移动过程,提高解的质量。

加密算法

18. 凯撒密码

凯撒密码(英语:Caesar cipher ),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D ,B 变成 E ,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

19. 维吉尼亚密码

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。维吉尼亚密码曾多次被发明。该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso )于 1553 年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso )中。然而,后来在 19 世纪时被误传为是法国外交官布莱斯·德·维吉尼亚(Blaise De Vigenère )所创造,因此现在被称为“维吉尼亚密码”。

20. 置换密码

又名取代加密法,是密码学中按规律将文字加密的一种方式。置换密码中可以用不同字母数为一单元,例如每一个或两个字母为一单元,然后再作加密。密文接收者解密时需用原加密方式解码才可取得原文本。由于拼音文字中字的组成为有限的字母,以英语为例只有 26 个字母,组成可能的单元数较少,因此使用置换密码相对较为容易,而且亦可使用简单机械进行加密;相反,非拼音文字如中文则因单元数非常大难以使用一般加密方式,必需建立密码本,然后逐字替换。更何况某些非拼音文字中字字皆由不同大小的字根来组字,较难转换,因此使用置换密码的示例比较少。

21. RSA 加密算法

RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德·李维斯特( Ron Rivest )、阿迪·萨莫尔( Adi Shamir )和伦纳德·阿德曼( Leonard Adleman )一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。对极大整数做因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的 RSA 钥匙才可能被强力方式解破。到当前为止,世界上还没有任何可靠的攻击 RSA 算法的方式。只要其钥匙的长度足够长,用 RSA 加密的信息实际上是不能被解破的。

22. ROT13 算法

ROT13(回转 13 位,rotate by 13 places ,有时中间加了个连字符称作 ROT-13 )是一种简易的替换式密码。它是一种在英文网络论坛用作隐藏八卦(spoiler)、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13 被描述成“杂志字谜上下颠倒解答的 Usenet 点对点体”。(Usenet equivalent of a magazine printing the answer to a quiz upside down.)ROT13  也是过去在古罗马开发的凯撒加密的一种变体。

23. 异或密码

异或密码是密码学中一种简单的加密算法,异或运算符常作为更为复杂的加密算法的组成部分。对于其本身来说,如果使用不断重复的密钥,利用频率分析就可以破解这种简单的异或密码。如果消息的内容被猜出或知道,密钥就会泄露。异或密码值得使用的原因主要是其易于实现,而且计算成本小。简单重复异或加密有时用于不需要特别安全的情况下来隐藏信息。

数据科学、神经网络、机器学习完全图解

这是一份非常详实的备忘单,涉及具体内容包括:

  1. 神经网络基础知识
  2. 神经网络图谱
  3. 机器学习基础知识
  4. 著名 Python 库 Scikit-Learn
  5. Scikit-Learn 算法
  6. 机器学习算法选择指南
  7. TensorFlow
  8. Python 基础
  9. PySpark 基础
  10. Numpy 基础
  11. Bokeh
  12. Keras
  13. Pandas
  14. 使用 Pandas 进行Data Wrangling
  15. 使用 dplyr 和 tidyr 进行 Data Wrangling
  16. SciPi
  17. MatPlotLib
  18. 使用 ggplot 进行数据可视化
  19. Big-O
神经网络 Cheat Sheet
神经网络 Cheat Sheet

第一部分:神经网络

神经网络基础知识
神经网络基础知识

神经网络基础知识

人工神经网络(ANN),俗称神经网络,是一种基于生物神经网络结构和功能的计算模型。 它就像一个人工神经系统,用于接收,处理和传输计算机科学方面的信息。

神经网络
神经网络

基本上,神经网络中有 3 个不同的层:

  • 输入层(所有输入都通过该层输入模型)
  • 隐藏层(可以有多个隐藏层用于处理从输入层接收的输入)
  • 输出层(处理后的数据在输出层可用)

神经网络图谱

神经网络图谱
神经网络图谱

图形数据可以与很多学习任务一起使用,在元素之间包含很多丰富的关联数据。例如,物理系统建模、预测蛋白质界面,以及疾病分类,都需要模型从图形输入中学习。图形推理模型还可用于学习非结构性数据,如文本和图像,以及对提取结构的推理

第二部分:机器学习

机器学习 Cheat Sheet
机器学习

用 Emoji 解释机器学习

用 Emoji 解释机器学习
用 Emoji 解释机器学习

Scikit-Learn 基础

Scikit-learn 是由 Python 第三方提供的非常强大的机器学习库,它包含了从数据预处理到训练模型的各个方面,回归和聚类算法,包括支持向量机,是一种简单有效的数据挖掘和数据分析工具。在实战使用scikit-learn 中可以极大的节省代码时间和代码量。它基于 NumPy,SciPy 和 matplotlib 之上,采用 BSD许可证。

Scikit-Learn 基础
Scikit-Learn 基础

Scikit-Learn 算法

这张流程图非常清晰直观的给出了 Scikit-Learn 算法的使用指南。

Scikit-Learn 算法
Scikit-Learn 算法

针对 Azure Machine Learning Studios 的 Scikit-Learn 算法

针对 Azure Machine Learning Studios 的 Scikit-Learn 算法
针对 Azure Machine Learning Studios 的 Scikit-Learn 算法

第三部分:Python 数据科学

Python
Python

TensorFlow

 

 

 

TensorFlow
Python 基础

 

Python 基础
Python 基础

PySpark RDD 基础

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,通过 Scala 语言实现,拥有 Hadoop MapReduce 所具有的优点,不同的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。PySpark 是 Spark  为 Python 开发者提供的  API。

NumPy基础

NumPy 是 Python 语言的一个扩展程序库。支持高端大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,前身 Numeric,主要用于数组计算。它实现了在 Python 中使用向量和数学矩阵、以及许多用 C 语言实现的底层函数,并且速度得到了极大提升。

NumPy基础
NumPy基础

Bokeh

Bokeh 是一个交互式可视化库,面向现代 Web 浏览器。目标是提供优雅、简洁的多功能图形构造,并通过非常大或流数据集的高性能交互来扩展此功能。Bokeh 可以实现快速轻松地创建交互式图表、仪表板和数据应用程序。

Bokeh
Bokeh

Keras

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK , 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。

Keras
Keras

Pandas

pandas 是一个为 Python 编程语言编写的软件库,用于数据操作和分析,基于 NumPy,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas 提供了大量快速便捷地处理数据的函数和方法。

Pandas
Pandas

使用 Pandas 进行 Data Wrangling

使用 Pandas 进行 Data Wrangling

使用Pandas进行Data Wrangling
使用 Pandas进行 Data Wrangling

使用 ddyr 和 tidyr 进行 Data  Wrangling

为什么使用 tidyr 和 dplyr 呢?因为虽然 R 中存在许多基本数据处理功能,但都有点复杂并且缺乏一致的编码,导致可读性很差的嵌套功能以及臃肿的代码。使用 ddyr 和 tidyr 可以获得:

  • 更高效的代码
  • 更容易记住的语法
  • 更好的语法可读性
使用ddyr和tidyr进行Data Wrangling
使用 ddyr和 tidyr进行 Data Wrangling

Scipy 线性代数

SciPy 是一个开源的 Python 算法库和数学工具包。 SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 与其功能相类似的软件还有 MATLAB、GNU Octave 和 Scilab。

Scipy线性代数
Scipy 线性代数

Matplotlib

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。 它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

Matplotlib
Matplotlib

使用 ggplot2 进行数据可视化

使用ggplot2进行数据可视化
使用 ggplot2 进行数据可视化

Big-O

大 O 符号(英语:Big O notation),又稱為漸進符號,是用于描述函数渐近行为的数学符号。 更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。 … 阶)的大 O,最初是一个大写希腊字母 “Ο” (omicron),现今用的是大写拉丁字母 “O”。

Big-O
Big-O

PDF下载(或点击阅读原文链接):
https://cheatsheets.becominghumanai.com/

参考链接:
https://becominghuman.ai/cheat-sheets-for-ai-neural-networks-machine-learning-deep-learning-big-data-science-pdf-f22dc900d2d7

 

 

 

 

 

 

埃森哲:大数据分析方法论

当前,越来越多的应用涉及到大数据,而这些大数据的属性,包括数量、速度、多样性等等都呈现出不断增长的复杂性,因此,大数据分析方法在这一领域也就显得尤为重要,可以说是决定最终信息是否有价值的决定性因素。全球最大的管理咨询公司「埃森哲」的此前发布了一份 PPT,讲述大数据分析方法,看看他们具体是如何进行的。

由于此报告发布已经有一段时间,里面所提及的各种数据分析工具未必是最好的选择。诸如:SAS / SPSS / MATLAB 均为严谨高效的数据统计商业应用型工具,好比数据库中的 ORACLE,然而, R 与 Python 显然更匹配基础科学人才培养目标。同时,数据科学与大数据在各细分领域并发性爆发,充分展现了开源生态圈协同开发模式的强大优势与趋势。同时标志着『半成品化』应用工具时代的到来。最后,R 与 Python 逐步成为贯穿数据科学与大数据,机器学习,深度学习,新一代人工智能,乃至区块链技术一脉相承的语言工具,纯数据以外,更多的对象被纳入统计范围内。

尽管如此,从全面解读数据分析方法论的角度而言,此份报告仍然不失为一份有价值的参考材料。

《埃森哲:大数据分析方法论》。下载

PDF 数据表格提取神器

Excalibur,从古希腊语翻译过来就是『神剑』,它现在也是一种用于从 PDF 中提取表格数据的 Web 界面,使用 Python 3 编写,由 Camelot(Python 库) 提供支持,可以让任何人轻松地从 PDF 文件中提取表格数据。需要注意的是,Excalibur 仅适用于基于文本的 PDF 文件,扫描文件不在此列。

可移植文件格式

PDF 文件定义了将字符放置在相对于页面左下角的 x,y 坐标的指令。通过将某些字符放在比其他字符更近的地方来模拟单词。空格是通过将单词放在相对较远的地方来模拟的。最后,通过放置在电子表格中显示的字词来模拟表格,格式没有表格结构的内部表示。

自动检测 PDF 中的表格数据

可移植文件格式不是为表格数据设计的。可悲的是,许多开放数据共享时都是 PDF 文件,但对其中的表格进行分析却是一件非常痛苦的事。简单的复制粘贴行不通,Excalibur 通过自动检测 PDF  中的表格并让你通过 Web 界面将它们保存为 CSV 和 Excel 文件,这使 PDF 表格提取变得非常简单。

可动态调整表格提取规则

虽然有很多广泛用于 PDF 表格提取的开源和闭源工具,但他们输出的表格良莠不齐。Excalibur 由 Camelot 提供支持,为用户提供附加设置以调整表格提取并获得最佳效果。相较而言,它的性能要好于其他开源工具和库。

数据完全可控且安全

你可以完全控制数据,因为所有文件存储和处理都在你自己的本地或远程计算机上进行。Excalibur 还可以配置 MySQL 和 Celery 系统,以并行和分布式方式执行表格提取任务。默认情况下,任务按顺序执行。

GitHub地址项目 GitHub 地址

Spark 2.4 重磅发布

Spark 2.4 重磅发布:优化深度学习框架集成,提供更灵活的流式接收器。Apache Spark 2.4.0 是 2.x 系列中的第五个版本。此版本增加了屏障执行模式,以便更好地与深度学习框架集成;引入 30 多个更高阶的内置函数,能够更轻松地处理复杂数据类型;优化 K8s 集成,同时提供 Scala 2.12 实验性支持。其他主要更新还包括内置 Avro 数据源、图像数据源,更加灵活的流式接收器,取消传输过程中 2GB 块大小的限制,Pandas UDF 改进。此外,此版本继续关注可用性、稳定性,并解决了大约 1,100 个 tickets。

23 个 Pandas 核心操作

Pandas 是基于 NumPy 构建的库,在数据处理方面可以把它理解为 NumPy 加强版,同时 Pandas 也是一项开源项目。它基于 Cython,因此读取与处理数据非常快,并且还能轻松处理浮点数据中的缺失数据(表示为 NaN)以及非浮点数据。在本文中,基本数据集操作主要介绍了 CSV 与 Excel 的读写方法,基本数据处理主要介绍了缺失值及特征抽取,最后的 DataFrame 操作则主要介绍了函数和排序等方法。

读取 CSV 格式的数据集

pd.DataFrame.from_csv(“csv_file”)

或者

pd.read_csv(“csv_file”)

读取 Excel 数据集

pd.read_excel("excel_file")

将 DataFrame 直接写入 CSV 文件

如下采用逗号作为分隔符,且不带索引:

df.to_csv("data.csv", sep=",", index=False)

基本的数据集特征信息

df.info()

基本的数据集统计信息

print(df.describe())

将 DataFrame 输出到一张表

print(tabulate(print_table, headers=headers))

当「print_table」是一个列表,其中列表元素还是新的列表,「headers」为表头字符串组成的列表。

列出所有列的名字

df.columns

删除缺失数据

df.dropna(axis=0, how='any')

返回一个 DataFrame,其中删除了包含任何 NaN 值的给定轴,选择 how=「all」会删除所有元素都是 NaN 的给定轴。

替换缺失数据

df.replace(to_replace=None, value=None)

使用 value 值代替 DataFrame 中的 to_replace 值,其中 value 和 to_replace 都需要我们赋予不同的值。

检查空值 NaN

pd.isnull(object)

检查缺失值,即数值数组中的 NaN 和目标数组中的 None/NaN。

删除特征

df.drop('feature_variable_name', axis=1)

axis 选择 0 表示行,选择表示列。

将目标类型转换为浮点型

pd.to_numeric(df["feature_name"], errors='coerce')

将目标类型转化为数值从而进一步执行计算,在这个案例中为字符串。

将 DataFrame 转换为 NumPy 数组

df.as_matrix()

取 DataFrame 的前面「n」行

df.head(n)

通过特征名取数据

df.loc[feature_name]

对 DataFrame 使用函数

该函数将令 DataFrame 中「height」行的所有值乘上 2:

df["height"].apply(*lambda* height: 2 * height)

或者:

def multiply(x):
return x * 2
df["height"].apply(multiply)

重命名行

下面代码会重命名 DataFrame 的第三行为「size」:

df.rename(columns = {df.columns[2]:'size'}, inplace=True)

取某一行的唯一实体

下面代码将取「name」行的唯一实体:

df["name"].unique()

访问子 DataFrame

以下代码将从 DataFrame 中抽取选定了的行「name」和「size」:

new_df = df[["name", "size"]]

总结数据信息

# Sum of values in a data frame
df.sum()
# Lowest value of a data frame
df.min()
# Highest value
df.max()
# Index of the lowest value
df.idxmin()
# Index of the highest value
df.idxmax()
# Statistical summary of the data frame, with quartiles, median, etc.
df.describe()
# Average values
df.mean()
# Median values
df.median()
# Correlation between columns
df.corr()
# To get these values for only one column, just select it like this#
df["size"].median()

给数据排序

df.sort_values(ascending = False)

布尔型索引

以下代码将过滤名为「size」的行,并仅显示值等于 5 的行:

df[df["size"] == 5]

选定特定的值

以下代码将选定「size」列、第一行的值:

df.loc([0], ['size'])

企业数据科学成熟度模型评估之4

最近两年最火的话题无非就是大数据、人工智能,但都离不开机器学习;机器学习通俗点说就是将我们人的处理事情的思想和逻辑赋能给计算机。也就是说在我们的精确指导下,计算机能够替代我们去完成这些常规的工作。要想好好发挥机器学习的作用,当然离不开各种语言和框架。但是更重要的是企业需要一开始就能清楚了解自身的企业数据科学成熟度,从而制定相应的数据科学战略。

日前,《Oracle 大数据和分析》发布了 12 期关于企业数据科学『成熟度模型』的研讨,跨象乘云™ 分四期进行转载 —— 文末提供企业数据科学成熟度模型评估表下载;讨论商业领袖和数据科学从业者如何评估他们的企业所在的每个维度和级别,并帮助他们确定未来的目标,考虑每个维度对企业战略,业务和整体的重要性。 这种企业的内省有助于识别,并帮助确定数据科学目标的架构,工具和实践。

数据科学如何轻松地部署产品,投入生产,以满足及时的业务目标?

数据科学期望惊人的见解和预测将改变业务并使企业达到新的绩效水平。然而,数据科学项目往往无法『升空』,导致企业的重大机会成本。数据科学家可以产生具有高精度的预测模型,然而如果这些模型没有有效地投入生产,即部署,则不能实现期望的收益。

在本次讨论中似乎相关的『部署』的更一般定义是 ——

将资源纳入有效行为的行动。

这种情况下的资源是指数据科学工作的产品,如机器学习模型,可视化,统计分析等。有效的行动是对提供商业利益的方式提供这些资源:交互式仪表板中提供的及时见解,影响哪些对客户,员工,资产等采取的行动的预测结果。

对于一般的数据科学,特别是机器学习,大多数部署机制在各个项目中是相同的。然而企业经常发现个别项目重新发明部署基础架构,需要恢复逻辑以及缺少严格的测试。利用提供部署管道的工具可以大大降低部署数据科学项目的开销和风险。

和以前一样,我们将讨论『部署』维度的 5 个成熟度等级中的每一个:

第1级:数据科学结果的范围有限,因此提供有限的商业价值。

在 1 级企业中,数据科学项目的结果通常采用幻灯片演示或文本报告中记录的见解形式呈现。数据分析,可视化甚至预测模型可以为人类决策提供指导,但这些结果必须在每个项目的基础上手动传达。

第 2 级:生产模型部署被视为有价值,但通常涉及为每个项目重新构建基础架构。

在2级企业中,可以在一线应用程序和系统中利用机器学习模型的认识得以自动实现。一些见解可以明确地编码到应用程序或仪表板逻辑中,但是,模型创建和部署之间的时间可以显着影响模型的准确性。当用于模型构建的数据模式与用于评分的当前数据不同时,会发生部署的延迟。此外,为了更容易地与现有应用程序或仪表板集成,手动编码(例如,用 C,Java 或甚至 SQL 中进行评分的预测模型系数)需要开发人员的大量时间,并且可能导致编码错误。只有严格的代码审查和测试才能揭示其中的错误。因此,企业会产生数据科学项目的成本,但却没有充分实现潜在的项目效益。

第 3 级:企业开始提供并利用简化的自动化模型部署工具,包括开源软件和环境。

随着更多的数据科学项目的开展,3 级企业意识到一次性部署方法浪费了宝贵的开发资源,导致部署延迟,降低了模型的有效性,并增加了项目风险。在当今支持互联网的世界中,数据模式(例如客户偏好)可以在一夜之间发生变化,要求企业更灵活地使用最新数据构建,测试和部署模型。第3级的企业开始利用提供所需基础架构的工具来支持简化和自动化的模型部署。

第 4 级:企业系统的异构性增加需要跨平台模型部署,并且越来越需要将模型合并到流数据应用程序中。

Level 4 企业结合了数据库,Hadoop,Spark 和其他用于管理数据和计算的平台。企业越来越需要在一个环境中生成的模型和脚本部署到另一个环境中。这增加了对能够导出模型以便在评分引擎库中使用的工具的需求,该评分引擎库可以轻松集成到应用程序中。4 级企业在开始使用涉及快速数据的数据科学结果时,寻求能够在实时或流分析情况下促进脚本和模型部署的工具。

第 5 级:企业已经实现了跨异构环境即时数据科学工作产品(重新)部署的好处。

5 级企业采用了一套标准工具来支持跨所有必要环境部署数据科学工作产品。在一个环境中创建的机器学习模型和脚本可以立即以最小的延迟进行部署和刷新(重新部署)。

数据科学成熟度模型(DSMM)系列的这一部分包含我们之前提到的所有维度和等级的汇总表。将数据科学作为核心竞争力的企业可能希望评估他们当前处于每个维度的哪个水平。在某些情况下,企业可能跨越多个级别。作为下一步,企业可以使用这种成熟度模型来确定他们每个维度中的所渴望实现的级别,当然我们也期待技术的创新能设计出新的级别 6。

下载:企业数据科学成熟度模型评估表