小编Tgs*_*591的帖子

Pandas应用键错误

我是Python和数据科学的新手.我正在进行kaggle Outbrain竞赛,我的代码中引用的所有数据集都可以在https://www.kaggle.com/c/outbrain-click-prediction/data找到.

关于问题:我有一个带有列的数据框['document_id', 'category_id', 'confidence_level'].我想添加第四列,'max_cat'它返回与行的'category_id'最大值对应的'confidence_level''document_id'.

import pandas as pd
import numpy

main_folder = r'...filepath\data_location' + '\\'

docs_meta = pd.read_csv(main_folder + 'documents_meta.csv\documents_meta.csv',nrows=1000)
docs_categories = pd.read_csv(main_folder + 'documents_categories.csv\documents_categories.csv',nrows=1000)
docs_entities = pd.read_csv(main_folder + 'documents_entities.csv\documents_entities.csv',nrows=1000)
docs_topics = pd.read_csv(main_folder + 'documents_topics.csv\documents_topics.csv',nrows=1000)

def find_max(row,the_df,groupby_col,value_col,target_col):
   return the_df[the_df[groupby_col]==row[groupby_col]].loc[the_df[value_col].idxmax()][target_col]

test = docs_categories.copy()
test['max_cat'] = test.apply(lambda x: find_max(x,test,'document_id','confidence_level','category_id'))
Run Code Online (Sandbox Code Playgroud)

这给了我错误: KeyError: ('document_id', 'occurred at index document_id')

任何人都可以帮助解释为什么会发生此错误,或者如何以更有效的方式实现我的目标?

谢谢!

python group-by pandas keyerror kaggle

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

自定义注释Seaborn Heatmap

我在Python中使用Seaborn来创建Heatmap.我能够使用传入的值来注释单元格,但是我想添加表示单元格意味着什么的注释.例如,0.000000我不想仅仅看到,而是希望看到相应的标签,例如"Foo"或0.000000 (Foo).

热图功能的Seaborn文档有点神秘,我相信参数是关键所在:

annot_kws : dict of key, value mappings, optional
  Keyword arguments for ax.text when annot is True.
Run Code Online (Sandbox Code Playgroud)

我尝试设置annot_kws值的别名字典,即{'Foo' : -0.231049060187, 'Bar' : 0.000000}等,但我得到一个AttributeError.

这是我的代码(我在这里手动创建了数据数组以实现可重现性):

data = np.array([[0.000000,0.000000],[-0.231049,0.000000],[-0.231049,0.000000]])
axs = sns.heatmap(data, vmin=-0.231049, vmax=0, annot=True, fmt='f', linewidths=0.25)
Run Code Online (Sandbox Code Playgroud)

当我不使用annot_kws参数时,这是(工作)输出:

工作输出

在这里,当我在堆栈跟踪包括annot_kwsPARAM:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-57-38f91f1bb4b8> in <module>()
     12 
     13 
---> 14 axs = sns.heatmap(data, vmin=min(uv), vmax=max(uv), annot=True, annot_kws=kws, linewidths=0.25)
     15 concepts

/opt/anaconda/2.3.0/lib/python2.7/site-packages/seaborn/matrix.pyc …
Run Code Online (Sandbox Code Playgroud)

python heatmap seaborn

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

通过行中非空元素的计数对PySpark Dataframe进行统一分区

我知道有一千个问题涉及如何通过盐键等来最好地划分你的DataFrames或者RDDs,但我认为这种情况不同,足以保证自己的问题.

我正在PySpark中构建协同过滤推荐引擎,这意味着需要比较每个用户(行)的唯一项目评级.因此,对于一DataFrame维的M (rows) x N (columns),这意味着该数据集变得M x (K choose 2)其中K << N为非空为用户(即,评估)元素的数量.

我的算法对于用户评估了大约一定数量项目的数据集非常有效.但是,对于一部分用户评估了大量项目(数量级比同一分区中的其他用户大)的情况,我的数据变得非常偏斜,最后几个分区开始花费大量时间.举一个简单的例子,考虑以下内容DataFrame:

