机器学习基础1--python

不知不觉,跟着莫凡大大的机器学习教程学习了一段时间。作为初学者,是时候总结一下目前学习到的知识。第一篇就从python和python中必需的数据处理库,图像库开始吧。

why python

机器学习当下最火的莫过于深度学习和神经网络,深度学习当中最流行的tensorflow支持最好的开发语言就是python。当然python凭借其简单灵活的语法和庞大的第三方库,在程序员和非程序员当中都有很大的影响力。

python2和python3

python2和python3是指python的两个大版本,需要注意的是python3并不向下兼容python2的语法,例如

在python2中,我们这样去打印信息:

1
print 'Hello World'

而python3中,你必须加上括号:

1
print('Hello World')

个人建议,直接学习python3即可,除了历史代码,很多第三方库和框架,包括tensorflow,scrapy都很好的支持了python3,用新不用旧。

pythonic

对于老码农而言,尤其是已经掌握了一门动态语言,学习Python并不是什么难事。Python语言有自己鲜明的风格,语句不用分号结尾,不用花括号,依赖缩进判定语句的层次。作为一门动态强类型语言,python兼具语法灵活性和类型安全。很Python的Python代码会被称为『pythonic』。

例如:在Java中,我们交换两个数字,通过这样写:

1
2
3
int temp = a;
a = b;
b = temp;

而pythonic的做法是:

1
a, b = b, a

code style

我坚持认为每一门语言的code style是非常重要的,而python里最流行的code style也就是PEP 8 – Style Guide for Python Code.

为什么需要坚持code style?每一门语言有自己的设计思路和最佳应用场景,也就是为了解决某类问题。而学习新语言,即是为了解决新问题,也是为了拓宽自己的眼界。没必要固守别的语言的一套规范。

如果是用IDE开发的话,基本上都内置了PEP 8规范,所以不用太关心。

IDE

早先我也认为Vim才是学习语言最好的平台,甚至一度为了解决『python语法检查的vim插件在电脑上不生效的问题』绞尽脑汁。其实不需要太抗拒IDE,IDE无非为我们提供了目录树,语法检查,自动排班,一键运行,debug断点等功能而已。先重点着眼于语法本身,而不是各种奇淫技巧。这里推荐:

PyCharm: Python IDE for Professional Developers by JetBrains

此外。推荐有一定程序基础的人可以去LeetCode上选择用python刷题,真正的白版写python,多写几题python的常用基础语法就熟悉了。也解决了学语言没有应用场景的尴尬。

领扣(LeetCode) - 极客挚爱的在线技术平台

初期学习进度关键点

  • 搭好环境+Hello World

    俗话说,工欲善其事,必先利其器。好多人卡在学习的第一步,其实查找资料,探索方法也是写代码的乐趣之一阿。

  • 读一个文本文件,原样写入到一个新文件中。

  • (进阶1) 读一个m行n列的文本文件,按照指定要求输出到新文件,要求例如:第一列需要输入文件的某几列值求和。第二列需要输入文件的某一列进行正则匹配来获取关键字。第一列是1-7的数字,请转化为Monday-Sunday的字符串

  • (进阶2) 将其中某些数据处理方法,封装成函数。

  • (进阶3) 输出原文件某一列的和和方差。如果该文件非常的大,比如说4GB,不能一次加载到内存,如何处理?

    掌握要点包括 基本的IO操作,条件语句,循环语句,字符串常见处理函数, 类型转换, 正则表达式,集合,map,函数等。基本上到这一步,把python作为普通的文本处理工具已经不再话下了。正则表达式可能是一个难点,程序语言的初学者可能会常常会一口气将数据全部读入到内存中,多犯几次错误其实就慢慢学会了。

  • 导入第三方库,利用库里的方法帮助处理数据。如利用numpy,计算均值,方差,标准差,中位数等。

    python以工具库多闻名。这一步将学会如何下载,导入第三方库,并使用库中的方法进行操作。

  • 定义一个python类,类包括类方法,静态方法,类成员变量。

  • python多线程,比如说由100个文件,每个文件处理时间需要1min,如何利用多线程去加快计算。

python入门书籍和教程推荐

莫凡 Python3基础教程
简明 Python 教程
Dive Into Python 中文版