Python▍每天学一点 AI时代的最佳编程语言Python

百家 作者:原力AI学院 2019-03-07 10:56:01

每天学一点Python

小伙伴们下午好!前两天我们为大家推荐了几篇关于

Python的基础文章应用案例,后来收到了很多小伙伴们的反馈,大家对学Python充满了热情,并且希望以后看到更多关于Python的知识,基于此,我们将从今日开始,开设一个名叫“每天学一点Python”的系列小专栏,从头开始,把Python一点一滴的拆开,让大家每天都可以学一点点,每天进步一点点,今天是第一篇。

首先,先放上一个关于Python的介绍视频,视频是英文版的,考验大家英语能力的时候到了~


Python在AI领域的优势


在人工智能上使用Python编程语言的优势


1.优质的文档


2.平台无关,可以在现在每一个*nix版本上使用


3.和其他面向对象编程语言比学习更加简单快速


4.Python有许多图像加强库像Python Imaging Libary,VTK和Maya 3D可视化工具包,Numeric Python, Scientific Python和其他很多可用工具可以于数值和科学应用。


5.Python的设计非常好,快速,坚固,可移植,可扩展。很明显这些对于人工智能应用来说都是非常重要的因素。


6.对于科学用途的广泛编程任务都很有用,无论从小的shell脚本还是整个网站应用。


7.最后,它是开源的。可以得到相同的社区支持。


AI的Python库


总体的AI库


  • AIMA:Python实现了从Russell到Norvigs的“人工智能:一种现代的方法”的算法


  • pyDatalog:Python中的逻辑编程引擎baqist.cn


  • SimpleAI:Python实现在“人工智能:一种现代的方法”这本书中描述过的人工智能的算法。它专注于提供一个易于使用,有良好文档和测试的库。


  • EasyAI:一个双人AI游戏的python引擎(负极大值,置换表、游戏解决)


机器学习库


  • PyBrain 一个灵活,简单而有效的针对机器学习任务的算法,它是模块化的Python机器学习库。它也提供了多种预定义好的环境来测试和比较你的算法。


  • PyML 一个用Python写的双边框架,重点研究SVM和其他内核方法。它支持Linux和Mac OS X。


  • scikit-learn 旨在提供简单而强大的解决方案,可以在不同的上下文中重用:机器学习作为科学和工程的一个多功能工具。它是python的一个模块,集成了经典的机器学习的算法,这些算法是和python科学包(numpy,scipy.matplotlib)紧密联系在一起的。gbpcci.cn


  • MDP-Toolkit 这是一个Python数据处理的框架,可以很容易的进行扩展。它海收集了有监管和没有监管的学习算法和其他数据处理单元,可以组合成数据处理序列或者更复杂的前馈网络结构。新算法的实现是简单和直观的。可用的算法是在不断的稳定增加的,包括信号处理方法(主成分分析、独立成分分析、慢特征分析),流型学习方法(局部线性嵌入),集中分类,概率方法(因子分析,RBM),数据预处理方法等等。


自然语言和文本处理库


  • NLTK 开源的Python模块,语言学数据和文档,用来研究和开发自然语言处理和文本分析。有windows,Mac OSX和Linux版本。


Python 如何将字符串转为字典


此部分内容来自作者 FunHacks


在工作中遇到一个小问题,需要将一个python的字符串转为字典,比如字符串:

user_info = '{"name" : "john""gender" : "male""age": 28}'

我们想把它转为下面的字典:

user_dict = {"name" : "john""gender" : "male""age"28}

有以下几种方法:


通过 json 来转换

>>> import json>>> user_info= '{"name" : "john", "gender" : "male", "age": 28}'>>> user_dict = json.loads(user_info)>>> user_dict{u'gender': u'male', u'age': 28, u'name': u'john'}


但是使用 json 进行转换存在一个潜在的问题。


由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号 (官网上有一段描述是 “A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes” ),因此下面的转换是错误的:

>>> import json>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"# 由于字符串使用单引号,会导致运行出错>>> user_dict = json.loads(user_info)Traceback (most recent call last):  File "", line 1, in < module>  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads    return _default_decoder.decode(s)  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode    obj, end = self.raw_decode(s, idx=_w(s, 0).end())  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode    obj, end = self.scan_once(s, idx)ValueError: Expecting property name: line 1 column 2 (char 1)

通过 eval

>>> user_info = '{"name" : "john", "gender" : "male", "age": 28}'>>> user_dict = eval(user_info)>>> user_dict{'gender': 'male', 'age': 28, 'name': 'john'}>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}">>> user_dict = eval(user_info)>>> user_dict{'gender': 'male', 'age': 28, 'name': 'john'}

通过 eval 进行转换就不存在上面使用 json 进行转换的问题。但是,使用 eval 却存在安全性的问题,比如下面的例子:

# 让用户输入 `user_info`>>> user_info = raw_input('input user info: ')# 输入 {"name" : "john", "gender" : "male", "age": 28},没问题>>> user_dict = eval(user_info)# 输入 __import__('os').system('dir'),user_dict 会列出当前的目录文件!# 再输入一些删除命令,则可以把整个目录清空了!>>> user_dict = eval(user_info)



通过 literal_eval

>>> import ast>>> user = '{"name" : "john", "gender" : "male", "age": 28}'>>> user_dict = ast.literal_eval(user)>>> user_dict{'gender': 'male', 'age': 28, 'name': 'john'}user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}">>> user_dict = ast.literal_eval(user)>>> user_dict{'gender': 'male', 'age': 28, 'name': 'john'}


使用 ast.literal_eval 进行转换既不存在使用 json 进行转换的问题,也不存在使用 eval 进行转换的 安全性问题,因此推荐使用 ast.literal_eval


考考你

以下哪个不是Python的机器学习库?


A、Tensorflow

B、scikit-learn

C、Theano 

D、PyInstaller


你可以写留言来告诉我们答案。本题将于明天给大家讲解。

粉丝福利:

加微信号(julyedufu77)并发送关键字“Python基础”即可0元学习七月在线精品课程《Python基础课程升级版》,限30名额。

欢迎投稿,投稿/合作:dashuju36@qq.com

如果您觉得文章不错,那就分享到朋友圈~



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接