小编PyR*_*red的帖子

如何将PySpark中的表数据框导出到csv?

我正在使用Spark 1.3.1(PySpark),我使用SQL查询生成了一个表.我现在有一个对象DataFrame.我想将此DataFrame对象(我将其称为"表")导出到csv文件,以便我可以操作它并绘制列.如何将DataFrame"表" 导出到csv文件?

谢谢!

python dataframe export-to-csv apache-spark apache-spark-sql

59
推荐指数
5
解决办法
15万
查看次数

了解稳定基线模型中的 total_timesteps 参数

我正在阅读原始 PPO 论文并尝试将其与稳定基线 PPO2模型的输入参数相匹配。

我不明白的一件事是方法中的total_timesteps参数learn

论文中提到

一种策略梯度实现方式……运行 T 个时间步长的策略(其中 T 远小于剧集长度)

虽然稳定基线文档将total_timesteps参数描述为

(int) 要训练的样本总数

因此,我认为T在论文和total_timesteps文档中是相同的参数。

我不明白的是:

  • 是否total_timesteps总是需要小于或环境中的(说如果我有帧的数量有限喜欢1,000,000)等于可用“帧”(样本)的总数。如果是这样,为什么?

  • 通过设置total_timesteps一个小于可用帧数的数字,代理会看到训练数据的哪一部分?例如,如果total_timesteps=1000,代理是否只看到前 1000 帧?

  • 一集是定义为可用帧的总数,还是定义为代理第一次“松动”/“死亡”的时间?如果是后者,那么你怎么能提前知道代理什么时候会死才能设置total_timesteps一个较小的值呢?

我仍在学习 RL 背后的术语,所以我希望我能够在上面清楚地解释我的问题。非常欢迎任何帮助/提示。

python reinforcement-learning

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

如何使用gensim LDA获取文档的完整主题分发?

当我训练我的lda模型时

dictionary = corpora.Dictionary(data)
corpus = [dictionary.doc2bow(doc) for doc in data]
num_cores = multiprocessing.cpu_count()
num_topics = 50
lda = LdaMulticore(corpus, num_topics=num_topics, id2word=dictionary, 
workers=num_cores, alpha=1e-5, eta=5e-1)
Run Code Online (Sandbox Code Playgroud)

我希望num_topics为每个文档获得所有内容的完整主题分发.也就是说,在这种特殊情况下,我希望每个文档都有50个主题有助于分发,我希望能够访问所有50个主题的贡献.如果严格遵守LDA的数学,这个输出就是LDA应该做的.然而,仅gensim输出超过一定的阈值,如图主题在这里.例如,如果我尝试

lda[corpus[89]]
>>> [(2, 0.38951721864890398), (9, 0.15438596408262636), (37, 0.45607443684895665)]
Run Code Online (Sandbox Code Playgroud)

它只显示了对文档89贡献最大的3个主题.我在上面的链接中尝试了解决方案,但这对我不起作用.我仍然得到相同的输出:

theta, _ = lda.inference(corpus)
theta /= theta.sum(axis=1)[:, None]
Run Code Online (Sandbox Code Playgroud)

产生相同的输出,即每个文档只有2,3个主题.

我的问题是如何更改此阈值,以便我可以访问每个文档的完整主题分布?无论主题对文档的贡献多么微不足道,我如何访问完整的主题分发?我想要完整分发的原因是我可以在文档的分发之间执行KL相似性搜索.

提前致谢

python lda gensim

9
推荐指数
2
解决办法
3904
查看次数

为什么 numpy 随机种子没有保持固定但 RandomState 在并行运行时是?

我运行蒙特卡罗模拟并行使用joblib。然而,我注意到虽然我的种子是固定的,但我的结果一直在变化。但是,当我连续运行该过程时,它如我所料保持不变。

下面我实现了一个小例子,模拟具有较高方差的正态分布的均值。

加载库并定义函数

import numpy as np
from joblib import Parallel, delayed

def _estimate_mean():
    np.random.seed(0)
    x = np.random.normal(0, 2, size=100)
    return np.mean(x)
Run Code Online (Sandbox Code Playgroud)

串联实现的第一个示例- 结果都与预期相同。

tst = [_estimate_mean() for i in range(8)]
In [28]: tst
Out[28]:
[0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897]
Run Code Online (Sandbox Code Playgroud)

在 Parallel 中实现的第二个例子:(注意有时手段是一样的,其他时候不一样)

tst = Parallel(n_jobs=-1, backend="threading")(delayed(_estimate_mean)() for i in range(8))

In [26]: tst
Out[26]:
[0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.11961603106897,
 0.1640259414956747,
 -0.11846452111932627,
 -0.3935934130918206]
Run Code Online (Sandbox Code Playgroud)

我希望并行运行与固定种子相同。我发现如果我实施RandomState修复种子似乎可以解决问题:

def _estimate_mean():
    local_state …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing numpy random-seed

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

如何在Apache Spark(PySpark 1.4.1)中可视化/绘制决策树?

