小编kyl*_*tor的帖子

XLRD/Python:使用for循环将Excel文件读入dict

我正在寻找一个包含15个字段和大约2000行的Excel工作簿,并将每行转换为Python中的字典.然后我想将每个字典附加到列表中.我希望工作簿顶行中的每个字段都是每个字典中的一个键,并且相应的单元格值是字典中的值.我已经看过这里这里的例子,但我想做一些不同的事情.第二个例子可以工作,但我觉得循环顶行可以更有效地填充字典键,然后遍历每一行来获取值.我的Excel文件包含来自讨论论坛的数据,看起来像这样(显然有更多列):

id    thread_id    forum_id    post_time    votes    post_text
4     100          3           1377000566   1        'here is some text'
5     100          4           1289003444   0        'even more text here'
Run Code Online (Sandbox Code Playgroud)

所以,我想等领域id,thread_id等等,是字典键.我希望我的词典看起来像:

{id: 4, 
thread_id: 100,
forum_id: 3,
post_time: 1377000566,
votes: 1,
post_text: 'here is some text'}
Run Code Online (Sandbox Code Playgroud)

最初,我有一些像这样的代码遍历文件,但是我的范围对于某些for循环来说是错误的,而且我生成了太多的字典.这是我的初始代码:

import xlrd
from xlrd import open_workbook, cellname

book = open('forum.xlsx', 'r')
sheet = book.sheet_by_index(3)

dict_list = []

for row_index in range(sheet.nrows):
    for col_index in range(sheet.ncols):
        d = {}

        # My …
Run Code Online (Sandbox Code Playgroud)

python excel dictionary xlrd

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

在一维NumPy数组中翻转零和一

我有一个由零组成的一维NumPy数组,如下所示:

array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

我想快速"翻转"这些值,使得零变为1,并且变为零,从而产生如下的NumPy数组:

