精华内容
下载资源
问答
  • 易康特征总体分类

    2020-02-07 15:38:39
    (3)图层值特征:计算图像对象的像素值的种统计结果(平均值、标准偏差和偏态以及对象和对象之间的像素值关系。用这类特征来描述从光谱特性中得到图像对象信息; (4)几何特征:描述了图像对象的形状特点。基本...

    (1)自定义对象特性:是用户定义和引用的现有对象特性;

    (2)类型特征:指的是图像对象的空间连接性;

    (3)图层值特征:计算图像对象的像素值的三种统计结果(平均值、标准偏差和偏态以及对象和对象之间的像素值关系。用这类特征来描述从光谱特性中得到图像对象信息;

    (4)几何特征:描述了图像对象的形状特点。基本的几何特征是基于形成一个图像对象的像素来计算的。如果某个类的图像对象因其形状而突出,您可能会发现描述它们的几何特性;

    (5)位置特征:指图像对象相对于整个影像场景的位置。当处理有地理参考的数据时,这些特性特别有趣,因为图像对象可以通过其地理位置来描述;

    (6)纹理特征:用来评估图像对象的纹理。它们包括基于分析子对象的纹理特征,有助于评估高纹理数据。此外,基于Haralick之后的灰度共现矩阵的特征也可用;

    (7)对象变量:局部变量。与场景变量相反,它们为每个单独的图像对象存储值。(把它想象成每个图像对象都有自己的变量版本)项目中每个映像对象都有一个实例;

    (8)层次结构特性:提供关于在图像对象层次结构中嵌入图像对象的信息。

    主题属性特征使用主题层提供的信息来描述图像对象。如果你的场景包含一个主题层,它的主题对象的属性可以用来创建主题属性特征,可以用来开发规则。根据主题层的属性,可以使用大量不同的特性。
    ————————————————
    版权声明:本文为CSDN博主「o刘非刘o」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/liujinli0712/article/details/80869230

    展开全文
  • 构建特征是一很大的工程,总体来讲包括 “特征选择”、“特征表达”和“特征评估”3 部分。我们也按这 3 部分,并结合自己的具体实践,用 3 篇文章来和大家聊一下特征工程的相关问题。 本篇文章,我们讨论...

    特征质量的好坏,直接影响到最终的模型结果。构建特征是一个很大的工程,总体来讲包括 “特征选择”、“特征表达 和 “特征评估”3 个部分。我们也按这 3 个部分,并结合自己的具体实践,用 3 篇文章来和大家聊一下特征工程的相关问题。

    本篇文章,我们讨论一下特征选择。特征选择指的是,在全部的特征中,挑选出对最终的机器学习任务有用的特征。

    整体来讲,从特征选择的过程中有没有模型的参与,可以将特征选择的方法分为:基于统计量的选择和基于模型的选择

    (在本文的讨论中,默认所有的特征取值已经去除量纲的影响,或者说已经做过归一化处理。)

     

    基于统计量的特征选择

    如果把每个特征看做一个随机变量,在不同的样本点处该随机变量可能会取到不同的值。可以用统计的方法,基于样本集的统计结果,对特征做出选择。

    选择特征的标准主要有两个,一是特征本身取值的分散程度;二是该特征与要预测的结果之间的相关程度。

    常用的四个统计量和方法包括方差、相关系数、假设检验和互信息,下面依次说明。

    方差

    方差衡量的是一个随机变量取值的分散程度。如果一个随机变量的方差非常小,那这个变量作为输入,是很难对输出有什么影响的。因此在进行特征选择时,可以丢弃那些方差特别小的特征。

    例子:

    如果你手上有 5 个 offer,年收入水平分别是 100 万、100.01 万、100.02 万、100.03 万和 100.04 万,我想你最终会选择哪个 offer,年收入这个因素基本对你没太大影响吧。

     

    相关系数

    相关系数取值在 - 1 到 1 之间,表征的是两个随机变量之间的线性相关关系。相关系数为 0,表明两个变量之间线性无关;相关系数大于 0,说明两个变量之间是正相关;相关系数小于 0,代表两个变量之间负相关。

    特征与输出的相关系数的绝对值越大,说明对输出的影响越大,应该优先选择。

    例子:

    1. 收入和学历有关系吗?高学历完全不能保证高收入。但从统计总体来看,学历较高,收入也会相对较高。如果要你对一个陌生人的收入做预测,那么学历肯定是要关注的因素之一。

    2. 健康状况和吸烟多少有关系吗?我想,绝大多数人会认同,吸烟对健康是负相关,即有害的。

    3. 个人成功和家庭背景有关系吗?“当然没有”,前总理的女儿曾说过,“能力之外的资本等于 0”!

     

    假设检验

    假设检验是一种统计推断方法,简单来说就是先做一个假设,然后再基于某个量来判断该假设是否成立。比如,可以假设某个特征和输出是有显著相关性的,如果假设成立,即选择该特征;反之,丢弃该特征。

    例子:

    淑女品茶是一个有关假设检验的著名例子,这里换一下描述。

    如果你有一个同事,宣称他对咖啡非常有研究,可以喝出来是先加的奶还是先加的糖。

    你当然不信,所以你的假设是他没有这种判断能力。

    检验方式是,给他 10 杯咖啡,不告诉他制作过程,让他通过喝来判断。设他判断正确的杯数为 N,如果 N 超过了 9,你可能就要拒绝当初的假设了,他可能真的有这个能力。

     

    互信息

    互信息,也叫信息增益。用过决策树模型的同学,对这个应该都不陌生。

    简单来说,如果一个系统的信息熵为 A,在某一个特征的已知的情况下,系统的信息熵变成 B,则信息增益为 A-B。

    互信息越大,证明这个信息对系统的分类越有帮助,相应的特征应优先选择。

    (决策树用于回归问题时,互信息最大的标准变成了平方误差损失最小)

    咦?不是说基于统计量的方法吗,怎么这里用到树模型了?

    决策树模型分为树的生成和树的剪枝两个阶段,在树的生成阶段采用的是贪心策略,可以看做是基于统计量的。而 “模型学习” 的过程,更多的是树的剪枝。

    当然,如果把这种方法看做是基于模型的特征选择,也完全没有问题。

     

    基于模型的特征选择

    基于模型的特征选择,可以直接根据模型参数来选择,也可用子集选择的思路选出特征的最优组合。

    模型参数

    对具有线性结构的模型,如线性模型(如 Linear Regression)和对数线性模型(Logistic Regression,最大熵、线性链条件随机场等)等,都可以直接根据权重参数的大小来衡量对应特征的重要程度。

    因为模型的线性结构,某个维度上的特征如果对应的参数绝对值大,这个维度的特征就相对重要;反之,参数绝对值小,则特征相对不重要。

    对基于树结构的模型,如决策树、梯度提升树、随机森林和 XGBoost 等,每一颗树的生成过程,都对应了一个特征选择的过程。如上面关于信息增益一段的描述,可以对模型中涉及的树求平均,来表示特征的重要程度。与其他模型比,树模型的方差较大,因此选出来的特征也相对更不稳定。

    因此,用树模型选择特征时,建议综合多次的模型训练结果。

    如果我们想要得到稀疏特征或者说是对特征进行降维,可以在模型上主动使用正则化技术。使用 L1 正则,调整正则项的权重,基本可以得到任意维度的稀疏特征。

     

    子集选择

    基于模型,我们也可以用子集选择的思路来选取特征。假设特征的维度为 N,要从中选出 n 个(n < N)特征,目标是让模型在选出的特征上效果最好。显然,n 可以取不超过 N 的任意整数值,这就带来了组合爆炸的问题,总共要考虑的情况多到无法计算。解决组合爆炸问题,最常用的思路就是贪心策略(比如,决策树的生成过程中要选择切分特征和切分点,也是组合爆炸问题),常见的有前向搜索和反向搜索两种思路。

    前向搜索::如果我们先从 N 个特征中选出一个最好的特征,然后让其余的 N-1 个特征分别与第一次选出的特征进行组合,从 N-1 个二元特征组合中选出最优组合。之后,再次在上次的基础上,添加一个新的特征,考虑 3 个特征的组合。这种思路有很多种叫法,可以被称为 “递归式特征添加”、“前向搜索” 或“自下向上的搜索”等。

    反向搜索:反之,如果我们的目标是每次从已有特征中去掉一个特征,并从这些组合中选出最优组合。可以称为 “递归式特征消除”、“反向搜索” 或“自上向下的搜索”等。

    显然,子集选择是需要很大的计算量的,因为每种特征组合都要用模型训练一遍。因此,这种方法基本不适合大规模使用,可以用于最后的精挑细选。

     

    小结

    本文从基于统计量和基于模型两个角度,笼统地介绍了特征选择的各种方法和思路。

    基于统计量的特征选择,因为没有模型的参与,计算起来相对简单,可以作为一个特征预处理的过程;

    基于模型的方法,要对模型参数进行学习,因此计算量相对较大,但也更接近于最终目标,即可以训练出一个泛化能力很好的模型。

    因此,这两种方法可以结合起来使用。

    展开全文
  • 文章目录面向对象一般分为特征前言一、封装二、继承、多态总结 前言 首先先来简单看一下什么是面向对象:面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来...

    在这里插入图片描述

    作为一个java码农怎么能不了解面向对象呢!!!,欢迎品尝“面向对象解析”!!!带着思考静心看完

    面向对象一般分为三大特征


    前言

    首先先来简单看一下什么是面向对象:面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)


    一、封装

    什么是封装呢?

    利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
    数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,
    只保留一些对外的接口使其与外部发生联系。
    用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

    这样做有什么优点呢?

    减少耦合:可以独立地开发、测试、优化、使用、理解和修改

    减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块

    有效地调节性能:可以通过剖析来确定哪些模块影响了系统的性能
    提高软件的可重用性

    降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的

    用代码做一个简单的演示,这里通过private将属性name封装起来,只能在本类中才能调用,外部调用只能通过类提供的get,set方法,或其余一些自定义方法

    代码示例

    public class AbstractDemo{
         //封装
        private String name;
        //给外部访问提供方法
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "AbstractDemo{" +
                    "name='" + name + '\'' +
                    '}';
        }
        //省略......
    }
    

    二、继承

    什么是继承呢?

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    继承的优点和缺点?

    优点
    ● 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;
    ● 提高代码的重用性;
    ● 子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有 父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;
    ● 提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的;
    ● 提高产品或项目的开放性。
    缺点
    ● 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;
    ● 降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;
    ● 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修 改,而且在 缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大段的代码需要重构。

    类继承的格式:

    class 父类 {
    }
     
    class 子类 extends 父类 {
    }
    

    代码示例

    上面说到继承可提高代码的重用性,用代码来说一下
    创建一个男人类和女人类:
    男人类(示例):

    public class man {
        private String name;
        private int id;
        public man(String myName, int  id) {
            name = myName;
            id = id;
        }
        public void eat(){
            System.out.println(name+"正在吃");
        }
        public void sleep(){
            System.out.println(name+"正在睡");
        }
        public void play() {
            System.out.println(name+"正在玩");
        }
    }
    

    女人类(示例):

    public class woman {
        private String name;
        private int id;
        public woman(String myName, int  id) {
            name = myName;
            id = id;
        }
        public void eat(){
            System.out.println(name+"正在吃");
        }
        public void sleep(){
            System.out.println(name+"正在睡");
        }
        public void play() {
            System.out.println(name+"正在玩");
        }
    }
    

    上面可以看出男人类和女人类的代码结构几乎一样,这个时候就要去想着把这部分重复代码进行封装,所以java就有了继承的思想,创建一个公共类(父类)
    创建一个父类mankind

    //父类
    public class mankind {
        private String name;
        private int id;
        public mankind(String myName, int myid) {
            name = myName;
            id = myid;
        }
        public void eat(){
            System.out.println(name+"正在吃");
        }
        public void sleep(){
            System.out.println(name+"正在睡");
        }
        public void play() {
            System.out.println(name+"正在玩");
        }
    }
    

    然后男人和女人都可以直接继承这个类

    //女人类继承父类,同时创建一个默认的构造函数
    public class woman extends mankind{
    
        public woman(String myName, int myid) {
            super(myName, myid);
        }
    }
    *********************男人类*********************
    public class man extends mankind{
    
        public man(String myName, int myid) {
            super(myName, myid);
        }
    }
    *********************调用男人类进行测试*********************
     public static void main(String[] args) {
            man m = new man("男人", 007);
            //我们发现在man类中没有定义这些方法,但是却可以调用,这就是继承的特点,子类拥有父类的方法和属性
            //父亲有的,你儿子必须有,儿子有的父亲不一定有
            m.eat();
            m.play();
            m.sleep();
        }
    //打印结果
    男人正在吃
    男人正在玩
    男人正在睡
    

    简单来说就是父亲有的儿子一定要有,青出于蓝而胜于蓝,最差也要等于“蓝”

    Super关键词

    在子类继承父类后在默认构造函数中可以看到一个super关键词,也来说一下它的作用:


    鼠标放上去后会发现super指向的是父类的构造方法这也就是它的作用
    我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
    另外还有一个this关键词这个关键词的作用是:
    指向自己的引用,调用的是自身的方法

    this关键词

    public class man extends mankind{
    
        public man(String myName, int myid) {
            super(myName, myid);
        }
        @Override
        public void eat(){
            System.out.println("男人在睡觉");
        }
        void test(){
            super.eat();
            this.eat();
        }
    }
    *************调用测试**************
     public static void main(String[] args) {
            man m = new man("男人", 007);
            m.test();
        }
       
    

    打印结果
    在这里插入图片描述

    从打印结果可以看出this是指向本身的方法,super是指向父类的方法

    三、多态

    多态其实算是几个特征中比较难以理解的,但是在编码过程中其实又会经常使用多态这个概念,先来看一下多态的官方解释:

    多态是同一个行为具有多个不同表现形式或形态的能力

    多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
    在这里插入图片描述
    多态性是对象多种表现形式的体现。

    现实中,比如我们按下 F1 键这个动作:
    1、如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
    2、如果当前在 Word 下弹出的就是 Word 帮助;
    在 Windows 下弹出的就是 Windows 帮助和支持。
    3、同一个事件发生在不同的对象上会产生不同的结果。

    仔细思考一下大概能理解多态的概念,但是有感觉“药性”不够,接下来就共同看一下多态到底是什么
    先说一下多态的实现有三个条件

    1.要有继承(实现implements)
    2.要有重写(overWrite&overRide)
    3.父类引用指向子类对象

    多态也分为两种形式:

    编译型多态

    编译型多态就是在编译过程中进实现了多态,重载就是最标志的编译型多态

    • 编译期间就能决定目标方法
    • 通过oveload重载实现
    • 方法名相同,参数不同

    代码示例

    public class overLoad001 {
        public int overLoad(int a){
            return a;
        }
        public int overLoad(int a,int b ){
          return a+b;
        }
        public int  overLoad(int a,int b,int c){
            return a+b+c;
        }
    
        public static void main(String[] args) {
            overLoad001 overLoad001= new overLoad001();
            //在编译过程中就去找到对应的目标方法
            System.out.println(overLoad001.overLoad(1));
            System.out.println(overLoad001.overLoad(1,3,5));
            System.out.println(overLoad001.overLoad(1,2));
        }
    }
    

    运行结果
    在这里插入图片描述

    运行型多态

    顾名思义就是在运行的时候才会去确定目标方法

    • 运行时才会决定目标方法,由jvm决定目标方法
    • 同名同参
    • 重写和继承实现

    趁机说一下多态又分为向上转型和向下转型

    向上转型

    • 向上转型 父类 父类对象 = 子类实例
    • 父类有的方法,都可以调用,如果被子类重写了,则会调用子类的方法
    • 父类没有的方法,而子类存在,则不能调用。
    • 向上转型只对方法有影响,对属性没影响。属性不存在重写。

    接下来通过代码来说明,先创建两个类,父类和子类
    代码如下(示例):

    //先创建一个父类,拥有两个方法
    public class father {
        void eat(){
            System.out.println("父亲在吃饭");
        }
        void sleep(){
            System.out.println("父亲在睡觉");
        }
    }
    
    //创建一个子类,然后继承父类,同时也有两个和父类相同的方法
    public class son extends father{
        void eat(){
            System.out.println("儿子在吃饭");
        }
        void sleep(){
            System.out.println("儿子在睡觉");
        }
    }
    
    
    //创建一个测试类
    public class Test003 {
        public static void main(String[] args) {
        //注意这个创建对象方式上的不同
        //符合向上转型的规则 父类 父类对象 = 子类实例
            father father = new son();
            father.eat();
            father.sleep();;
        }
    }
    
    

    打印结果
    在这里插入图片描述

    father father = new son();
    这种可以看到我们创建的是一个father类型的对象,但是在调用方法确实son中的方法,这其实就是一种多态的体现
    当子类中重写了父类的方法那么就会去执行子类中的方法那么通过子类没有去实现父类中的方法会是什么效果呢

    public class father {
        void eat(){
            System.out.println("父亲在吃饭");
        }
        void sleep(){
            System.out.println("父亲在睡觉");
        }
        //创建一个新的方法,子类没有进行重写
        void run(){
            System.out.println("父亲在跑步并且子类没有实现我");
        }
    }
    
    

    在这里插入图片描述
    测试结果应该和你想的一样,当子类中额米有重写父类中的方法的时候当然是去执行父类中的方法了
    在这里插入图片描述
    简单来说就是子类重写父类的方法那么就就是子类的实例,在jvm调用的时候把就会去执行子类中的方法,当子类没有重写父类方法的时候那么该方法就是指向父类实例,在调用的时候自然就是调用父类中的方法
    以上是多态的向上转型好处是:

    • 减少重复代码,使代码变得简洁。
    • 提高系统扩展性。
    • 用于参数统一化,假设父类有n个子类,方法要接受子类的实例,如果没有向上转型,就需要定义n个方法接收不同的对象。

    向下转型

    对象的向下转型:子类 子类对象 = (子类)父类实例
      接着上面的例子我们在son类中创建一个父类中不存在的方法

    public class son extends father{
        void eat(){
            System.out.println("儿子在吃饭");
        }
        void sleep(){
            System.out.println("儿子在睡觉");
        }
        //父类中没有的方法
        void play(){
            System.out.println("儿子在玩");
        }
    }
    
    

    然后我们去测试类中调用play方法
    在这里插入图片描述
    可以看到这个时候编译不通过,也就是说向上转型不能去调用父类中没有的子类方法,那么这个时候就去试试向下转型
    在这里插入图片描述
    这里我们看到按照向下转型的语法格式子类 子类对象 = (子类)父类实例我们虽然可以调用子类中的play方法但是却会在运行时报错这是因为

    向下转型之前一定要进行向上转型!!
    否则在转型时会出现ClassCastException(类型转换异常–运行时异常)
    问题: 如果向下转型存在安全隐患,那么如何转型才靠谱?
       答:先判断在转型(依靠instanceof关键字实现)引用名 instanceof 类 表示该引用是否能表示该类实例,返回boolean类型。

    那么我们先进行向上转型再进行向下转型试一下
    在这里插入图片描述

    这时候我们发现运行通过成功调用play();
    向下转型一般是在类需要调用子类的扩充方法时,才需要向下转型。

    总结

    封装

    什么是封装?

    利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
    数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,
    只保留一些对外的接口使其与外部发生联系。
    用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

    封装的好处

    • 减少耦合:可以独立地开发、测试、优化、使用、理解和修改
    • 减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块
    • 有效地调节性能:可以通过剖析来确定哪些模块影响了系统的性能
      提高软件的可重用性
    • 降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的

    继承

    什么是继承呢?

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    继承的优点和缺点?

    优点
    ● 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;
    ● 提高代码的重用性;
    ● 子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有 父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;
    ● 提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的;
    ● 提高产品或项目的开放性。
    缺点
    ● 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;
    ● 降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;
    ● 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修 改,而且在 缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大段的代码需要重构。

    多态

    多态的好处

    1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他 任何圆形几何体,如圆环,也同样工作。
    2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
    3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
    4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
    5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

    看到这如果感觉有所帮助的话就点一个小小的关注吧
    在这里插入图片描述

    展开全文
  • python是面向对象的语言,也支持面向对象编程的特征:继承、封装(隐藏)、多态。 封装(隐藏) 隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将"细节封装起来",只对外暴露”相关调用方法“。 通过...

    总体说明

    python是面向对象的语言,也支持面向对象编程的三大特征:继承、封装(隐藏)、多态。

    • 封装(隐藏)
      • 隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将"细节封装起来",只对外暴露”相关调用方法“。
      • 通过前面学习的"私有属性"、“私有方法"的方法,实现"封装”。python追求简洁的语言,没有严格的语法级别的”访问控制符“,更多的是依靠程序员自觉实现。
    • 继承
      • 继承可以让子类具有父类的特性,提高了代码的重用性。
      • 从设计上是一个增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已有的算法。
    • 多态
      • 多态是指同一个方法调用由于对象不同会产生不同的行为。生活中这样的例子比比皆是:同样是休息方法,人不同,休息方法不同。张三休息是睡觉,李四休息是玩游戏,程序员休息是”敲几行代码“。

    备注:
    更多精彩博客,请访问:聂发俊的技术博客
    对应视频教程,请访问:python400
    完整markdown笔记,请访问: python400_learn_github

    展开全文
  • 放弃幻想,全面拥抱Transformer:自然语言处理特征抽取器(CNN/RNN/TF)比较 一、nlp四大类任务 一类是序列标注,这是最典型的NLP任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可以归入这一类...
  • 结果显示,胭脂坝岩体51采点、348样品的平均体积磁化率(Km)值普遍小于100μSI,总体较低。磁滞回线和热磁曲线特征表明,岩体磁组构主要由顺磁性矿物控制。大部分样品的校正磁化率各向异性度(PJ)值小于1.10,平均为...
  • 什么是面向对象? 学习了这么长时间的python,经常会接触到一些词汇,例如...总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。 这是一很官方的回答,可...
  • 通过对具有示踪意义的元素及其比值的对比分析,3样品总体上均不具有典型的沉积岩特征,应该是由酸性或酸性偏碱性火山物质(降落的或陆源搬运的)在地表覆水较浅的弱氧化条件下经原地淋滤、蚀变形成的。原岩蚀变程度较...
  • 特征选择方法学习笔记(

    千次阅读 2013-12-14 15:47:45
    之前已经看过两种特征选择的方法,一是从局部结构出发,一是从整体优化出发。这两中方法都取得了比较好的效果。那么,有没有既考虑局部结构又顾及总体优化呢的方法呢?聪明的研究者们的确想到了这两手抓两手都要...
  • 给地铁沿线地裂缝的防灾减灾提供科学依据,通过野外地质环境和地质灾害调查,着重查明了西安地铁号线沿线地裂缝的活动情况和发育特征,并根据与地铁线路的具体交汇特点,将其划分成12区段进行了详细描述;...
  • 本研究利用16对微卫星引物对长江水系中华绒螯蟹3育种基础群体(第一群体采自长江口崇明团结沙,第二群体采自长江扬中江段,第群体采自长江靖江、六合、江浦江段)共计89个体的遗传特征进行分析.结果表明:3...
  • 总体结构

    2011-06-20 22:29:46
    基于字符串匹配的相似性排重 除去上下两接口,剩下的部分大体分为四块: 预处理、生成散列值、提取特征值、相似度计算 一 预处理 输入:带有汉字、字母、数字、... 提取特征值 输入:只含有散列值的Linke...
  • 西藏山南地区琼结南部上叠统郎杰学群由轻微变质的泥质岩和碎屑岩组成,其中,砂岩主要为(岩屑)长石(杂)砂岩和(长石)岩屑(杂)砂岩,碎屑的分选和磨圆度较差,成分和结构成熟度较低,经历了压溶、交代及胶结...
  • 弧形构造带控气特征

    2020-07-09 17:53:59
    其中,第一度和第二度弯曲总体上控制了煤层气的赋存特征及补给、运移和逸散条件,第度弯曲及其伴生的横张断裂控制了煤层气富集区域的平面展布。多经历三度弯曲的弧形构造组成弧形构造带,引入处于徐宿弧形构造带...
  • (2)利用关联规则方法计算各个类型特征之间的关联度,将不同文本类型中较明显的词作为聚类的对象(较明显的词,这表达好牵强,什么样子的算明显的????应该有一种算法把,评价的而依据)搜搜索出在给定样本...
  • 认为惠民凹陷的总体构造特征是正断层发育,构造类型以伸展断块构造(半地堑和半地垒)为主。凹陷内一级正断层主要控制着凹陷的沉积和构造特征,二级断层控制着构造带(凹陷内的半地垒)的形成,级及四级断层控制着...
  • 算法考虑了几何误差度量算子的三个因子:折叠边的欧氏距离、折叠边二面角和顶点到星型邻域平面的距离;引入模型属性特征权重值,将几何误差和属性误差加权作为总体误差进行简化,并对简化质量进行了合法性检查。实验...
  • 针对深井大倾角工作面覆岩破断和运移规律的复杂性,通过陈蛮庄...通过经验公式计算出三带高度,并运用微震监测系统,检验了经验公式计算的三带高度,并且进一步从工作面垂直、倾向和走向三个方面分析上覆岩层的破坏特征
  • 在试验组生物气生成整体上经历了3阶段:第一阶段是迅速上升期,第二阶段是平稳下降期,第阶段为趋于稳定期。但第一阶段的不同煤阶煤样生气特征存在差异:淮南肥煤较龙口褐煤生气较早。生物气生成前期,生物产甲烷...
  • 新店矿区煤炭资源丰富,但断裂构造较为发育,为了能有效开发区内的煤炭资源,以矿区内填图、钻探、测井等勘探...在构造总体复杂的背景下,划分出3适宜矿井建设的中等构造区块,单矿井建设规模以30万~45万t为宜,不能过大。
  • 通过使用三个自设计,自上而下和自下而上的交互方式的特殊设计的转换器,它将任何要素金字塔转换为相同大小但具有更丰富上下文的另一个要素金字塔。 FPT充当通用的视觉骨干,具有合理的计算开销。我们使用各种骨干网...
  • 通过建立标志层与区域标志层进行对比与聚煤分析,得出的结论为:富源地区上二叠系是以细砂岩、粉砂岩、泥质粉砂岩、泥岩、菱铁质粉砂岩和煤为其地层特征以及富煤二矿主采煤层均是龙潭组地层,龙潭组总体上表现为一大...
  • 为了实现装备行为特征的不确定性、不一致性的统计描述,以自行火炮座椅系统为例,通过引入结构参数k、c及输入参数m三个随机变量,建立座椅系统的随机动力学方程;设定k、c和m随机变量的分布特征,结合虚拟样机技术,开发...
  • 视觉注意模型中的颜色特征划分

    千次阅读 2015-11-25 10:25:41
    昨天看了有关于视觉注意模型的算法的论文,说实话看懂的不多,所以就试着先试试一下图像的早期处理,视觉注意的图像早期处理分为块,分别是亮度、色彩和方向特征的提取,其中亮度就是做灰度图,这一部分在前面的...
  • 本文主要想说明三个问题: 一是样本的数字特征,二是样本方差和样本均值的方差的区别,三是三大分布怎样构造抽样分布。 (一) 为了简便,假设有一个正态分布总体ξ~N(µ,σ2),设想我们从中随机抽取n个样本...
  • 结果表明:所提方法有效提取了植被间的光谱特征波段, 分别为1111~1132 nm、1466~1522 nm和1577~1750 nm, 三个波段全部位于红外区域; 在光谱特征波段范围内, 利用马氏距离-光谱角法可对不同植被类型进行有效识别, ...
  • 分析了宁夏鸳鸯湖矿区中侏罗统延安组地层沉积特征,说明其整体呈现出明显的段式充填特点,可划分为5岩性段和9充填层序,各岩性段以沉积间断面或稳定煤层的顶界面作为分界。煤层沉积主要受古地理环境影响,局部受...
  • 根据岩性特征,西山窑组分为下、中、上三个含煤岩段,共含可采煤层11层,其中B10煤层厚度大,为全区可采稳定煤层,分布在中段。利用煤层组合特征、标志性煤层等多种综合对比手段,较好地解决了煤层对比问题。井田煤炭资源...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 453
精华内容 181
关键字:

总体三个特征