Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu.Wang 2018-12-09 12:57:53 +08:00
commit e50a3572b9
3 changed files with 175 additions and 183 deletions

View File

@ -1,27 +1,25 @@
9个不为人知晓的Python数据科学库
9 个鲜为人知的 Python 数据科学库
======
除了 pandas 、scikit-learn 和 matplotlib还要学习一些用 Python 进行数据科学的新技巧。
> 除了 pandas、scikit-learn 和 matplotlib还要学习一些用 Python 进行数据科学的新技巧。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/life-python.jpg?itok=F2PYP2wT)
Python 是一种令人惊叹的语言。事实上它是世界上增长最快的编程语言之一。它一次又一次地证明了它在各个行业的开发者和数据科学者中的作用。Python 及其库的整个生态系统使其成为全世界用户的恰当选择,无论是初学者还是高级用户。它成功和受欢迎的原因之一是它的一组强大的库,使它如此动态和快速。
Python 是一种令人惊叹的语言。事实上它是世界上增长最快的编程语言之一。它一次又一次地证明了它在各个行业的开发者和数据科学者中的作用。Python 及其库的整个生态系统使其成为全世界用户(初学者和高级用户)的恰当选择。它成功和受欢迎的原因之一是它的一组强大的库,使它如此动态和快速。
在本文中,我们将看到 Python 库中的一些数据科学工具,而不是那些常用的工具,如 **pandas,scikit-learn** ,和 **matplotlib** 。虽然像 **pandas,scikit-learn** 这样的库是机器学习中最常想到的,但是了解这个领域的其他 Python 产品库也是非常有帮助的。
在本文中,我们将看到 Python 库中的一些数据科学工具,而不是那些常用的工具,如 pandas、scikit-learn 和 matplotlib。虽然像 pandas、scikit-learn 这样的库是机器学习中最常想到的,但是了解这个领域的其他 Python 库也是非常有帮助的。
### Wget
提取数据,尤其是从网络中提取数据,是数据科学家的重要任务之一。[Wget][1] 是一个免费的工具,用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行检索。因为它是非交互式的,所以即使用户没有登录,它也可以在后台工作。所以下次你想下载一个网站或者网页上的所有图片,**wget** 会提供帮助。
提取数据,尤其是从网络中提取数据,是数据科学家的重要任务之一。[Wget][1] 是一个免费的工具,用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行访问。因为它是非交互式的所以即使用户没有登录它也可以在后台工作。所以下次你想下载一个网站或者网页上的所有图片wget 会提供帮助。
#### 安装
安装
```
$ pip install wget
```
#### 例子
例子
```
import wget
@ -36,16 +34,15 @@ filename
### 钟摆
对于在 Python 中处理时间感到沮丧的人来说, **[Pendulum][2]** 库是很有帮助的。这是一个 Python 包,可以简化 **datetime** 操作。它是 Python 原生类的一个替换。有关详细信息,请参阅[documentation][3]。
对于在 Python 中处理日期时间感到沮丧的人来说, [Pendulum][2] 库是很有帮助的。这是一个 Python 包,可以简化日期时间操作。它是 Python 原生类的一个替代品。有关详细信息,请参阅其[文档][3]。
#### 安装
安装:
```
$ pip install pendulum
```
#### 例子
例子
```
import pendulum
@ -60,38 +57,35 @@ print(dt_vancouver.diff(dt_toronto).in_hours())
### 不平衡学习
当每个类别中的样本数几乎相同(即平衡)时,大多数分类算法会工作得最好。但是现实生活中的案例中充满了不平衡的数据集,这可能会影响到机器学习算法的学习和后续预测。幸运的是, **[imbalanced-learn][4]** 库就是为了解决这个问题而创建的。它与[**scikit-learn**][5] 兼容,并且是 **[scikit-learn-contrib][6]** 项目的一部分。下次遇到不平衡的数据集时,可以尝试一下。
当每个类别中的样本数几乎相同(即平衡)时,大多数分类算法会工作得最好。但是现实生活中的案例中充满了不平衡的数据集,这可能会影响到机器学习算法的学习和后续预测。幸运的是,[imbalanced-learn][4] 库就是为了解决这个问题而创建的。它与 [scikit-learn][5] 兼容,并且是 [scikit-learn-contrib][6] 项目的一部分。下次遇到不平衡的数据集时,可以尝试一下。
#### 安装
安装
```
pip install -U imbalanced-learn
# or
conda install -c conda-forge imbalanced-learn
```
#### 例子
例子
有关用法和示例,请参阅 [documentation][7] 。
有关用法和示例,请参阅其[文档][7] 。
### FlashText
### 闪光灯文字
在自然语言处理NLP任务中清理文本数据通常需要替换句子中的关键词或从句子中提取关键词。通常这种操作可以用正则表达式来完成但是如果要搜索的术语数达到数千个它们可能会变得很麻烦。
在自然语言处理( NLP )任务中清理文本数据通常需要替换句子中的关键词或从句子中提取关键词。通常,这种操作可以用正则表达式来完成,但是如果要搜索的术语数达到数千个,它们可能会变得很麻烦
Python 的 [FlashText][8] 模块,基于 [FlashText 算法][9]为这种情况提供了一个合适的替代方案。FlashText 的最佳部分是运行时间与搜索项的数量无关。你可以在其 [文档][10] 中读到更多关于它的信息
Python的 **[FlashText][8]** 模块,基于 [FlashText algorithm][9]算法为这种情况提供了一个合适的替代方案。FlashText 的最佳部分是运行时间与搜索项的数量无关。你可以在 [documentation][10] 中读到更多关于它的信息。
#### 安装
安装:
```
$ pip install flashtext
```
#### 例子
例子
##### **提取关键词:**
提取关键词:
```
from flashtext import KeywordProcessor
@ -107,7 +101,7 @@ keywords_found
['New York', 'Bay Area']
```
**替代关键词:**
替代关键词:
```
keyword_processor.add_keyword('New Delhi', 'NCR region')
@ -118,28 +112,25 @@ new_sentence
'I love New York and NCR region.'
```
For more examples, refer to the [usage][11] section in the documentation.
有关更多示例,请参阅文档中的 [usage][11] 一节。
有关更多示例,请参阅文档中的 [用法][11] 一节。
### 模糊处理
这个名字听起来很奇怪,但是 **[FuzzyWuzzy][12]** 在字符串匹配方面是一个非常有用的库。它可以很容易地实现字符串比较、令牌比较等操作。对于匹配保存在不同数据库中的记录也很方便。
这个名字听起来很奇怪,但是 [FuzzyWuzzy][12] 在字符串匹配方面是一个非常有用的库。它可以很容易地实现字符串匹配率、令牌匹配率等操作。对于匹配保存在不同数据库中的记录也很方便。
#### 安装
安装
```
$ pip install fuzzywuzzy
```
#### 例子
例子
```
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
# 简单的匹配率
fuzz.ratio("this is a test", "this is a test!")
97
@ -148,28 +139,27 @@ fuzz.partial_ratio("this is a test", "this is a test!")
 100
```
更多的例子可以在 FuzzyWuzy 的 [GitHub repo.][12]得到。
更多的例子可以在 FuzzyWuzy 的 [GitHub 仓库][12]得到。
### PyFlux
时间序列分析是机器学习中最常遇到的问题之一。**[PyFlux][13]** 是Python中的开源库专门为处理时间序列问题而构建的。该库拥有一系列优秀的现代时间序列模型包括但不限于 **ARIMA****GARCH** ,、以及**VAR**模型。简而言之PyFlux 为时间序列建模提供了一种概率方法。这值得一试。
时间序列分析是机器学习中最常遇到的问题之一。[PyFlux][13] 是 Python 中的开源库,专门为处理时间序列问题而构建的。该库拥有一系列优秀的现代时间序列模型,包括但不限于 ARIMA、GARCH 以及 VAR 模型。简而言之PyFlux 为时间序列建模提供了一种概率方法。这值得一试。
#### 安装
安装
```
pip install pyflux
```
#### 例子
例子
有关用法和示例,请参阅 [documentation][14]。
有关用法和示例,请参阅其 [文档][14]。
### IPyvolume
交流结果是数据科学的一个重要方面,可视化结果提供了显著优势。 [IPyvolume][15] 是一个 Python 库,用于在 Jupyter 笔记本中可视化 3D 体积和形状(例如 3D 散点图),配置和工作量极小。然而,它目前处于 1.0 之前的阶段。一个很好的类比是这样的: IPyVolumee volshow 是 3D 阵列Matplotlib 的 imshow 是 2D 阵列。你可以在其 [文档][16] 中读到更多关于它的信息。
交流结果是数据科学的一个重要方面,可视化结果提供了显著优势。 **[**IPyvolume**][15]** 是一个Python库用于在Jupyter笔记本中可视化3D体积和字形(例如3D散点图)配置和工作量极小。然而它目前处于1.0之前的阶段。一个很好的类比是这样的: IPyVolumee **volshow** 是3D阵列Matplotlib 的**imshow** 是2D阵列。你可以在 [documentation][16] 中读到更多关于它的信息。
#### 安装
安装:
```
Using pip
@ -179,19 +169,21 @@ Conda/Anaconda
$ conda install -c conda-forge ipyvolume
```
#### 例子
例子:
动画:
**Animation:**
![](https://opensource.com/sites/default/files/uploads/ipyvolume_animation.gif)
**Volume rendering:**
体绘制:
![](https://opensource.com/sites/default/files/uploads/ipyvolume_volume-rendering.gif)
### Dash
**[Dash][17]** 是一个用于构建 Web 应用程序的高效 Python 框架。它写在Flask、Plotty.js和Response.js 的顶部,将下拉菜单、滑块和图形等流行 UI 元素与分析 Python 代码联系起来而不需要JavaScript。Dash 非常适合构建可在 Web 浏览器中呈现的数据可视化应用程序。有关详细信息,请参阅 [user guide][18] 。
[Dash][17] 是一个用于构建 Web 应用程序的高效 Python 框架。它构建于 Flask、Plotty.js 和 Response.js 之上,将下拉菜单、滑块和图形等流行 UI 元素与你的 Python 分析代码联系起来而不需要JavaScript。Dash 非常适合构建可在 Web 浏览器中呈现的数据可视化应用程序。有关详细信息,请参阅其 [用户指南][18] 。
#### 安装
安装
```
pip install dash==0.29.0  # The core dash backend
@ -200,44 +192,44 @@ pip install dash-core-components==0.36.0  # Supercharged components
pip install dash-table==3.1.3  # Interactive DataTable component (new!)
```
#### 例子
例子
下面的示例显示了一个具有下拉功能的高度交互的图表。当用户在下拉列表中选择一个值时,应用程序代码将数据从 Google Finance 动态导出到 Pandas 数据框架中。
下面的示例显示了一个具有下拉功能的高度交互的图表。当用户在下拉列表中选择一个值时应用程序代码将数据从Google Finance 动态导出到 Pandas 数据框架中。
![](https://opensource.com/sites/default/files/uploads/dash_animation.gif)
### Gym
从[OpenAI][20] 而来的 **[Gym][19]** 是开发和比较强化学习算法的工具包。它与任何数值计算库兼容如TensorFlow 或Theano 。Gym 是一个测试问题的集合,也称为环境,你可以用它来制定你的强化学习算法。这些环境有一个共享接口,允许您编写通用算法。
[OpenAI][20] 而来的 [Gym][19] 是开发和比较强化学习算法的工具包。它与任何数值计算库兼容,如 TensorFlow 或 Theano。Gym 是一个测试问题的集合,也称为环境,你可以用它来制定你的强化学习算法。这些环境有一个共享接口,允许您编写通用算法。
#### 安装
安装
```
pip install gym
```
#### 例子
例子
以下示例将在 [CartPole-v0][21] 环境中,运行 1000 次,在每一步渲染环境。
以下示例将在 **[CartPole-v0][21]** 环境中运行1000次在每一步渲染环境。
![](https://opensource.com/sites/default/files/uploads/gym_animation.gif)
You can read about [other environments][22] on the Gym website.
你可以在 Gym 网站上读到其他的 [other environments][22] 。
你可以在 Gym 网站上读到 [其它的环境][22] 。
### 结论
这些是我挑选的有用但鲜为人知的数据科学 Python 库。如果你知道另一个要添加到这个列表中,请在下面的评论中提及。
这本书最初发表在 [Analytics Vidhya][23] 的媒体频道上,并经许可转载。
本文最初发表在 [Analytics Vidhya][23] 的媒体频道上,并经许可转载。
------
via: https://opensource.com/article/18/11/python-libraries-data-science
作者:[Parul Pandey][a]
选题:[lujun9972][b]
译者:[heguangzhi](https://github.com/heguangzhi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,125 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: subject: (Boxing yourself in on the Linux command line)
[#]: via: (https://opensource.com/article/18/12/linux-toy-boxes)
[#]: author: (Jason Baker https://opensource.com/users/jason-baker)
[#]: url: ( )
Boxing yourself in on the Linux command line
======
Learn how to use the boxes utility to draw shapes with characters at the Linux terminal and make your words stand out.
![](https://opensource.com/sites/default/files/styles/image-full-size/public/uploads/linux-toy-boxes.png?itok=Rii6nT5P)
It's the holiday season, and every Linux terminal user deserves a little gift. It doesn't matter whether you celebrate Christmas, another holiday, or nothing at all. So I'm gathering together a collection of 24 Linux command-line toys over the next few weeks for you to enjoy and share with your friends. Let's have a little fun and add a little joy to a month that, at least here in the northern hemisphere, can be a little bit cold and dreary.
Chances are, there will be a few that you've heard of before. But, hopefully, we'll all have a chance to learn something new. (I know I did when doing some research to make sure I could make it to 24.)
The first of our 24 Linux terminal toys is a program called boxes. Why start with boxes? Because it's going to be hard to wrap up all of our other command-line presents to you without it!
On my Fedora machine, boxes wasn't installed by default, but it was in my normal repositories, so installing it was as simple as
```
$ sudo dnf install boxes -y
```
If you're on a different distribution, there's a good chance you'll find it in your default repositories as well.
Boxes a utility I really wish I had in my high school and college computer science courses, where well-intentioned teachers insisted I provide very specific looking comment at the beginning of every source file, function, code block, etc.
```
/***************/
/* Hello World */
/***************/
```
It turns out, once you add a few lines of text inside, formatting them can get, well, tedious. Enter boxes. Boxes is a simple utility for surrounding a block of text with an ASCII art-style box. It comes with defaults for source code commenting, as well as other options.
It's really easy to use. Using pipes, I can push a short greeting into a box.
```
$ cat greeting.txt | boxes -d diamonds -a c
```
Which will give us the output as follows:
```
       /\          /\          /\
    /\//\\/\    /\//\\/\    /\//\\/\
 /\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/                            \/\\//
 \/                                  \/
 /\      I'm wishing you all a       /\
//\\     joyous holiday season      //\\
\\//     and a Happy Gnu Year!      \\//
 \/                                  \/
 /\                                  /\
//\\/\                            /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
 \/\\///\\\//\/\\///\\\//\/\\///\\\//\/
    \/\\//\/    \/\\//\/    \/\\//\/
       \/          \/          \/
```
Or perhaps something more fun, like:
```
echo "I am a dog" | boxes -d dog -a c
```
Which will, unsurprisingly, give you the following:
```
          __   _,--="=--,_   __
         /  \."    .-.    "./  \
        /  ,/  _   : :   _  \/` \
        \  `| /o\  :_:  /o\ |\__/
         `-'| :="~` _ `~"=: |
            \`     (_)     `/
     .-"-.   \      |      /   .-"-.
.---{     }--|  /,.-'-.,\  |--{     }---.
 )  (_)_)_)  \_/`~-===-~`\_/  (_(_(_)  (
(              I am a dog               )
 )                                     (
'---------------------------------------'
```
Boxes comes with [lots of options][1] for padding, position, and even processing regular expressions. You can learn more about boxes on the [project's homepage][2], or head over to [GitHub][3] to download the source code or contribute your own box. In fact, if you're looking for an idea to submit, I've got an idea for you: why not a holiday present?
```
         _  _
        /_\/_\
 _______\_\/_/_______
|       ///\\\       |
|      ///  \\\      |
|                    |
|     "Happy pull    |
|       request!"    |
|____________________|
```
Boxes is open source under a GPLv2 license.
Do you have a favorite command-line toy that you think I ought to profile? The calendar for this series is mostly filled out but I've got a few spots left. Let me know in the comments below, and I'll check it out. If there's space, I'll try to include it. If not, but I get some good submissions, I'll do a round-up of honorable mentions at the end.
Or check out tomorrow's command-line toy, [Drive a locomotive through your Linux terminal][4].
--------------------------------------------------------------------------------
via: https://opensource.com/article/18/12/linux-toy-boxes
作者:[Jason Baker][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jason-baker
[b]: https://github.com/lujun9972
[1]: http://boxes.thomasjensen.com/examples.html
[2]: https://boxes.thomasjensen.com/
[3]: https://github.com/ascii-boxes/boxes
[4]: https://opensource.com/article/18/12/linux-toy-sl

View File

@ -0,0 +1,125 @@
[#]: collector: (lujun9972)
[#]: translator: (jrglinux )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: subject: (Boxing yourself in on the Linux command line)
[#]: via: (https://opensource.com/article/18/12/linux-toy-boxes)
[#]: author: (Jason Baker https://opensource.com/users/jason-baker)
[#]: url: ( )
神奇的 Linux 命令行字符形状工具 boxes
======
本文将教你如何在 Linux 命令行终端中使用 boxes 工具绘制字符形状图形来包装你的文字让其更突出。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/uploads/linux-toy-boxes.png?itok=Rii6nT5P)
现在正值假期,每个 Linux 终端用户都该得到一点礼物。无论你是庆祝圣诞节还是庆祝其他节日,或者什么节日也没有,都没有关系。我将在接下来的几周内介绍 24 个 Linux 命令行小玩具,供你把玩或者与朋友分享。让我们享受乐趣,让这个月过得快乐一点,因为对于北半球来说,这个月有点冷并且沉闷。
对于我要讲述的内容,可能你之前就有些了解。但是,我还是希望我们都有机会学到一些新的东西(我做了一点研究,确保可以分享 24 个小玩具)。
24 个 Linux 终端小玩具中的第一个是叫做 boxes 的小程序。为何从 boxes 说起呢?因为在没有它的情况下很难将所有其他命令礼物包装起来!
在我的 Fedora 机器上,默认没有安装 boxes 程序,但它在我的普通仓库中可以获取到,所以用如下命令就可安装:
```
$ sudo dnf install boxes -y
```
如果你在使用其他 Linux 发行版,一般也都可以在默认仓库中找到 boxes。
Boxes 是我真正希望在高中和大学计算机课程中就使用的实用程序,因为善意的老师要求我在每个源文件、函数、代码块等开头添加一些具体的评论信息。
```
/***************/
/* Hello World */
/***************/
```
事实证明,一旦你需要在框内添加几行文字,并且格式化的将它们统一风格就会变得很乏味。而 boxes 是一个简单实用程序,它使用 ASCII 艺术风格的字符形状框来包围文本。其字符形状默认风格是源代码注释风格,但也提供了一些其他选项。
它真的很容易使用。使用管道,便可以将一个简短问候语塞进字符形状盒子里。
```
$ cat greeting.txt | boxes -d diamonds -a c
```
上面的命令输出结果如下:
```
       /\          /\          /\
    /\//\\/\    /\//\\/\    /\//\\/\
 /\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/                            \/\\//
 \/                                  \/
 /\      I'm wishing you all a       /\
//\\     joyous holiday season      //\\
\\//     and a Happy Gnu Year!      \\//
 \/                                  \/
 /\                                  /\
//\\/\                            /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
 \/\\///\\\//\/\\///\\\//\/\\///\\\//\/
    \/\\//\/    \/\\//\/    \/\\//\/
       \/          \/          \/
```
或者玩点更有趣的,比如:
```
echo "I am a dog" | boxes -d dog -a c
```
不要惊讶,它将会输出如下:
```
          __   _,--="=--,_   __
         /  \."    .-.    "./  \
        /  ,/  _   : :   _  \/` \
        \  `| /o\  :_:  /o\ |\__/
         `-'| :="~` _ `~"=: |
            \`     (_)     `/
     .-"-.   \      |      /   .-"-.
.---{     }--|  /,.-'-.,\  |--{     }---.
 )  (_)_)_)  \_/`~-===-~`\_/  (_(_(_)  (
(              I am a dog               )
 )                                     (
'---------------------------------------'
```
Boxes 程序提供了[很多选项][1] 用于填充、定位甚至处理正则表达式。你可以在其 [项目主页][2] 上了解更多有关 boxes 的信息,或者转到 [GitHub][3] 去下载源代码或者贡献你自己的盒子形状。说到此,如果你正在寻找贡献的好点子,我已经有了一个想法:为什么不贡献一个节日礼物盒子?
```
         _  _
        /_\/_\
 _______\_\/_/_______
|       ///\\\       |
|      ///  \\\      |
|                    |
|     "Happy pull    |
|       request!"    |
|____________________|
```
Boxes 是基于 GPLv2 许可证的开源项目。
你有特别喜欢的命令行小玩具需要我介绍的吗?这个系列要介绍的小玩具大部分已经有了落实,但还预留了几个空位置。如果你有特别想了解的可以评论留言,我会查看的。如果还有空位置,我会考虑介绍它的。即使要介绍的小玩具已经有 24 个了,但如果我得到了一些很好的意见,我会在最后做一些有价值的提及。
你可以通过[ Drive a locomotive through your Linux terminal][4] 来查看明天会介绍的命令行小玩具。
--------------------------------------------------------------------------------
via: https://opensource.com/article/18/12/linux-toy-boxes
作者:[Jason Baker][a]
选题:[lujun9972][b]
译者:[jrg](https://github.com/jrglinux)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/jason-baker
[b]: https://github.com/lujun9972
[1]: http://boxes.thomasjensen.com/examples.html
[2]: https://boxes.thomasjensen.com/
[3]: https://github.com/ascii-boxes/boxes
[4]: https://opensource.com/article/18/12/linux-toy-sl