小编no_*_*123的帖子

用其他类型的函数声明违反C++中的类型安全性?

我是C++的新手,只是尝试一下.我坚持使用以下代码:

#include<iostream>  

void t(){
    std::cout << "func t()" << std::endl;
}

int main(int argc, char **argv) {
    int t(); //declaration of function
    std::cout << t() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出为"func t()\n6295712".我担心的是由t()打印的随机(?)数字.

我的问题是:为什么允许声明另一个返回类型的函数(这里:int而不是void)而没有任何错误?这不违反类型安全性,因为我从未定义过具有返回类型"int"的函数吗?

使用的编译器:gcc(Ubuntu 4.8.4-2ubuntu1~14.04.1)4.8.4

c++ type-conversion type-safety

7
推荐指数
1
解决办法
215
查看次数

scikit-learn中的参数oob_score_等于准确度还是错误?

我从Python scikit-learn包中实现了随机森林分类器(RF)以解决ML问题.在第一阶段,我使用交叉验证来检查其他算法,现在我可以选择RF.

后来我还查看了RF的OOB估计告诉我的内容.但是,当我将'oob_score_'中的回报与我的CV结果进行比较时,我有很大的差异.

scikit-learn文档告诉我:

oob_score:bool

是否使用袋外样本来估计泛化误差.

由于doc,我假设参数'oob_score_'是误差估计.但是寻找原因,我也想到它可能实际上估计了准确性而不是这个 - 至少有点 - 更接近我的简历结果.我也检查了代码,更多的是相信这是准确性,但我想确定...(在这种情况下,我发现该文档误导BTW).

oob_score_是scikit-learn准确度还是误差估计?

python python-2.7 random-forest scikit-learn

5
推荐指数
1
解决办法
4145
查看次数

定义抽象类的三种方式的差异

我发现了多种(略有不同)在Python中定义抽象类的方法。我阅读了文档,但在stackoverflow上也找不到答案。

这三个示例之间的主要区别(请参见下面的代码)是:

  • Aabc.ABCMeta显式设置新的元类
  • B 继承自 abc.ABC
  • C继承objects但定义@abc.abstractmethod

似乎AB没什么不同(即也B有新的metaclass abc.ABCMeta)。但是,类C仍然是type type

不为其定义元类有C什么影响?什么时候需要定义元类,或者不abc.ABCMeta为抽象类定义元类是错误/不好的风格?但是,该班级的C表现似乎符合我对ABC的期望。

import abc

class A(metaclass=abc.ABCMeta):
    # Alternatively put __metaclass__ = abc.ABCMeta here
    @abc.abstractmethod
    def foo(self):
        raise NotImplementedError


class B(abc.ABC):

    @abc.abstractmethod
    def foo(self):
        raise NotImplementedError


class C(object):

    @abc.abstractmethod
    def foo(self):
        raise NotImplementedError


class Aimpl(A):

    def foo(self):
        print("Aimpl")


class Bimpl(B):
    def foo(self):
        print("Bimpl")


class Cimpl(C):
    #def foo(self):
     #   print("Cimpl") …
Run Code Online (Sandbox Code Playgroud)

python abstract-class python-3.x

3
推荐指数
1
解决办法
366
查看次数