机器学习 - Python 02

好了,咱们接着上一节的内容,继续学习机器学习中的Python语法部分。这一节算是Python语法的最后一节了。也就是说如果真的看懂了这两节的内容,理论上说就机器学习的领域或者方向,语言已经不是问题了。同时也意味着马上真正的进入机器学习的核心部分了。好了,那咱们接下来正式开始咱们的学习啦。

  • Tuples

Tuples是Python中的一种新的形式的数据collection(至少相对于C++, objective-C,Java是新的。其他的我就不敢肯定了,免得被打脸,哈哈)。其实她和List几乎是一样的,除了2个方面的不同。她和list的区别主要是下面2个方面的不同:1)Tuples 的创建的展现是讲元素element用括号包起来,而List是用的中括号。2)Tuples一旦创建 元素是不可改变的,即它是immutable的,而List的元素是可以改变的,即Mutable的。好了,下面看一下tuples的创建代码展示一下,否则光说不练假把式。哈哈哈

t = (1,2,3)

上面的代码就是创建了一个tuple,他的元素有三个,分别是1,2,3. 那么既然有了list为什么还要Tuples呢? 这主要是因为Tuple的应用场景主要是用于那些有多个返回值的函数中,想象一下,如果一个函数有多个返回值,你要怎么弄呢?对了,你肯定想到了List对吧?可是List里面的数据可能因为多人协同开发的时候被其他同事修改了,是会有一定Risk的。那么自然而然我们就想到了要用Tuples这个数据结构,因为他是Immutable的,如果有人试图修改她的值,他会报错的。总结起来就是List是可读可写的,而Tuples是只读的。看看下面这个返回多个值的例子吧。

a = 0.125.as_integer_ratio()

上面的函数返回了2个值,分别是分子和分母,都是整型数据。返回的数据是(1,8)。

关于Tuples还有一个点是Individual assignments(翻译过来应该是叫单独赋值,不知道翻译的对不对,容我装个B,哈哈哈),这里的意思是讲Tuple中的值可以分别赋值给不同的变量,如下所示:

numerator,demonstrater = a

上面代码的运行结果就是:numerator = 1, demonstrater = 8.

  • Dictionary

好了,现在接受最后一种形式的collection,就是字典。这和其他语言都很像,就是key-value键值对。好了,下面先来瞧一瞧咱们dictionary的创建

numbers = {"one":1,"two":2,"three":3}

这和其他很多种的语言的都一样,再来看看如何通过Key值来retrieve value。

numbers["one"]

下面介绍一下dictionary中的比较高级但是在实际中会经常用到的的功能,这些语法特性看起来挺牛逼,其实都是纸老虎,哈哈,心态上我们要藐视他妈,操作上要重视他们哈。

1) in operator

in的关键字是Python中最常见的一个关键字,没有之一!!!!在list中用,在dictionary中用,在条件判断时会用,在循环中还是会用的。既然这一节讲的是dictionary,我们就看看她在dictionary中的应用吧。

#create a dictionary
planets = [‘Mercury‘, ‘Venus‘, ‘Earth‘, ‘Mars‘, ‘Jupiter‘, ‘Saturn‘, ‘Uranus‘, ‘Neptune‘]
plants_to_initial = {planet:planet[0] for planet in planets}
"Mercury" in plants_to_initial  # the in operator will tell us whether something is a key in the dictionary

上面的创建字典代码现在看不懂没关系,她就是创建了一个字典,这个字典的key值是这些星星的名字,value值就是这些星星的首字母。这里重要的是最后一行代码,判断“Mercury”这个字符串是不是这个字典的key值。如果是key,返回True, 否则返回False。

2)遍历key值

#the for loop will loop over its keys
for key in plants_to_initial:
    print(key,end = " ")

如上代码所示,直接对dictionary遍历,返回的是每一个key-value键值对的key值。上面代码就是打印这个字典的所有的key值。

3) 同事遍历key-value 键值对

在字典中,如果想要同时遍历键值对,我们必须通过dictionary的一个method,叫做:items(). 这个方法返回一个list,里面的元素是tuples,这些tuples里面的元素就是key,values. 话不多说,直接上代码看

for planet, initial in plants_to_initial.items():#items()will return its key-value pairs
    print(planet,initial)
  • String

