Python 就像瑞士军刀,不但短小精悍,而且功能强大,许多疑难杂症的问题,使用Python都能快速解决。 相较于c/c++,python 的代码相对简洁非常多,代码生产效率远高于c/c++,因此能快速地从实验结果中进行迭代。举例来说,如果我要把一个csv档(my_csv_file.csv),读入进代码内进行分析,使用python 只要两行代码就能完成。
再举例来说:
假设有个植物学家收集了三种鸢尾花的品种 setosa, versicolor, virginica 各若干朵,并测量了每朵鸢尾花的萼片长 (sepal length)、萼片宽 (sepal width)、花瓣长(petal length)、花瓣宽(petal width)。试问:假设我们看到了新的一朵鸢尾花,我们是否有办法利用 「萼片长、萼片宽 、花瓣长、花瓣宽」等资讯,来推测此朵鸢尾花是属于哪一个品种 (setosa, versicolor, virginica)?
这个问题,是非常典型的机器学习的问题,利用植物学家收集的训练资料进行学习后,对没见过的花朵进行预测。
在Python 里,只要写50行以内的代码,就能轻易地利用机器学习解决此问题。并把机器学习到的决策过程,进行图表视觉化的呈现。下面,简单的举几个例子,对于学习成果进行解释:(如下图所示)
• step1: 如果 petal length <= 2.45 公分 —> 则品种是 setosa
• step1, step2, step3, step4
1. step1 如果 petal length > 2.45 公分 —> step2
2. step2 如果 petal width <= 1.75 公分 —> step3
3. step3 如果 petal length <= 4.95 公分 —> step4
• step4 如果 petal width <= 1.65 公分 —> 则品种是 versicolor
• step4如果 petal width > 1.65 公分 —> 则品种是 virginica
由上述例子,从「资料的汇入」、「资料整理」、「机器学习」、到「视觉化呈现」四个步骤,在短短不到50行的Python 的代码就能完成。 由此,可以说明使用 Python 来进行机器学习的实验验证,是非常有效率,且能快速进行迭代。
Python 除了对传统的机器学习算法有完整的支持外,现在最新、最火的深度学习算法,也能在 Python 里找到相对应的资源。 深度学习框架的鼻祖 theano 在 2009-04-02 就已经进行了 v0.1版的 release,是由 Deep Leaning 大牛 Yoshua Bengio 带领 Montreal University 的成员进行开发。 其后,近年来随着深度学习越来越受重视,Google 在 2015-11-9 推出了 tensorflow 的深度学习框架,其开发团队有一大部分是来自于 theano 的开发团队。
综合以上,Python (1) 在资料处理上,有完整的支持套件 (2) 代码简洁、快速撰写 (3) 视觉化呈现工具完整 (4) 传统机器学习算法,有完善的支持 (5) 最新的深度学习算法,有完善的支持,且总是走在最新的发展潮流上。
结论:
- Python 就像瑞士军刀,不但短小精悍,而且功能强大
- Python 提升代码生产效率,因此能快速从实验结果中进行迭代
- Python 很擅长与不同语言进行整合,特別是 c/c++
- Python 有很强大的图表视觉化工具
- Python 支持许多机器学习算法,如:决策树、SVM (支持向量机)
- Python 支持许多深度学习框架,如: theano, tensorflow, caffe
本回答来自Emotibot数据科学家林志豪