小编Jur*_*rgy的帖子

二进制特征应该是one-hot编码吗?

我正在处理由几十个关于人的二进制特征组成的数据,这些特征基本上归结为“人具有特征 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, …

python machine-learning scikit-learn

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

在 pod 中运行 Nginx,无需提权

我试图让 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 问题都设置allowPrivilegeEscalationtrue. 除此之外,我发现Bridcrew 的博客将其设置为false,但我无法在我这边重现他们的示例。

我也尝试使用nginxinc/nginx-unprivileged基础图像,但也没有成功。


这是我的 Dockerfile。它由很多chownchmod组成,但我还安装了 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)

nginx security-context docker kubernetes

8
推荐指数
0
解决办法
855
查看次数

Pandas groupby 顺序值

我不知道如何调用这个操作,所以我无法真正用谷歌搜索任何东西,但这是我想要做的:

我有这个数据框:

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)

任何线索如何做到这一点?

python pandas pandas-groupby

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

熊猫计数列表列中包含的列表的出现

我有这个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)

python vectorization pandas

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