好了,终于进入到最最常用的一种基本数据类型了-string。几乎在所用的应用中,产生和消费的数据,几乎字符串占了绝大部分。当然啦,在机器学习中最常用到的数据类型是int和float,但是string类型的也是经常会出现的。其实String可以将它看成一串字符,这一串字符就好比一个list。用英文来说就是 A string is a sequences of characters. (是不是瞬间高大上了,从大蒜变成了咖啡。哈哈哈哈)。 所以在Python中,几乎你在list中看到的方法,都同样适用于String.

1) String 的创建和index

planet = "Pluto"
planet[0]#return P
planet[-3:]#return uto
len(planet)#return 5

2)常用的String方法

#string methods
planet.upper()#return PLUTO
planet.lower()#return pluto
planet.index("uto")#return 2
planet.startswith("Plu")#return True
planet.endswith("asds")#return False

3) List 和 String之间的相互转换

#going between strings and lists
#string -> list   split method
planets = "Pluto is a planet"
list_planets = planets.split()#return a list of ["Pluto","is","a","planet"]
dates = ‘2019-10-08‘
list_dates = dates.split(‘-‘)#returns ["2019","10","08"], the element are also all string types
#list->string  join method
year,month,day = list_dates #individual assignment
‘/‘.join([year,month,day]) #returns "2019/10/08"

注意无论是String->List还是List->String, 他们的基本元素都是String,而不会是Int或者Float或者其他什么稀奇古怪的数据类型。也就是说,无论是Split还是Join, 他们操作的对象都是String。例如:‘/‘.join([1,2,3]),这句代码就会报错,因为1,2,3都是整型数据而不是string。这里比较抽象哈,自己慢慢体会。

4)formatting a string

String是一个非常灵活的数据类型,例如int也可以转换成string,等等。因此我们常常需要将不同数据类型的数据拼接在一起,然后转换成一个string。这种情况下,我们经常需要用到format方法,当然也存在其他方法可以完成这个任务,但是format的牛逼之处不仅仅在于这,她还可以格式化数据的表现格式,例如保留几位小数点,大数字的表现形式等等,具体的可以参考下面的代码。

position = 9
"{}, you will be the {}th planet to me".format(planet,position) #returns ‘Pluto, you will be the 9th planet to me‘
"{:.2}".format(0.123345) #returns "0.12", the result is converted to string type
"{:,}".format(1234578) #returns ‘1,234,578‘ the result is also converted to string type
"{0},{1},{1},{0},{0}".format(12,55)#indexing of format the result is ‘12,55,55,12,12‘, the result is also string type
  • Loop comprehension

Loop comprehension 是Python中非常受欢迎的一个特性,她能够快速创建List和dictionary,并且使用起来非常灵活,在将来机器学习的实践中你们会发现非常好用。说了这么多,那么接下来我们来看看到底什么是Loop Comprehension.

1) 利用Loop Comprehension 来快速创建dictionary。

其实这已经在前面的代码中有所体现了,如下面的代码所示,快速创建字典。

plants_to_initial = {planet:planet[0] for planet in planets}

其实就是用for in 的循环,然后通过key:value的形式,批量的产生键值对,最后生成一个字典。

2)利用Loop Comprehension 来创建List

List的创建也是很灵活的,也可以操作循环的元素,来达到一些个性化或者特殊需求的一些目的。甚至她还可以通过组合条件判断的语句达到更加精细化的控制,创建List的一些常用方式如下所示

numbers = [1,2,3,4]
squares = [n**2 for n in numbers] #returns [1,4,9,16]
print(squares)
short_squares = [n for n in squares if n<9] #returns [1,4]
count_number_of_squares = len([n for n in squares if n < 100]) #returns 4

总结: 前面一节内容还有这一节内容大体上已经介绍了常用Python的绝大部分特性,如果已经掌握,我觉得仅仅对于机器学习这个领域的学习的话,已经够用了。这两节的内容是给已经有其他语言经验的人准备的(如果一点计算机语言经验都没有,我建议还是从Hello World开始)

原文地址:https://www.cnblogs.com/tangxiaobo199181/p/12113244.html

时间: 2024-10-11 07:03:38

机器学习 - Python 02的相关文章

机器学习---python环境搭建

一 安装python2.7 去https://www.python.org/downloads/ 下载,然后点击安装,记得记住你的安装路径,然后去设置环境变量,这些自行百度一下就好了. 由于2.7没有pip ,所以最好装下.这是下载地址 https://pypi.python.org/pypi/pip#downloads.下载好之后点击开始,搜索 CMD .输入 python setup.py install 你在cmd里面输入pip会显示这个,这表示pip也没有设置环境变量,你只要去你pyth

