小编tan*_*ngy的帖子

Non-Movable C++ 17独特指针

我遇到了这个答案阻止移动unique_ptr C++ 11.然而,当在线编译器上进行尝试时,这适用于C++ 11(std::move编译器错误)但是使用C++ 17,我发现std::move下面的内容是成功的.编译器不应该在该行上抛出错误吗?此外,如果C++ 17中的某些语义发生了变化,那么在C++ 17及更高版本中创建不可移动的unique_ptr的正确方法是什么.

template <typename T>
using scoped_ptr = const std::unique_ptr<T>;

int main()
{
    auto p = scoped_ptr<int>(new int(5));
    auto p2 = std::move(p); // should be error?
    std::cout << *p2 << std::endl; // 5
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里尝试一下.

c++ unique-ptr c++11 c++17

18
推荐指数
1
解决办法
722
查看次数

如何通过索引自定义sklearn交叉验证迭代器?

类似于自定义交叉验证split sklearn我想为GridSearchCV定义自己的拆分,我需要自定义内置的交叉验证迭代器.

我想将自己的一组列车测试索引传递给GridSearch,而不是允许迭代器为我确定它们.我浏览了sklearn文档页面上的可用cv迭代器但找不到它.

例如,我想实现类似这样的数据有9个样本2折cv我创建了自己的一套训练测试索引

>>> train_indices = [[1,3,5,7,9],[2,4,6,8]]
>>> test_indices = [[2,4,6,8],[1,3,5,7,9]]
                 1st fold^    2nd fold^
>>> custom_cv = sklearn.cross_validation.customcv(train_indices,test_indices)
>>> clf = GridSearchCV(X,y,params,cv=custom_cv)
Run Code Online (Sandbox Code Playgroud)

什么可以像customcv一样工作?

python validation scikit-learn cross-validation

10
推荐指数
2
解决办法
6415
查看次数

GridSearchCV可以与自定义分类器一起使用吗?

IVE创建的自定义手工编码的分类器,其实现了标准sklearn分类器函数(fit(),predict()predict_proba()).可以直接与sklearn实用程序一起使用GridSearchCV()还是应该添加任何附加内容?

编辑1:根据cel的建议,我尝试直接应用它

第一步是为解释添加get_params和set_params 这里.确实完整的交叉验证程序确实运行但最终出现以下错误

return self._fit(X, y, ParameterGrid(self.param_grid))
best_estimator.fit(X, y, **self.fit_params)
AttributeError: 'NoneType' object has no attribute 'fit'
Run Code Online (Sandbox Code Playgroud)

编辑2:添加分类器代码(基于theano的Logistic回归分类器)

class LogisticRegression:
    """ Apply minibatch logistic regression

    :type n_in: int
    :param n_in: number of input units, the dimension of the space in
                 which the datapoints lie

    :type n_out: int
    :param n_out: number of output units, the dimension of the space in
                  which the labels lie

    """

    def __init__(self,n_in,n_out,batch_size=600,learning_rate=0.13,iters=500,verbose=0):
        self.n_in = n_in
        self.n_out …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

8
推荐指数
1
解决办法
3084
查看次数

枚举类默认初始化

枚举类的默认初始化/构造是否定义了行为?

这是一个最小的示例(在线试用

enum class ALPHA{
    X = 0,
    Y = 1,
    Z = 2,
};

int main()
{
    ALPHA a = ALPHA(); // use default constructor
    ALPHA b{}; // use default initialization
    std::cout <<static_cast<int>(a) << std::endl; // 0
    std::cout <<static_cast<int>(b) << std::endl; // 0
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在两种情况下我都为零。那么默认初始化是否总是选择第一个枚举类型(例如,此处X = 0)?我知道对于标准枚举它是UB,但是我不确定枚举类的语义吗?我也在CPPReference查询了此信息,但没有找到有关它的任何相关信息-是否也可以获得标准参考?

c++ c++11

8
推荐指数
2
解决办法
1288
查看次数

重新解释铸造值因编译器而异

对于同一个程序:

const char* s = "abcd";
auto x1 = reinterpret_cast<const int64_t*>(s);
auto x2 = reinterpret_cast<const char*>(x1);
std::cout << *x1 << std::endl;
std::cout << x2 << std::endl; // Always "abcd"
Run Code Online (Sandbox Code Playgroud)

在gcc5(链接):139639660962401
在gcc8(链接):1684234849

  1. 为什么值根据不同的编译器版本而有所不同?
  2. 什么是编译器安全的方式从const char*移动到int64_t和向后(就像在这个问题 - 不是实际的整数字符串,而是与其他字符一起)?

c++ c++11

6
推荐指数
1
解决办法
224
查看次数

Spark 在 Pandas 数据帧转换期间如何处理时间戳类型?

我有一个 pandas 数据框,其中包含 pandas.tslib.Timestamp 类型的时间戳列。我查看了“createDataFrame”(链接到源)中的 pyspark 源代码,似乎它们将数据转换为 numpy 记录数组到列表:

data = [r.tolist() for r in data.to_records(index=False)]
Run Code Online (Sandbox Code Playgroud)

但是,时间戳类型在此过程中转换为长整型列表:

> df = pd.DataFrame(pd.date_range(start=datetime.datetime.now(),periods=5,freq='s'))
> df
0 2017-07-25 11:53:29.353923
1 2017-07-25 11:53:30.353923
2 2017-07-25 11:53:31.353923
3 2017-07-25 11:53:32.353923
4 2017-07-25 11:53:33.353923
> df.to_records(index=False).tolist()
[(1500983799614193000L,), (1500983800614193000L,), (1500983801614193000L,), (1500983802614193000L,), (1500983803614193000L,)]
Run Code Online (Sandbox Code Playgroud)

现在,如果我将这样的列表传递给 RDD,执行一些操作(不触及时间戳列),然后调用

> spark.createDataFrame(rdd,schema) // with schema mentioning that column as TimestampType
TypeError: TimestampType can not accept object 1465197332112000000L in type <type 'long'>
    at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193)
    at org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:234)
    at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152)
    at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:63)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323) …
