机器学习-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 ...
随机推荐
- 关于Set和Map数据结构的一点学习
关于js的Set和Map结构的学习和记录 对阮一峰老师的ES6入门和网上有关资料的的一点学习和记录 1.Set数据结构 Set构造函数的参数是一个可遍历( iterator)对象 Set中的成员值是唯 ...
- Medium高赞系列,如何正确的在Stack Overflow提问
在我们写程序的时候,经常会遇到各色各样的问题,在国内,小伙伴们经常去知乎.CSDN.博客园.思否.安卓巴士等地方提问并获得答案. 这些地方汇集了很多优秀的.爱分享的国内资源.小编比较自豪的一件事情就是 ...
- PHP微信授权登录用于多个域名的方法
PHP微信授权登录用于多个域名的方法appid和 回调地址换下就好了 <pre><!DOCTYPE html><html lang="en">& ...
- 计划任务at和crontab
目标:会看,会写计划任务时间,会制定计划任务 一次性:at yum -y install at #安装at systemctl start atd #启动at服务 systemctl enable a ...
- lqb 入门训练 A+B问题
入门训练 A+B问题 时间限制:1.0s 内存限制:256.0MB 问题描述 输入A.B,输出A+B. 说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标. 输入格式 输入的第 ...
- pat 1124 Raffle for Weibo Followers(20 分)
1124 Raffle for Weibo Followers(20 分) John got a full mark on PAT. He was so happy that he decided t ...
- 【Java】面向对象之继承
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可.其中如图中所示,食草动物.食肉动物.兔子.羊.狮子.豹都可以称为子类,动物类称为父 ...
- [ch02-00] 反向传播与梯度下降的通俗解释
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 第2章 神经网络中的三个基本概念 2.0 通俗地理解三大 ...
- synchronized:内部锁
synchronized:内部锁 起源: 并行程序开发涉及多线程.多任务间的协作和数据共享 一).内部锁:synchronized 1).定义在方法上 public synchronized void ...
- vue项目页面切换到默认显示顶部
页面切换到默认显示顶部 方法一 使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页 ...