我正在处理由几十个关于人的二进制特征组成的数据,这些特征基本上归结为“人具有特征 x”[真/假]。
从我可以找到的在线分类数据来看,应该是单热编码,而不是为每个类别分配任意值,因为您不能说“类别 1 小于类别 2”。所以解决方案是为每个类别创建一个虚拟变量:
Cat || dummy 1 | dummy 2 | dummy 3
____||_________|_________|________
1 || 1 | 0 | 0
2 || 0 | 1 | 0
3 || 0 | 0 | 1
Run Code Online (Sandbox Code Playgroud)
现在对于二元特征,可以选择直接使用变量(1 表示真,0 表示假)或使用两个虚拟变量((1, 0) 表示真,(0, 1) 表示假。)。但我找不到任何显示/解释最佳方法的来源。
我自己很矛盾,因为一方面,虚拟变量降低了每个单独变量的重要性,并且表明至少在某些情况下模型的准确性会受到影响,来源。但另一方面,这也可以编码丢失的数据(以 (0, 0) 的形式)。此外,是否可以说“假小于真”?
我实际上在 python 中使用了随机森林,我知道基于树的分类器(如随机森林)支持分类数据,但 Sklearn 包尚未实现这一点。
我在 Sklearn 数字数据集上写了一个小测试。该数据集有多个 8 x 8 的数字图像 (0-9),每个像素的值在 0 到 16 之间,一个简单的模型可以使用它来学习识别数字。
对于我的测试,我将 > 8 的值更改为 True,将 <= 8 的值更改为 False。与原始数据相比,准确性当然会受到影响,但是当我实现单热编码时,因此将 True 更改为 (1, …
我试图让 Nginx 以最小的权限运行,同时能够充当端口 80 上的代理。换句话说,这是我正在使用的 securityContext:
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 12321
runAsGroup: 12321
privileged: false
capabilities:
drop:
- all
add: ["NET_BIND_SERVICE"]
Run Code Online (Sandbox Code Playgroud)
据我所知,围绕这个主题设置的大多数 stackoverflow 问题都设置allowPrivilegeEscalation为true. 除此之外,我发现Bridcrew 的博客将其设置为false,但我无法在我这边重现他们的示例。
我也尝试使用nginxinc/nginx-unprivileged基础图像,但也没有成功。
这是我的 Dockerfile。它由很多chown和chmod组成,但我还安装了 libcap2,这样我就可以设置NET_BIND_SERVICE功能并为自定义入口点移动一些文件。
FROM nginx
ENV NGINX_USER="proxy-user" \
NGINXR_UID="12321" \
NGINX_GROUP="proxy-group" \
NGINX_GID="12321"
RUN set -ex; \
groupadd -r --gid "$NGINX_GID" "$NGINX_GROUP"; \
useradd -r --uid "$NGINXR_UID" --gid "$NGINX_GID" "$NGINX_USER"
# Create empty …Run Code Online (Sandbox Code Playgroud) 我不知道如何调用这个操作,所以我无法真正用谷歌搜索任何东西,但这是我想要做的:
我有这个数据框:
df = pd.DataFrame({"name": ["A", "B", "B", "B", "A", "A", "B"], "value":[3, 1, 2, 0, 5, 2, 3]})
df
name value
0 A 3
1 B 1
2 B 2
3 B 0
4 A 5
5 A 2
6 B 3
Run Code Online (Sandbox Code Playgroud)
我想对它进行分组df.name并应用一个max函数,df.values但前提是名称按顺序排列。所以我想要的结果如下:
df.groupby_sequence("name")["value"].agg(max)
name value
0 A 3
1 B 2
2 A 5
3 B 3
Run Code Online (Sandbox Code Playgroud)
任何线索如何做到这一点?
我有这个Pandas DataFrame,其中有一个带有列表的列:
>>> df = pd.DataFrame({'m': [[1,2,3], [5,3,2], [2,5], [3,8,1], [9], [2,6,3]]})
>>> df
m
0 [1, 2, 3]
1 [5, 3, 2]
2 [2, 5]
3 [3, 8, 1]
4 [9]
5 [2, 6, 3]
Run Code Online (Sandbox Code Playgroud)
我想计算一个列表v = [2, 3]包含在DataFrame列表中的次数。因此,在此示例中,正确答案为3。现在这只是一个例子,在我的实际数据中,df['m']可以包含超过900万行,而列表实际上是最多包含20个元素的字符串列表。如果需要,请提供更多详细信息:的元素不v包含重复项,的列表也不包含m,因此可以设置它们而不是列表。
我的程序的第一次迭代遍历每一行并检查all(e in data['m'][i] for e in v),如果是True,则增加一个计数器。但是,正如许多SO问题和博客文章所述,在DataFrame的行上进行迭代很慢,并且可以更快地完成。
因此,对于下一次迭代,我在DataFrame中添加了一个列,该列包含列表的副本v:
>>> df['V'] = [[2, 3]] * len(df)
>>> df
V m
0 [2, 3] [1, 2, 3]
1 …Run Code Online (Sandbox Code Playgroud)