array([1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

这有一个简单的单行程吗?我查看了该fliplr()函数,但这似乎需要NumPy维数为2或更大的数组.我确信这是一个相当简单的答案,但任何帮助都会受到赞赏.

python arrays numpy

23
推荐指数
3
解决办法
1万
查看次数

用于多个链接的dc.js图表​​的d3-tooltips

我正在寻找修改dc.js的开箱即用工具提示,似乎有一个使用d3.js工具提示的解决方案,如此问题.但是,我对如何实现这一点感到困惑,以便为dc.js仪表板中的所有链接图修改工具提示.GitHub repo中的示例很适合单个图形,但我目前正在处理六个链接图形,需要修改所有图形上的工具提示.任何帮助,将不胜感激.

javascript tooltip d3.js dc.js

9
推荐指数
1
解决办法
4435
查看次数

如何在Scikit-Learn中绘制PR曲线超过10倍的交叉验证

我正在为二元预测问题运行一些监督实验.我正在使用10倍交叉验证来评估平均精度(每个折叠的平均精度除以交叉验证的折叠数 - 在我的情况下为10)的性能.我想绘制平均精度超过这10倍的PR曲线,但是我不确定最好的方法.

前一个问题的交叉验证的堆栈Exchange站点提出了这个同样的问题.一篇评论建议通过这个例子绘制来自Scikit-Learn网站的交叉验证折叠的ROC曲线,并将其定制为平均精度.以下是我为了尝试这个想法而修改的相关代码部分:

from scipy import interp
# Other packages/functions are imported, but not crucial to the question
max_ent = LogisticRegression()

mean_precision = 0.0
mean_recall = np.linspace(0,1,100)
mean_average_precision = []

for i in set(folds):
    y_scores = max_ent.fit(X_train, y_train).decision_function(X_test)
    precision, recall, _ = precision_recall_curve(y_test, y_scores)
    average_precision = average_precision_score(y_test, y_scores)
    mean_average_precision.append(average_precision)
    mean_precision += interp(mean_recall, recall, precision)

# After this line of code, inspecting the mean_precision array shows that 
# the majority of the elements equal 1. This …
Run Code Online (Sandbox Code Playgroud)

python plot machine-learning scikit-learn cross-validation

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

在地图上使用BubbleChart Overlay构建DC仪表板 - 更好的示例?

我正在开发类似于此示例的可视化,由dc.js库示例主页链接.该页面有一些不错的示例初学者代码,但是我有一个关于在地图上绘制气泡图的特殊问题.

在上面的示例中,作者似乎手动指定显示加拿大省形状的路径.然后代码将bubbleOverlay图表分配给一个名为的变量caChart,该变量将包含在加拿大地图上的特定坐标处绘制的气泡.但是,在代码中进一步向下看,代码会在网页上为每个要绘制的气泡手动分配(x,y)坐标,而不是以编程方式分配其位置(请参阅注释):

caChart.width(600)
            .height(450)
            .dimension(cities)
            .group(totalCrimeRateByCity)
            .radiusValueAccessor(function(p) {
                return p.value.avgTotalCrimeRate;
            })
            .r(d3.scale.linear().domain([0, 200000]))
            .colors(["#ff7373","#ff4040","#ff0000","#bf3030","#a60000"])
            .colorDomain([13, 30])
            .colorAccessor(function(p) {
                return p.value.violentCrimeRatio;
            })
            .title(function(d) {
                return "City: " + d.key
                        + "\nTotal crime per 100k population: " + numberFormat(d.value.avgTotalCrimeRate)
                        + "\nViolent crime per 100k population: " + numberFormat(d.value.avgViolentCrimeRate)
                        + "\nViolent/Total crime ratio: " + numberFormat(d.value.violentCrimeRatio) + "%";
            })
            // These points appear to be assigned manually
            .point("Toronto", 364, 400)
            .point("Ottawa", 395.5, 383)
            .point("Vancouver", 40.5, 316)
            .point("Montreal", …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js crossfilter dc.js

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

如何在Keras模型中使用TensorFlow的采样softmax损失函数?

我正在Keras训练语言模型,并希望通过使用采样softmax作为我网络中的最终激活功能来加速训练.从TF文档中,看起来我需要为weights和提供参数biases,但我不确定这些的输入是什么.好像我可以在Keras中编写自定义函数,如下所示:

import keras.backend as K

def sampled_softmax(weights, biases, y_true, y_pred, num_sampled, num_classes):
    return K.sampled_softmax(weights, biases, y_true, y_pred, num_sampled, num_classes)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何"插入"到我现有的网络.LM的架构非常简单:

model = Sequential()
model.add(Embedding(input_dim=len(vocab), output_dim=256))
model.add(LSTM(1024, return_sequence=True))
model.add(Dense(output_dim=len(vocab), activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
Run Code Online (Sandbox Code Playgroud)

鉴于这种架构,我可以在模型上调用编译方法时将sampled_softmax函数作为loss参数传递吗?或者这需要写为最终完全连接层之后的层.这里的任何指导将不胜感激.谢谢.

deep-learning keras tensorflow loss-function

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

如何将依赖树的输出解析为扁平化结构

好吧,我完全不知所措.我有一个依赖树解析工具的输出,如下所示:

(S 
    (NP 
        (PRP It)
    )
    (VP
        (VBD said)
        (CLAUSE
            (S
                (NP
                    (DT the)
                    (NN figure)
                )
                (VP 
                    (VBD was)
                    (VBN rounded)
                )
            )
        )
    )
    (PUNC .)
)
Run Code Online (Sandbox Code Playgroud)

这些解析输出保存为纯文本.据我所知,输出基本上是二叉树.我想要的是一个输出文件,其中每个单词都在一个新行上,每个单词包含与该单词相关的所有标签.一个例子是:

It  S   NP  PRP
said    S   VP
the S   VP  CLAUSE  S   NP  DT
figure  S   VP  CLAUSE  S   NP  NN
was S   VP  CLAUSE  S   VP  VBD
rounded S   VP  CLAUSE  S   VP  VBN
. PUNC  S
Run Code Online (Sandbox Code Playgroud)

如何将此输出解析为我正在寻找的输出?我试图使用该pyparsing库,并且已经能够将字符串解析为列表的分层列表,但这不符合我的输出需求.

我认为递归可能是一个很好的候选工具,但我不知道如何将它应用于这个问题.任何有关这方面的帮助将不胜感激 - 甚至伪代码来获得实现的想法.

python regex string recursion hierarchical-data

3
推荐指数
1
解决办法
393
查看次数

在TensorFlow dynamic_rnn中使用sequence_length参数时如何处理填充

我正在尝试使用dynamic_rnnTensorflow中的功能来加快训练速度。阅读后,我的理解是,加快训练速度的一种方法是sequence_length在此函数中将值显式传递给参数。经过一番阅读之后,找到了这样的解释,看来我需要传递的是一个向量(可能由定义tf.placeholder),其中包含批处理中每个序列的长度。

这是我感到困惑的地方:为了利用这一优势,我应该将每个批次填充到批次中最长长度的序列,而不是训练集中的最长序列吗?Tensorflow如何处理任何较短序列中的其余零/填充令牌?另外,这里的主要优势是真的可以提高速度吗,还是可以额外保证我们在训练过程中掩盖了垫子令牌?任何帮助/上下文将不胜感激。

machine-learning sequence deep-learning tensorflow recurrent-neural-network

3
推荐指数
1
解决办法
1380
查看次数

Sklearn K-Fold 交叉验证内存问题

我正在尝试使用一个简单的文本分类器运行一些有监督的实验,但是K FoldSklearn. 我得到的错误是:“您的系统已用完应用程序内存”,但我的数据集只有 ~245K 行 x ~81K 列。大,当然,但不是很大。该程序永远不会终止,而是“挂起”,直到我手动关闭终端应用程序。我让它像这样运行了大约 30 分钟,没有任何进展。

我还编写了print语句以查看代码在交叉验证 for 循环中的哪个位置卡住了。看起来好像生成了训练集和测试集的索引,但代码永远不会使用这些索引来分割特征和标签的实际训练和测试集。我在运行 10.9.5 的 Macbook Pro 上运行它。我已经运行此关闭除终端应用程序之外的所有其他应用程序,但没有成功。有没有其他人遇到过这个问题,或者这可能是我的机器特有的问题?

编辑:我已经用 10 倍和 5 倍交叉验证运行了这个,并且每次都遇到相同的问题。

python memory scikit-learn cross-validation

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