电影《当幸福来敲门》
重要的是自由列车之行,就如同翻山越岭,我们都得面对险山砾石。
用Python实现面向对象编程
作者:孙月欣
1、面向对象编程
●面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
●面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。
●面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
2、
面向过程和面向对象的简单实例
面向过程
●我们要处理学生的个人信息,为了表示一个学生的年龄,面向过程的程序可以用一个dict表示:
●处理学生成绩可以通过函数实现,比如打印学生的年龄:
面向对象
●采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是Student这种数据类型应该被视为一个对象,这个对象拥有name和age这两个属性(Property)。如果要打印一个学生的年龄,首先必须创建出这个学生对应的对象,然后,给对象发一个print_age消息,让对象自己把自己的数据打印出来。
●然后调用对象的方法处理数据
3、
面向对象中重要的概念类和实例
●Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,比如,A和B是两个具体的Student。
●面向对象的设计思想是抽象出Class,根据Class创建Instance。
●面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。
4、
Python类定义和实例
●以Student类为例,在Python中,定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
●定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现的:
●类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的init方法,在创建实例的时候,就把name,age等属性绑上去:
●特殊方法“__init__”前后分别有两个下划线!!!
●注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
●在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
5、
面向对象数据的封装
●面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和age这些数据。我们可以通过类的方法来访问这些数据,比如打印一个学生的成绩:
●类的方法类似函数,是类中的函数,只是多了一个参数第一参数为self,其他和普通函数一样。
●类中的数据封装后,通过类的方法来处理,这样实现了数据的封装,利用类的方法和外面打交道。
6、
总结
●类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;
●方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;
●通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。
●数据封装、继承和多态是面向对象的三大特点,我们后面会详细讲解。
使用Python中的SciKit-Learn对数据进行逻辑分析
作者:贺凯
利用Scikit-Learn对数据进行逻辑回归分析时,首先需要进行特征筛选,这里以某银行的贷款违约率数据为例(已上传到本人github上,请各位自行下载)。首先通过使用随机逻辑回归(RandomizedLogisticRegression)进行特征筛选(年龄,教育,工龄,收入等),然后利用筛选后的特征建立逻辑回归模型,输出平均正确率。
在运行出现了错误。
解决方案:
新建一个没有最后一列的数据集。
具体代码如下:
推文内容仅代表学生本人学习心得,不代表本公众号立场。该公众号平台旨在鼓励学生学习分享知识,至于对错,大家都可以留言评论,甚至给推文打分。作者也需要大家的鼓励,以及大家的宝贵的意见。
编辑:秦毅
领取专属 10元无门槛券
私享最新 技术干货