小编Tho*_*mas的帖子

Caret in R:设置allowParallel的核心数量?

我正在使用R的插入符号包,并且在训练函数(训练)中我使用了allowParallel参数,它可以工作.但是,它使用了所有核心,并且由于培训在我的本地PC上运行,我宁愿为自己留下一个核心,以便能够在训练模型时工作.有没有办法做到这一点?

根据我的收集,似乎不同的模型类型可能使用不同的并行化包.我在windows上工作,所以我猜它不是在使用doMC(我知道如何设置内核的数量......)

parallel-processing r r-caret

4
推荐指数
1
解决办法
1720
查看次数

Spark 数据框列命名约定/限制

我的 (Py)Spark 列名称的默认命名(从收到的 .csv 文件导入)现在多次遇到问题。似乎与 Spark 混淆的事情是 MixedCase 和诸如 . 或 - 在列名称中。所以我决定找出实际保存的列名,并发现以下内容:

该网站似乎只建议使用小写名称:

Hive 将表、字段名称以小写形式存储在 Hive Metastore 中。Spark 保留了 Dataframe Parquet Files 中字段名称的大小写。当使用 Spark SQL 创建/访问表时,Spark 将详细信息存储在表属性中(在 hive 元存储中),从而保持区分大小写。当使用 Hive Metastore 通过 Spark SQL 访问镶木地板记录时,这会导致奇怪的行为。

Amazon Athena似乎证实了这一点,并补充说“_”是唯一的保存特殊字符:

...但 Spark 需要小写的表名和列名。

Athena 表、视图、数据库和列名称不能包含除下划线 (_) 之外的特殊字符。

我从中得出的结论是,如果可能的话,我应该尝试只使用小写的列名,并使用 _ 作为单词之间的分隔符,以确保与可能出现在我的 Spark 工作流程中的工具的最大交叉兼容性。这样对吗?是否有理由更喜欢空格而不是下划线,还有什么需要考虑的吗?

我意识到在许多情况下,将所有列重命名为上述模式时我可能会过度使用它 - 但是,我宁愿避免在项目中间遇到与命名相关的问题,因为我发现这些错误有时难以调试。

hive naming-conventions apache-spark pyspark amazon-athena

4
推荐指数
1
解决办法
7738
查看次数

使用 Keras LSTM 进行多对多分类

我是 Keras 中 RNN/LSTM 的新手,需要关于是否/如何将它们用于我的问题的建议,这是多对多分类。

我有许多时间序列:大约 1500 次“运行”,每次持续大约 100-300 个时间步长并且有多个通道。我知道我需要将数据零填充到最大时间步数,因此我的数据如下所示:

[nb_samples, timesteps, input_dim]: [1500, 300, 10]
Run Code Online (Sandbox Code Playgroud)

由于即使对于人类来说,在不了解过去的情况下也无法获得单个时间步的标签,因此我可以进行特征工程并训练经典分类算法,但是,我认为 LSTM 非常适合这里。这个答案告诉我,对于 Keras 中的多对多分类,我需要将 return_sequences 设置为 True。但是,我不太明白如何从这里开始 - 我是否使用返回序列作为另一个普通层的输入?我如何将它连接到我的输出层?

非常感谢任何帮助、提示或教程链接 - 我发现了很多用于多对一分类的东西,但对多对多没有什么好处。

python machine-learning lstm keras tensorflow

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

PySpark:TypeError:“str”对象在数据帧操作中不可调用

我正在循环中从文件夹中读取文件并从中创建数据帧。但是,我收到了这个奇怪的错误TypeError: 'str' object is not callable。请在此处找到代码:

for yr in range (2014,2018):
  cat_bank_yr = sqlCtx.read.csv(cat_bank_path+str(yr)+'_'+h1+'bank.csv000',sep='|',schema=schema)
  cat_bank_yr=cat_bank_yr.withColumn("cat_ledger",trim(lower(col("cat_ledger"))))
  cat_bank_yr=cat_bank_yr.withColumn("category",trim(lower(col("category"))))
Run Code Online (Sandbox Code Playgroud)

代码运行一次迭代,然后停在该行

cat_bank_yr=cat_bank_yr.withColumn("cat_ledger",trim(lower(col("cat_ledger")))) 
Run Code Online (Sandbox Code Playgroud)

