我是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中使用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_kws
PARAM:
---------------------------------------------------------------------------
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) 我知道有一千个问题涉及如何通过盐键等来最好地划分你的DataFrames
或者RDD
s,但我认为这种情况不同,足以保证自己的问题.
我正在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) --archives
,--files
,--py-files
和sc.addFile
和sc.addPyFile
是相当混乱,有人能解释清楚这些?
说我有以下输入功能:
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所以不想使用它.谢谢
我有一个矩阵,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)
这很好,并产生我期望的结果.然而,随着重复计算矩阵产品的尺寸n
和y
增长(数百个),这变得非常昂贵......
然而,产品的计算方式有一个明显的模式:
您可以看到迭代进度,起始列切片Xt
向右移动,而结束行X
向上移动.这是第N次迭代的样子: …
我正在开发一个相对较大的数据分析项目,其中我编写的R脚本是主要可执行文件,调用所有其他代码.我无法弄清楚如何从我的R脚本中调用可执行文件.jar,但是我还没有在其他地方看到这个问题...这有可能吗?
我正在使用h2o
R中的软件包(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) 我是一名正在转向 Golang 的 Python 开发人员,所以我很抱歉这个菜鸟问题。我负责获取一些 Haskell 代码,我们有 python 绑定,并使其可从 Go 调用。我有一个共享对象文件,_foo.so
我想以某种方式将其导入 Go 并调用 la:
import (
f "_foo.so"
)
func DoBar() {
return f.Bar()
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我什至不知道从哪里开始,但我希望伪代码能传达这个想法。
我有一个 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
文件和所有内容)分发到另一个应用程序可以找到并导入它的位置,但是我遇到了一些障碍:
.so
非常重要,我不希望其他开发人员花费 30 分钟以上的时间来构建该对象。我找到了很多 CGO 演示和博客,但没有很多关于如何分发 CGO 包的解释。有任何想法吗?
值得注意的是,这是针对我的公司的,环境是标准的,所以我不必控制不同的操作系统等。
我忘记提及我尝试过的一件事是将库烘焙到 …
python ×6
go ×2
pyspark ×2
r ×2
apache-spark ×1
cgo ×1
executable ×1
ffi ×1
go-modules ×1
group-by ×1
h2o ×1
haskell ×1
heatmap ×1
jar ×1
java ×1
kaggle ×1
keyerror ×1
numpy ×1
pandas ×1
performance ×1
pyspark-sql ×1
scikit-learn ×1
seaborn ×1