小编Mat*_* M.的帖子

Python列表列表的所有组合

所以我有一个字符串列表列表

[['a','b'],['c','d'],['e','f']]
Run Code Online (Sandbox Code Playgroud)

我想得到所有可能的组合,结果是

[['a','b'],['c','d'],['e','f'],
 ['a','b','c','d'],['a','b','e','f'],['c','d','e','f'],
 ['a','b','c','d','e','f']]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经提出了这段代码

input = [['a','b'],['c','d'],['e','f']]
combs = []
for i in xrange(1, len(input)+1):
    els = [x for x in itertools.combinations(input, i)]
    combs.extend(els)
print combs
Run Code Online (Sandbox Code Playgroud)

很大程度上遵循这篇文章的答案.

但结果是

[(['a','b'],),(['c','d'],),(['e','f'],),
 (['a','b'],['c','d']),(['a','b'],['e','f']),(['c','d'],['e','f']),
 (['a','b'],['c', 'd'],['e', 'f'])]
Run Code Online (Sandbox Code Playgroud)

我现在很难过,试图找到一种优雅,pythonic的方式解开那些元组.

python combinations tuples list python-itertools

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

改变 X 和 Y 的 scikit-learn 自定义转换器/管道

我有一组 N 个数据点 X = {x 1 , ..., x n } 和一组 N 个目标值/类 Y = {y 1 , ..., y n }。

给定 y i的特征向量是在考虑数据点的“窗口”(缺乏更好的术语)的情况下构建的,例如我可能想要堆叠“最后 4 个数据点”,即 x i-4 , x i-3 , x i-2 , x i-1用于预测 y i

显然,对于 4 的窗口大小,无法为前三个目标值构建这样的特征向量,我想简单地删除它们。同样对于最后一个数据点 x n

这不是问题,除非我希望这作为 sklearn 管道的一部分发生。到目前为止,我已经成功地为其他任务编写了一些自定义转换器,但那些不能(据我所知)改变 Y 矩阵。

有没有办法做到这一点,我不知道还是我坚持这样做作为管道外的预处理?(这意味着,我将无法使用 GridsearchCV 来找到最佳窗口大小和移位。)

我试过搜索这个,但我想出的只是这个问题,它涉及从 X 矩阵中删除样本。那里接受的答案让我想,scikit-learn 不支持我想做的事情,但我想确定一下。

python pipeline scikit-learn

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

Pandas DataFrame:如何在滚动窗口上设置联合聚合

我有一个数据框,其中包含一列中的一组 id 和另一列中的日期:

import pandas as pd

df = pd.DataFrame([['2018-01-01', {1, 2, 3}],
                   ['2018-01-02', {3}],
                   ['2018-01-03', {3, 4, 5}],
                   ['2018-01-04', {5, 6}]],
                  columns=['timestamp', 'ids'])

df['timestamp'] = pd.to_datetime(df['timestamp'])
df.set_index('timestamp', inplace=True)

                     ids
timestamp               
2018-01-01     {1, 2, 3}
2018-01-02     {3}
2018-01-03     {3, 4, 5}
2018-01-04     {5, 6}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个函数,它可以为我提供每天最后 x 天的 ID。所以,假设 x=3,我希望结果是:

                     ids
timestamp               
2018-01-01     {1, 2, 3}
2018-01-02     {1, 2, 3}
2018-01-03     {1, 2, 3, 4, 5}
2018-01-04     {3, 4, 5, 6}
Run Code Online (Sandbox Code Playgroud)

我试过了

df.rolling(3).agg(set.union)
Run Code Online (Sandbox Code Playgroud)

但这会导致以下错误:

Traceback (most recent call last):
  File "C:\Users\m.manhertz\Envs\demo-8EG6nosu\lib\site-packages\pandas\core\window.py", …
Run Code Online (Sandbox Code Playgroud)

python union set pandas rolling-computation

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

如何临时更改 kubernetes pod 的环境变量?

我们在 kubernetes 集群的 pod 中运行 python 服务。这些服务被设置为从环境变量接收日志级别。这些环境变量是在 gitlab 管道中部署服务期间设置的。出于调试目的,我希望能够仅更改单个 pod 上的环境变量并重新启动它,而无需从 gitlab 重新部署服务。

在迁移到 kubernetes 之前,我们在 rancher 中运行容器,所描述的更改在 GUI 中非常容易完成。更改环境变量 -> 点击更新 -> 容器自动重新启动。

我发现这篇文章建议使用如下命令更改副本集

kubectl set env rs [REPLICASET_NAME] [ENV_VAR]=[VALUE]
Run Code Online (Sandbox Code Playgroud)

然后终止 pod,之后将使用相应的环境变量重新创建它。

但它也指出

切勿在生产系统上执行此操作。

如果不注意它可能如何影响您的部署工作流程,甚至永远不要在开发环境中执行此操作。

这是实现我在正在运行的 pod 中快速更改环境变量以进行调试的目标的唯一/最佳方法吗?

python logging environment-variables kubernetes

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

TextBlob NaiveBayesAnalyzer极慢(与Pattern相比)

我正在使用TextBlob for python对推文进行一些情绪分析.TextBlob中的默认分析器是PatternAnalyzer,它可以很好地工作并且速度非常快.

sent = TextBlob(tweet.decode('utf-8')).sentiment
Run Code Online (Sandbox Code Playgroud)

我现在尝试切换到NaiveBayesAnalyzer,发现运行时对我的需求不切实际.(每条推文接近5秒.)

sent = TextBlob(tweet.decode('utf-8'), analyzer=NaiveBayesAnalyzer()).sentiment
Run Code Online (Sandbox Code Playgroud)

我之前使用过朴素贝叶斯分类器的scikit学习实现,并没有发现它这么慢,所以我想知道我是否正确使用它在这种情况下.

我假设分析仪是预训练的,至少文档说明"Naive Bayes分析仪是在电影评论数据集上训练的".但是它还有一个函数train(),被描述为"在电影评论语料库中训练朴素贝叶斯分类器".它是否在每次运行之前在内部训练分析仪?我希望不是.

有谁知道加速这个的方法?

python textblob naivebayes

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