我遇到了这个答案阻止移动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)
类似于自定义交叉验证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一样工作?
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) 枚举类的默认初始化/构造是否定义了行为?
这是一个最小的示例(在线试用)
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上查询了此信息,但没有找到有关它的任何相关信息-是否也可以获得标准参考?
对于同一个程序:
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
我有一个 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) 要求表达式通常如下所示: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) CLion 已经preamble-*在标准/tmp目录中生成了多个 ~100M 大小的文件。
感谢我可以使用折叠表达式实现 max(A, max(B, max(C, D))) 吗?我知道在折叠表达式中使用 std::min 的一种工作方法(min2如下)。不过,我很好奇,为什么下面的方法min1和min3被认为是未定义的行为(貌似给出的警告)?
根据我的理解,表达式应该在两种情况下从左到右求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) GridSearchCV 实现了一种拟合方法,在该方法中执行 n 重交叉验证以确定最佳参数。之后,我们可以使用 Predict() 直接将最佳估计器应用于测试数据 - 点击此链接: - http://scikit-learn.org/stable/auto_examples/grid_search_digits.html
这里说“该模型在完整的开发集上进行了训练”
然而,我们在这里只应用了 n 折交叉验证。分类器是否也在整个数据上进行自我训练?或者只是在应用预测时选择 n 倍中具有最佳参数的训练有素的最佳估计器?
c++ ×5
python ×4
c++11 ×3
scikit-learn ×3
c++17 ×2
apache-spark ×1
c++-concepts ×1
c++20 ×1
clion ×1
datetime ×1
numpy ×1
pyspark ×1
unique-ptr ×1
validation ×1