我正在寻找一个包含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) 我有一个由零组成的一维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或更大的数组.我确信这是一个相当简单的答案,但任何帮助都会受到赞赏.
我正在为二元预测问题运行一些监督实验.我正在使用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) 我正在开发类似于此示例的可视化,由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) 我正在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参数传递吗?或者这需要写为最终完全连接层之后的层.这里的任何指导将不胜感激.谢谢.
好吧,我完全不知所措.我有一个依赖树解析工具的输出,如下所示:
(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库,并且已经能够将字符串解析为列表的分层列表,但这不符合我的输出需求.
我认为递归可能是一个很好的候选工具,但我不知道如何将它应用于这个问题.任何有关这方面的帮助将不胜感激 - 甚至伪代码来获得实现的想法.
我正在尝试使用dynamic_rnnTensorflow中的功能来加快训练速度。阅读后,我的理解是,加快训练速度的一种方法是sequence_length在此函数中将值显式传递给参数。经过一番阅读之后,找到了这样的解释,看来我需要传递的是一个向量(可能由定义tf.placeholder),其中包含批处理中每个序列的长度。
这是我感到困惑的地方:为了利用这一优势,我应该将每个批次填充到批次中最长长度的序列,而不是训练集中的最长序列吗?Tensorflow如何处理任何较短序列中的其余零/填充令牌?另外,这里的主要优势是真的可以提高速度吗,还是可以额外保证我们在训练过程中掩盖了垫子令牌?任何帮助/上下文将不胜感激。
machine-learning sequence deep-learning tensorflow recurrent-neural-network
我正在尝试使用一个简单的文本分类器运行一些有监督的实验,但是K Fold在Sklearn. 我得到的错误是:“您的系统已用完应用程序内存”,但我的数据集只有 ~245K 行 x ~81K 列。大,当然,但不是很大。该程序永远不会终止,而是“挂起”,直到我手动关闭终端应用程序。我让它像这样运行了大约 30 分钟,没有任何进展。
我还编写了print语句以查看代码在交叉验证 for 循环中的哪个位置卡住了。看起来好像生成了训练集和测试集的索引,但代码永远不会使用这些索引来分割特征和标签的实际训练和测试集。我在运行 10.9.5 的 Macbook Pro 上运行它。我已经运行此关闭除终端应用程序之外的所有其他应用程序,但没有成功。有没有其他人遇到过这个问题,或者这可能是我的机器特有的问题?
编辑:我已经用 10 倍和 5 倍交叉验证运行了这个,并且每次都遇到相同的问题。
python ×5
d3.js ×2
dc.js ×2
javascript ×2
scikit-learn ×2
tensorflow ×2
arrays ×1
crossfilter ×1
dictionary ×1
excel ×1
keras ×1
memory ×1
numpy ×1
plot ×1
recursion ×1
regex ×1
sequence ×1
string ×1
tooltip ×1
xlrd ×1