机器学习-Python 01
机器学习中最常用最流行的语言工具现阶段应该是Python, 这篇文章主要介绍一些常用的Python语法知识。本篇博文适合那些有其他语言基础的程序员们,如果一点基础都没有,我建议先跳过。博主以前是做移动端开发的,所以本篇文章主要是为那些准备知识提升或者转行的程序员们准备的,可以让你们以最快的速度进入到Python的开发环境。
好了,首先在正式介绍Python的开发之前,大家都知道需要配置开发环境和IDE. 这里我介绍一下我常用的,叫做Anaconda, 大家可以自行下载,下载过后不用另外配置Python的环境了,因为她已经帮咱们配置好了。下载地址:https://www.anaconda.com/ , 下载过后,你以后每天都需要打开和操作的就是这个图片啦,至少所有DataScience和机器学习的工具这里基本都有。如下图

开发Python常用的编辑器是Spyder和Jupyter Notebook. 但是因为学校老师教的是Spyder, 这里以及以后的机器学习我都选择Spyder啦(懒懒懒)。至于在学习过程中,不断的需要下载相关库的话,就点击上图左上角的Environment,然后自己慢慢去搜,慢慢去找哈,这不是本博客的重点。好了,下面介绍Python的知识点啦。
1. 变量
和其他语言一个很明显的区别是,Python的变量是不需要预先定义类型的。这个很牛逼吧,你可能要问,那她是怎么分配内存空间的呢?这个。。。。。。。。。我就不说了(其实是不知道,哈哈哈哈),单这应该是Python动态分配内存的机制。
例如,咱们可以直接写 a = 10, 而不需要跟Java或者OC 中那样写 int a = 10. So cool, is it?
2. Operations
顾名思义,Python和任何其他语言一样,都有加减乘除,取模,取余数等等算数运算。直接看下面的example更加直观。
var01 = 10
var02 = 15.5
plus = var01+var02
minus = var01-var02
multiply = var01*var02
divid = var01/var02#这里直接给的就是浮点数的结果,而不像其他语言那样只取结果中的整数部分
mod = var01%var02
这里基本和其他的语言一样,只有一些细节不同,例如除法运算,Python直接返回的是浮点型的最终结果,这比其他语言要方便的多。
3. Swap(交换变量值)
大家在学习任何一种语言的时候,我拿我英俊潇洒的面容跟你们打赌,你们一定写过2个变量值交换的代码,而且你们交换值的思路都是定义一个中间变量,然后交换。(别问我怎么知道,我也是从这条路上面走过来的。。。。。。。)。我们以前的思路伪代码如下:temp = a;
a = b;
b = temp;
是不是又被我猜到了,娃哈哈哈哈哈哈哈哈。 但是!!!!!!!自从我们有了Python,我们就不需要这么麻烦了,直接一行代码搞定,看下面
a = 1
b = 2
a,b = b,a
上面第三行,直接交换a, b的值。我就问你服不服?????
4. 函数定义
学过任何一个语言的人都应该知道函数的重要性,咱直接上代码,看看一般函数的定义和格式,然后我在细细解释一些小细节哈。。。
def least_difference(a,b,c):
"""
Return the smallest difference between any two numbers among a,b,c
"""
diff1 = abs(a-b)
diff2 = abs(a-c)
diff3 = abs(b-c)
return min(diff1,diff2,diff3)
首先定义函数的格式是:
def function_name (args):
"""
函数注释区, 将函数注释放在这里。语法中虽然没有特别要求,但是是一个很好的习惯 """
function_body
这里需要记住一个小细节,Python中的indent(缩进)不能省略,否则编译器会报错。而在其他几乎所有的主流语言中都不存在这个问题的,只要是新的一行,管你缩进几个空格符呢。 第二点这里有个细节就是Python中函数的注释规则, 一般将这个函数的注释都写在上面的函数注释区间,为什么这么做呢???其实你不做也不影响代码运行,但是你的项目组长或者项目经理估计得找你谈谈了。哈哈。 其实写在这还有一个作用,就是在调用help(函数名)是,能将该这一块的注释返回并打印出来,这在写一些公用组件或者API是就显得尤为重要了。例如
help(least_difference)
调用上面一行代码后,回返回并打印下面这一句话
Return the smallest difference between any two numbers among a,b,c
是不是很酷,瞬间感觉自己能写API 了。
5. 条件表达(conditional expression)
Python中的条件表达,如if-else表达基本跟Java等主流语言是一致的,但是就三目运算符这一块有一点不一样. 在Python中三目运算符如下所示
outcome = True if grade > 60 else False #ternary operator
6. List
6.1 List 的创建
List几乎是我们日常中用的评率非常高的一种数据结构。Python中的list的牛逼之处在于,她可以将不同数据类型的元素装进同一个list。list的创建如下所示
numbers = [1,2,3,4]
planets = ['a','b','c','d']
mix = [1,'a',2,'b']#different data types
hands = [
['J', 'Q', 'K'],
['', '', ''],
['', 'A', 'K'] # (Comma after the last element is optional)
]
6.2 List的index
在Python中,list的index也是zero-index,意思就是从零开始。但是Python的不同之处就在于,她的index,TMD能够使负数,对!!!是负数,是不是感觉颠覆了以前对于List的认知。但是在Python中,index是负数代表的是从末尾元素开始index的。例如:-1代表最后一个元素的index,-2代表倒数第二个元素,以此类推。具体代码示例看下面
print(numbers[0])#result is 1
print(numbers[-1])#result is 4
print(numbers[-2])#result is 3
6.3 slicing
在Python中,无论是Python中的List数据结构,还是后面要学的numpy中的ndarray, slicing都是经常要用到的。 Slicing这个单词如果直译过来的意思就是切割(你也可以理解为切糕,哈哈哈),就是从一块大的切糕中切一小段给你。在Python的List中,slicing的意思是指在List中切出一段出来。这里的slicing的运用非常灵活,我列举了下面的几种方式。另外slicing取值范围也是包头不包尾的。
print(planets[:3])#from index-0(include) to index-3(exclude)
print(planets[1:])#from index-1(include) to the last element(include last element)
print(planets[0:3])
print(planets[-2:-1])#from the last second element(include) to the last element(exclude)
print(planets[-2:])#from the last second element(include) to the last element(include)
6.4 List常用的method(functions)
由于list是mutable的,是可以修改的,所以她的method非常灵活且都。这跟我们后面说的一个另外一种数据结构Tuples有很大的区别。常用list的method包括有append, pop,len,index等等,具体有无数种method,你们可以自行去查询API,下面列举了一些常用的方法供参考。
planets.append('e')#add a element and place it at the last position
len(planets)#return the length of the list
planets.pop()#return and remove the last element from the list
planets.index('c')#return the index of the element "c"
总结:以上是一些快速入门Python的第一部分,是最基础的部分,学习要求有其他开发语言的相关经验或者知识储备。上面这些最基础的部分有Python开发环境配置,变量,函数定义,List等。下一节继续扩展一下Python中循环,dictionary,Tuples等相关内容。革命已经完成了一小步,同志们仍需努力才是啊。。。哈哈
机器学习-Python 01的更多相关文章
- 机器学习---python环境搭建
一 安装python2.7 去https://www.python.org/downloads/ 下载,然后点击安装,记得记住你的安装路径,然后去设置环境变量,这些自行百度一下就好了. 由于2.7没有 ...
- 【原】Spark之机器学习(Python版)(二)——分类
写这个系列是因为最近公司在搞技术分享,学习Spark,我的任务是讲PySpark的应用,因为我主要用Python,结合Spark,就讲PySpark了.然而我在学习的过程中发现,PySpark很鸡肋( ...
- 机器学习python*(深度学习)核心技术实战
Python实战及机器学习(深度学习)技术 一,时间地点:2020年01月08日-11日 北京(机房上课,每人一台电脑进行实际案例操作,赠送 U盘拷贝资料及课件和软件)二.课程目标:1.python基 ...
- [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-03-数据整理
<Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...
- [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载数据集
<Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...
- 【原】Spark之机器学习(Python版)(一)——聚类
kmeans聚类相信大家都已经很熟悉了.在Python里我们用kmeans通常调用Sklearn包(当然自己写也很简单).那么在Spark里能不能也直接使用sklean包呢?目前来说直接使用有点困 ...
- 机器学习Python包
随着机器学习的逐日升温,各种相关开源包也是层出不群,面对如此多种类的工具包,该如何选择,有的甚至还知之甚少或者不知呢,本文简单汇总了一下当下使用比较多的Python版本机器学习工具包,供大家参看,还很 ...
- R︱mlr包帮你挑选最适合数据的机器学习模型(分类、回归)+机器学习python和R互查手册
一.R语言的mlr packages install.packages("mlr")之后就可以看到R里面有哪些机器学习算法.在哪个包里面. a<-listLearners() ...
- 机器学习 python库 介绍
开源机器学习库介绍 MLlib in Apache Spark:Spark下的分布式机器学习库.官网 scikit-learn:基于SciPy的机器学习模块.官网 LibRec:一个专注于推荐算法的j ...
随机推荐
- Genymotion模拟器安装搜狗输入法
Genymotion模拟器默认没有中文输入法,如果在一些调试中涉及到需要输入中文则必须需要安装中文输入法. 这里以搜狗输入法为例. 这里需要注意一下几点就行: 百度下载一个搜狗输入法,需要特别注意的是 ...
- Angular前端优化思路
简单总结接下我这边angular前端优化步骤都是满满的干货,各位客官有好的改进欢迎留言~ 1. 动静分离 项目里面前端比较占用带宽的一般都是加载静态资源,请求后台接口一般占用带宽都是1kb左右,但是在 ...
- C++中对C的扩展学习新增内容———面向对象(继承)函数扩展性及虚函数机制
1.c语言中的多态,动态绑定和静态绑定 void do_speak(void(*speak)()) { speak(); } void pig_speak() { cout << &quo ...
- 一分钟带你了解下Spring Security!
一.什么是Spring Security? Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是用于保护基于Spring的应用程序的实际标准. Spring Secu ...
- nyoj 163 Phone List(动态字典树<trie>) poj Phone List (静态字典树<trie>)
Phone List 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Given a list of phone numbers, determine if it i ...
- hdu 2554 最短路 (dijkstra)
最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- 理解Spark SQL(三)—— Spark SQL程序举例
上一篇说到,在Spark 2.x当中,实际上SQLContext和HiveContext是过时的,相反是采用SparkSession对象的sql函数来操作SQL语句的.使用这个函数执行SQL语句前需要 ...
- ubuntu 16.04源码编译和配置caffe详细教程 | Install and Configure Caffe on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/b90033a9/,欢迎阅读! Install and Configure Caffe on ubuntu 16.04 Series ...
- PHP中的服务容器与依赖注入的思想
依赖注入 当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合.这个时候解决方式是,A类应该去 ...
- 手把手教学h5小游戏 - 贪吃蛇
简单的小游戏制作,代码量只有两三百行.游戏可自行扩展延申. 源码已发布至github,喜欢的点个小星星,源码入口:game-snake 游戏已发布,游戏入口:http://snake.game.yan ...