Run Code Online (Sandbox Code Playgroud)

python datetime numpy apache-spark pyspark

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

概念要求中的析取

要求表达式通常如下所示:requires ( parameter-list(optional) ) { requirement-seq }

是否可以在不使用 . 的情况下形成析取(||)作为序列中的要求requires constraint-expr。例如:

template<typename T> concept FooBarExpert = 
requires(T a, T b) { 
    {a.foo(b)} || {a.bar(b)}; // Req 1
    { a.baz() }; // Req 2
    // and onward
}; 
Run Code Online (Sandbox Code Playgroud)

c++ c++-concepts c++20

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

CLion 填充临时目录

CLion 已经preamble-*在标准/tmp目录中生成了多个 ~100M 大小的文件。

  1. 关于如何禁用此功能的任何建议?
  2. 或者,有关如何更改默认临时目录的任何建议?

clion

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

为什么在这些折叠表达式中使用 std::min 是未定义的行为?

感谢我可以使用折叠表达式实现 max(A, max(B, max(C, D))) 吗?我知道在折叠表达式中使用 std::min 的一种工作方法(min2如下)。不过,我很好奇,为什么下面的方法min1min3被认为是未定义的行为(貌似给出的警告)?

根据我的理解,表达式应该在两种情况下从左到右求myMin值,不断更新并将最后一个值分配回myMin. 此外,最终答案在 gcc 和 clang 上也总是正确的。

template <typename... Args>
auto min1(const Args&... anArgs) {
    constexpr size_t N = sizeof...(anArgs);
    auto myMin = std::get<0>(std::tuple(anArgs...));
    myMin = std::get<N-1>(std::tuple((myMin = std::min(myMin, anArgs))...));
    return myMin;
}

template <typename... Args>
auto min2(const Args&... anArgs) {
    return std::min({anArgs...});
}

template <typename... Args>
auto min3(const Args&... anArgs) {
    auto myMin = (anArgs, ...);
    myMin = ((myMin = …
Run Code Online (Sandbox Code Playgroud)

c++ fold-expression c++17

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

对 GridSearchCV 的工作感到困惑

GridSearchCV 实现了一种拟合方法,在该方法中执行 n 重交叉验证以确定最佳参数。之后,我们可以使用 Predict() 直接将最佳估计器应用于测试数据 - 点击此链接: - http://scikit-learn.org/stable/auto_examples/grid_search_digits.html

这里说“该模型在完整的开发集上进行了训练”

然而,我们在这里只应用了 n 折交叉验证。分类器是否也在整个数据上进行自我训练?或者只是在应用预测时选择 n 倍中具有最佳参数的训练有素的最佳估计器?

python machine-learning scikit-learn

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