我正在使用Apache Spark Mllib 1.4.1(PySpark,Spark的python实现)来生成基于我所拥有的LabeledPoint数据的决策树.树生成正确,我可以将它打印到终端(提取规则,因为该用户称之为如何从决策树spark MLlib中提取规则):

model = DecisionTree.trainClassifier( ... )
print(model.toDebugString()
Run Code Online (Sandbox Code Playgroud)

但我想要做的是将决策树可视化或绘制,而不是将其打印到终端.有什么方法可以在PySpark中绘制决策树,或者我可以保存决策树数据并使用R来绘制它吗?谢谢!

plot decision-tree apache-spark

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

如何使用seaborn连续绘制多个图形

我有一个df看起来像这样的数据框:

df.head()
id        feedback        nlp_model        similarity_score
0xijh4    1               tfidf            0.36
0sdnj7    -1              lda              0.89
kjh458    1               doc2vec          0.78
....
Run Code Online (Sandbox Code Playgroud)

我想对similairty_score列中的每个唯一值使用 seaborn 以箱线图形式绘制与反馈的关系modeltfidf, lda, doc2vec。我的代码如下:

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='tfidf'], color="0.25")

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='lda'], color="0.25")

fig, ax = plt.subplots(figsize=(10,8))
ax = sns.boxplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'])
ax = sns.swarmplot(x="feedback", y="similarity_score", data=df[df.nlp_model=='doc2vec'], color="0.25")

plt.show() …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib seaborn

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

PyMuPDF 提取纯文本的问题

我想使用PyMuPDF读取 PDF 文件。我需要的只是纯文本(不需要提取颜色、字体、表格等信息)。

我尝试过以下方法

import fitz
from fitz import TextPage
ifile = "C:\\user\\docs\\aPDFfile.pdf"
doc = TextPage(ifile)
>>> TypeError: in method 'new_TextPage', argument 1 of type 'struct fz_rect_s *'
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以我尝试了

doc = fitz.Document(ifile)
t = TextPage.extractText(doc)
>>> AttributeError: 'Document' object has no attribute '_extractText'
Run Code Online (Sandbox Code Playgroud)

这又不起作用了。

然后我发现了PyMuPDF 的一位作者写的很棒的博客,其中包含按照从文件中读取的顺序提取文本的详细代码。但每次我用不同的 PDF 运行此代码时,我都会得到KeyError: 'lines'(代码中的第 81 行)或KeyError: "bbox"(代码中的第 60 行)。

我无法在这里发布 PDF,因为它们是机密的,我很高兴在这里提供有用的信息。但是有什么方法可以让我完成 PyMuPDF 要做的最简单的任务:从 PDF 中提取纯文本,无序或其他(我不太介意)?

python pdf pymupdf

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

抑制可忽略不计的复杂 numpy 特征值?

我正在计算协方差矩阵的特征值,该矩阵是实数且对称正半定的。因此,特征值和特征向量应该都是实数,但是numpy.linalg.eig()返回具有(几乎)零虚部的复数值。

协方差矩阵太大,无法在此处发布,但特征值如下

[1.38174e01+00j, 9.00153e00+00j, ....]
Run Code Online (Sandbox Code Playgroud)

向量中最大的虚部在 处可以忽略不计-9.7557e-16j

我认为这里存在一些机器精度问题,因为显然虚部可以忽略不计(并且考虑到我的协方差矩阵是实数正半定义)。

有没有办法抑制使用 numpy eig (或 scipy)返回虚部?我试图避免使用 if 语句来检查特征值对象是否复杂,然后仅将其设置为真实组件(如果可能)。

python numpy linear-algebra eigenvalue

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

如何使用 python Ray 并行处理一个大列表?

我想使用ray对列表的每个元素并行执行函数操作。下面是一个简化的片段

import numpy as np
import time

import ray
import psutil
num_cpus = psutil.cpu_count(logical=False)
ray.init(num_cpus=num_cpus)


@ray.remote
def f(a, b, c):
    return a * b - c


def g(a, b, c):
    return a * b - c


def my_func_par(large_list):
    # arguments a and b are constant just to illustrate
    # argument c is is each element of a list large_list
    [f.remote(1.5, 2, i) for i in large_list]


def my_func_seq(large_list):
    # arguments a anf b are constant just to illustrate
    # …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing ray

6
推荐指数
2
解决办法
9824
查看次数

使用emaildata 0.3.4使用Python 3.6读取.eml文件

我正在使用python 3.6.1,我想读取电子邮件文件(.eml)进行处理。我正在使用emaildata 0.3.4软件包,但是,每当我尝试如文档中那样导入Text类时,都会收到模块错误:

import email
from email.text import Text
>>> ModuleNotFoundError: No module named 'cStringIO'
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此更新进行更正时,出现下一个与mimetools

>>> ModuleNotFoundError: No module named 'mimetools'
Run Code Online (Sandbox Code Playgroud)

是否可以使用带有Python 3.6的emaildata 0.3.4来解析.eml文件?还是可以使用其他软件包来解析.eml文件?谢谢

python parsing nlp eml

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