cols = ['id', 'Toy Story', 'UP', 'Die Hard', 'MIB', 'The Shining']
ratings = [
    (1, 4.5,  3.5,  None, 1.0,  None),  # user 1
    (2, 2.0,  None, 5.0,  4.0,  3.0),   # user 2
    (3, 3.5,  5.0,  1.0,  None, 1.0),   # user 3
    (4, None, None, 4.5,  3.5,  4.0),   # user 4
    (5, …
Run Code Online (Sandbox Code Playgroud)

python performance machine-learning pyspark spark-dataframe

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

pyspark作业参数中--archives,--files,py-files之间的区别是什么

--archives,--files,--py-filessc.addFilesc.addPyFile是相当混乱,有人能解释清楚这些?

apache-spark pyspark pyspark-sql

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

在sklearn中使用labelEncoder

说我有以下输入功能:

hotel_id = [1, 2, 3, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这是具有数值的分类特征.如果我按原样将它交给模型,模型会将其视为连续变量,即2> 1.

如果我申请,sklearn.labelEncoder()我会得到:

hotel_id = [0, 1, 2, 1, 2] 
Run Code Online (Sandbox Code Playgroud)

那么这个编码特征被认为是连续的还是绝对的?如果它被视为连续,那么使用labelEncoder().

PS我知道一个热门编码.但是大约有100个hotel_ids所以不想使用它.谢谢

python machine-learning scikit-learn categorical-data

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

使用Numpy有效地对复杂矩阵产品求和

我有一个矩阵,X我正在计算中间矩阵乘积的加权和.这是一个可重复性最小的例子:

import numpy as np

random_state = np.random.RandomState(1)
n = 5
p = 10

X = random_state.rand(p, n) # 10x5
X_sum = np.zeros((n, n)) # 5x5

# The length of weights are not related to X's dims,
# but will always be smaller
y = 3
weights = random_state.rand(y)

for k in range(y):
    X_sum += np.dot(X.T[:, k + 1:],
                    X[:p - (k + 1), :]) * weights[k]
Run Code Online (Sandbox Code Playgroud)

这很好,并产生我期望的结果.然而,随着重复计算矩阵产品的尺寸ny增长(数百个),这变得非常昂贵......

然而,产品的计算方式有一个明显的模式:

第一次迭代

第二次迭代

您可以看到迭代进度,起始列切片Xt向右移动,而结束行X向上移动.这是第N次迭代的样子: …

python numpy

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

如何在R脚本中运行可执行的.jar文件?

我正在开发一个相对较大的数据分析项目,其中我编写的R脚本是主要可执行文件,调用所有其他代码.我无法弄清楚如何从我的R脚本中调用可执行文件.jar,但是我还没有在其他地方看到这个问题...这有可能吗?

java executable r jar

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

H2O R api:从网格搜索中检索最优模型

我正在使用h2oR中的软件包(v 3.6.0),我已经构建了一个网格搜索模型.现在,我正在尝试访问最小化验证集上的MSE的模型.在python中sklearn,使用时很容易实现RandomizedSearchCV:

## Pseudo code:
grid = RandomizedSearchCV(model, params, n_iter = 5)
grid.fit(X)
best = grid.best_estimator_
Run Code Online (Sandbox Code Playgroud)

不幸的是,这在h2o中并不是那么简单.以下是您可以重新创建的示例:

library(h2o)
## assume you got h2o initialized...

X <- as.h2o(iris[1:100,]) # Note: only using top two classes for example 
grid <- h2o.grid(
    algorithm = 'gbm',
    x = names(X[,1:4]),
    y = 'Species',
    training_frame = X,
    hyper_params = list(
        distribution = 'bernoulli',
        ntrees = c(25,50)
    )
)
Run Code Online (Sandbox Code Playgroud)

查看grid打印了大量信息,包括以下部分:

> grid
ntrees distribution status_ok                                                                 model_ids
 50    bernoulli        OK …
Run Code Online (Sandbox Code Playgroud)

python r h2o

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

如何从 Golang 调用 Haskell 函数?

我是一名正在转向 Golang 的 Python 开发人员,所以我很抱歉这个菜鸟问题。我负责获取一些 Haskell 代码,我们有 python 绑定,并使其可从 Go 调用。我有一个共享对象文件,_foo.so我想以某种方式将其导入 Go 并调用 la:

import (
    f "_foo.so"
)

func DoBar() {
    return f.Bar()
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我什至不知道从哪里开始,但我希望伪代码能传达这个想法。

haskell ffi go

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

如何分发具有 C 依赖项的 Go 模块

我有一个 Go 包(称之为它)foo,我围绕一些现有的 C 代码构建了它,并且我正在尝试确定如何最好地分发它。

一些背景知识...这是我的目录结构的简化版本:

foo/
  |_ include/
      |_ <several other header files>
  |_ libs/
      |_ <several .so files>
  |_ foo.c
  |_ foo.h
  |_ foo.go
Run Code Online (Sandbox Code Playgroud)

一个被剥光的头foo.go

foo/
  |_ include/
      |_ <several other header files>
  |_ libs/
      |_ <several .so files>
  |_ foo.c
  |_ foo.h
  |_ foo.go
Run Code Online (Sandbox Code Playgroud)

_foo.so作为构建过程的一部分生成的动态库在哪里。我能够很好地运行和测试我的代码,但我希望能够分发它并在一个单独的项目(使用go mod. 这就是事情变得有点棘手的地方,而且我对 Go 的理解也变得脆弱。从概念上讲,我只是希望能够将foo/目录(.so文件和所有内容)分发到另一个应用程序可以找到并导入它的位置,但是我遇到了一些障碍:

  • 我无法将其作为二进制包,因为我们使用的是 Go 1.13,并且据我所知,该功能在 1.12 后已被删除。
  • 该文件的构建过程.so非常重要,我不希望其他开发人员花费 30 分钟以上的时间来构建该对象。

我找到了很多 CGO 演示和博客,但没有很多关于如何分发 CGO 包的解释。有任何想法吗?

值得注意的是,这是针对我的公司的,环境是标准的,所以我不必控制不同的操作系统等。

编辑

我忘记提及我尝试过的一件事是将库烘焙到 …

go cgo go-modules

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