机器学习Python包

随着机器学习的逐日升温,各种相关开源包也是层出不群,面对如此多种类的工具包,该如何选择,有的甚至还知之甚少或者不知呢,本文简单汇总了一下当下使用比较多的Python版本机器学习工具包,供大家参看,还很不全不详尽,会持续更新,也欢迎大家补充,多谢多谢!~~~ scikit-learn: 基于python的机器学习模块,基于BSD开源许可证.这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护.基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选

机器学习Python实现 SVD 分解

这篇文章主要是结合机器学习实战将推荐算法和SVD进行相应的结合 任何一个矩阵都可以分解为SVD的形式 其实SVD意义就是利用特征空间的转换进行数据的映射,后面将专门介绍SVD的基础概念,先给出python,这里先给出一个简单的矩阵,表示用户和物品之间的关系 这里我自己有个疑惑? 对这样一个DATA = U(Z)Vt 这里的U和V真正的几何含义  :  书上的含义是U将物品映射到了新的特征空间, V的转置  将 用户映射到了新的特征空间 下面是代码实现,同时SVD还可以用于降维,降维的操作就是通过

机器学习 python实例完成—决策树

决策树学习是应用最广泛的归纳推理算法之一,是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树.决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,机器学习算法最终将使用这些从数据集中创造的规则.决策树的优点为:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据.缺点为:可能产生过度匹配的问题.决策树适于处理离散型和连续型的数据. 在决策树中最重要的就是如何选取用于划分的特征 在算法中一般选用ID3,D3算法的核心问题是选取在树的每个节点要测

推荐5个国内外评价超高的机器学习Python 库,实用!

前言 机器学习令人无比神往,但从事这个工作的人可能并不这么想. 机器学习的工作内容往往复杂枯燥又困难--通过大量重复工作进行提升必不可少: 汇总工作流及传输渠道.设置数据源以及在内部部署和云部署的资源之间来回分流. 所以使用工具提升你的工作效率实在很关键,而且像这样的工具越多越好. 好在你学的是Python,作为一门威力巨大的工具语言,Python可以给你提供足够的辅助工具,让你在大数据和机器学习项目中游刃有余. 唯一的问题在于Python海量的资源库让患有选择困难症的你难以取舍,因此糖豆贴心的

机器学习-Python 01

机器学习中最常用最流行的语言工具现阶段应该是Python, 这篇文章主要介绍一些常用的Python语法知识.本篇博文适合那些有其他语言基础的程序员们,如果一点基础都没有,我建议先跳过.博主以前是做移动端开发的,所以本篇文章主要是为那些准备知识提升或者转行的程序员们准备的,可以让你们以最快的速度进入到Python的开发环境. 好了,首先在正式介绍Python的开发之前,大家都知道需要配置开发环境和IDE. 这里我介绍一下我常用的,叫做Anaconda, 大家可以自行下载,下载过后不用另外配置Pyt

机器学习-Python中训练模型的保存和再使用

在做模型训练的时候,尤其是在训练集上做交叉验证,通常想要将模型保存下来,然后放到独立的测试集上测试,下面介绍的是Python中训练模型的保存和再使用. scikit-learn已经有了模型持久化的操作,导入joblib即可 from sklearn.externals import joblib 模型保存 >>> os.chdir("workspace/model_save") >>> from sklearn import svm >>

机器学习Python实现AdaBoost

adaboost是boosting方法多个版本号中最流行的一个版本号,它是通过构建多个弱分类器.通过各个分类器的结果加权之后得到分类结果的.这里构建多个分类器的过程也是有讲究的,通过关注之前构建的分类器错分的那些数据而获得新的分类器. 这种多个分类器在训练时非常easy得到收敛. 本文主要介绍了通过单层决策树构建弱分类器.同理,也能够用其它的分类算法构建弱分类器. boost 算法系列的起源来自于PAC Learnability(PAC 可学习性).这套理论主要研究的是什么时候一个问题是可被学习

机器学习python环境设置

安装如下python包 matplotlib (1.3.1) networkx (1.10) numpy (1.8.2) pip (1.5.4) scikit-learn (0.16.1) scipy (0.13.3) setuptools (3.3) 依次执行下面的命令 sudo apt-get install build-essential python-dev python-setuptools python-numpy python-scipy libatlas-dev libatlas