出现上述错误。

任何人都可以帮忙吗?

python pyspark pyspark-dataframes

3
推荐指数
2
解决办法
5415
查看次数

从python包资源中提取文件夹

在我尝试分发的包的本地版本中,我有以下代码:

shutil.copytree(WWW_LOCATION, dir_path)
Run Code Online (Sandbox Code Playgroud)

WWW_LOCATION 是我的 python 模块的子文件夹,其中包含一些静态文件和文件夹:

dv
  \dv
     mytool.py
     \www_folder
       \somefolders_and_files
  setup.py
  MANIFEST.in
  README.md
  LICENSE
  setup.cfg
Run Code Online (Sandbox Code Playgroud)

在我的代码中,在执行之后,我需要将整个文件夹与一些动态生成的文件一起复制到用户指定的位置。这在本地效果很好,但我读到了通过 pypi 分发的内容,我必须小心,因为文件可能会被压缩。

这个答案解释了如何访问资源中的内容(=在 python 中读取它们),但是,一次只能访问一个文件。将文件夹内容复制到指定位置的安全方法是什么?

python file package

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

std :: vector <decltype(iter)> - decltype的有效用法?

这是我第一次使用decltype,我不确定我是否正确使用它.代码确实编译,似乎适用于POD,如char和int.

但是,我想知道我是否会遇到更复杂数据类型的任何问题 - 我被其他人警告过,auto和decltype之类的东西很快就会产生意想不到的结果.

我的假设是这个模板适用于任何具有operator!=定义的类型T. 我应该关注哪些边缘情况?

#include <forward_list>
#include <iostream>
#include <cstdlib>
#include <vector>

template<typename T>
bool isPalindrome(const std::forward_list<T>& lf)
{
  auto iter = lf.begin();
  std::vector<decltype(iter)> bv; // <-- Correct usage?

  while(iter!= lf.end())
    { bv.push_back(iter++); }

  int istop = bv.size()/2 + bv.size()%2;
  iter = lf.begin();

  for(int i = bv.size()-1; i>=istop; i--, iter++)
  { if( *iter != *(bv[i])) return false; }
  return true;
}

int main(int argc, char* argv[])
{
  std::forward_list<int> list = {0,1,2,1,0};
  std::cout << "Is palindrome: " …
Run Code Online (Sandbox Code Playgroud)

c++ decltype c++11

2
推荐指数
1
解决办法
132
查看次数

从PySpark阵列列中删除重复项

我有一个PySpark数据框,其中包含一ArrayType(StringType())列。该列包含数组中需要删除的重复字符串。例如,一行条目可能看起来像[milk, bread, milk, toast]。假设我的数据框已命名df,我的列已命名arraycol。我需要类似的东西:

df = df.withColumn("arraycol_without_dupes", F.remove_dupes_from_array("arraycol"))
Run Code Online (Sandbox Code Playgroud)

我的直觉是对此有一个简单的解决方案,但是在浏览stackoverflow 15分钟后,我发现没有比分解该列,删除整个数据帧上的重复项然后再进行分组更好的了。目前已经得到了成为一个更简单的方法,我只是没想到吧?

我正在使用Spark版本'2.3.1'。

python apache-spark apache-spark-sql pyspark

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

尝试获取R的插入符号包中的类概率时出错

我发现了与此类似的问题,但并没有解决我的问题:我使用插入号和游侠方法来拟合随机森林,然后使用预测来预测我的评估数据。这可行。但是,当我尝试获取预测概率时,出现以下错误:

[.data.frame(out,,obsLevels,drop = FALSE)中的错误:未定义的列已选择

代码(示例)

require(caret)

mtcars$carb <- as.factor(mtcars$carb)

tuneGrid <- expand.grid(mtry = c(10), min.node.size = c(1), splitrule = "extratrees")
rf_model<-train(carb~.,data=mtcars,method="ranger",
                trControl=trainControl(method="none")
                , tuneGrid = tuneGrid
)

predict(rf_model, mtcars, type="prob")
Run Code Online (Sandbox Code Playgroud)

我确保碳水化合物是其他地方建议的因素。

有什么想法吗?

r r-caret

0
推荐指数
1
解决办法
682
查看次数