小编pat*_*ick的帖子

在gensim Word2Vec模型中匹配单词和向量

我有gensim Word2Vec实现为我计算一些单词嵌入.据我所知,一切都非常奇妙; 现在我正在聚集创建的单词vector,希望得到一些语义分组.

下一步,我想看一下每个集群中包含的单词(而不是向量).即如果我有嵌入的向量[x, y, z],我想找出这个向量代表的实际单词.我可以通过调用model.vocab和单词向量来获得单词/ Vocab项目model.syn0.但我找不到这些明确匹配的位置.

这比我想象的要复杂得多,我觉得我可能会错过这种明显的做法.任何帮助表示赞赏!

问题:

将单词与嵌入向量相匹配Word2Vec ()- 如何进行?

我的方法:

在创建模型(下面的代码*)之后,我现在想要将分配给每个单词的索引(在build_vocab()阶段期间)与输出的向量矩阵相匹配model.syn0.从而

for i in range (0, newmod.syn0.shape[0]): #iterate over all words in model
    print i
    word= [k for k in newmod.vocab if newmod.vocab[k].__dict__['index']==i] #get the word out of the internal dicationary by its index
    wordvector= newmod.syn0[i] #get the vector with the corresponding index
    print wordvector == newmod[word] #testing: compare result of looking up …
Run Code Online (Sandbox Code Playgroud)

python vector machine-learning gensim word2vec

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

emacs中的Markdown预览失败:(pandoc?)错误127

我正在尝试在Emacs*中创建一个降价文档.

它确实突出了语法等,并进入Markdown模式(我不太确定我是否安装了该软件包或是否是标准问题)..

问题:

当我尝试创建预览(通过C-c C-c p或GUI)时,它返回此错误代码:

降价失败,退出代码为127

  • 这个错误告诉我什么?有没有办法获得更完整的错误消息?

  • markdown-mode 的文档表明它调用了我已经安装的外部库,例如pandoc.根据这些 SO问题,pandoc可以返回此错误代码,但我无法确定其含义.

  • 我该如何解决这个/我应该去哪些文档?

我对Emacs很新,所以一切都会有所帮助.谢谢!

*Mac上的Emacs 25.3.1版(Sierra 10.12.6)

emacs markdown preview pandoc

16
推荐指数
1
解决办法
3980
查看次数

使用稀疏矩阵与numpy数组

我在Python中创建了一些带有字数的numpy数组:行是文档,列是字X的计数.如果我有很多零计数,人们建议在进一步处理这些时使用稀疏矩阵,例如在分类器中.当将一个numpy数组与一个稀疏矩阵输入到Scikit 逻辑回归分类器中时,它似乎并没有太大的区别.所以我想知道三件事:

  • 维基百科

    稀疏矩阵是大多数元素为零的矩阵

    这是确定何时使用稀疏矩阵格式的合适方法 - 只要> 50%的值为零?或者使用以防万一是有意义的吗?

  • 稀疏矩阵在像我这样的任务中有多大帮助,特别是与numpy数组或标准列表相比?
  • 到目前为止,我将数据收集到一个numpy数组中,然后转换为Scipy中的csr_matrix .这是正确的方法吗?我无法弄清楚如何从头开始构建稀疏矩阵,这可能是不可能的.

任何帮助深表感谢!

python numpy matrix scipy scikit-learn

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

使用 datetime.timedelta 添加年份

我正在用 Python 做一些时间计算。

目标:

其中一部分是试图:

给定一个日期,加上时间间隔(X 年,X 个月,X 周),返回日期

IE

  • 输入参数:input_time (datetime.date), interval (datetime.timedelta)
  • 返回:datetime.date

我查看了 datetime 和datetime.timedelta 文档

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)¶。

如果我想增加一定数量的小时数或周数,这些似乎效果很好。然而,

问题:

  • 我正在尝试实施诸如日期 + 1 年之类的操作,但无法弄清楚

例如

start = datetime.datetime(2000, 1, 1)
# expected output: datetime.datetime(2001, 1, 1)


# with the weeks, etc arguments given in timedelta, this fails unsurprisingly e.g 
start + datetime.timedelta(weeks = 52)

# returns datetime.datetime(2000, 12, 30, 0, 0)

Run Code Online (Sandbox Code Playgroud)

  • 使用 datetime 的基本工具是否可以进行基于年份的操作 - 如果可以,我将如何进行?

  • 我意识到对于年份示例,我可以只做 …

python datetime timedelta python-dateutil

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

如何让R Shiny downloadHandler文件名起作用?

我正在设置一个Shiny应用程序,允许用户下载自定义数据集.在本教程之后,我按照文档中给出的示例设置了downloadHandler(在此处转载,因为如果我复制并粘贴它,会发生同样的事情).

ui <- fluidPage(
  downloadLink("downloadData", "Download")
)

server <- function(input, output) {
  # Our dataset
  data <- mtcars

  output$downloadData <- downloadHandler(
    filename = function() {
      paste("data-", Sys.Date(), ".csv", sep="")
    },
    content = function(file) {
      write.csv(data, file)
    }
  )
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

问题:

这个问题只出现在我的Linux*系统上,似乎在Mac上运行得很好.下载和一切工作正常,但"保存"GUI不提供正确的文件名.没有错误消息或警告.根据我的意见,

  • 我希望它能给我数据TIME.csv,即输入到filename.(如果我在那个插槽中给它简单的字符串,它也不起作用).

  • 但它提供了我下载数据或我给output变量的任何名称(参见截图).

在此输入图像描述

题:

  • 这是我怀疑的操作系统问题,还是我做错了什么?

  • 我该如何解决?我可以在任何系统上使用它吗?

谢谢!

我正在运行基本的OS 0.4 Loki,基于"Ubuntu 16.04.2 LTS",GTK版本:3.18.9.&RStudio 1.0.143

linux user-interface r download shiny

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

在Golang中返回strings.Split()切片的最后一项

我在Go中拆分文件名来获取文件扩展名(例如import ("strings") ; strings.Split("example.txt", ".")).出于这个原因,我想返回拆分返回的切片中的最后一项,即

对于strings.Split("ex.txt","."),我想要txt

这个问题表明这样做

strings.Split("ex.txt", ".")[len(strings.Split("ex.txt", ".")) - 1]
Run Code Online (Sandbox Code Playgroud)

是获得它的唯一方法.也就是说,-1Python中没有.这对我来说似乎很浪费,因为我觉得我们正在进行两次相同的分裂操作.

  • 在Go中获取切片的最后一项是否没有更好的命令?
  • 如果不是,最好的方法是将结果写入Split变量,还是只做上述操作?

谢谢!

file-extension split go slice

9
推荐指数
3
解决办法
6461
查看次数

从 sys.stdin 读取,以 RETURN 结束用户输入

我正在使用 Py 3.6 中的用户输入编写脚本。

在脚本中,用户被要求在 shell 中输入一个文本部分——可能包含新行。然后输入的文本将保存到 Python 变量中以供进一步处理。

由于用户输入可能包含换行符,我想我不能使用input()但正在使用sys.stdin.read()(如建议here)。

问题

读入输入工作正常,但要结束用户输入,用户必须按下 Return 键,然后使用组合键CTRL + d(请参阅此处)。(请参阅下面的当前程序

  • 我希望用户可以sys.stdin.read通过按回车键来结束他们的输入(参见下面的预期程序

编辑:对当前过程的任何其他简化CTRL + d也表示赞赏。

  • 这是可行的吗?

  • 这里有一些技巧但我想也许有更好的方法

当前代码

    # display text on screen
    print("Review this text\n" + text)
    # user will copy and paste relevant items from text displayed into Terminal
    user_input =  sys.stdin.read() 
    print ("hit ctrl + d to continue")
    # …
Run Code Online (Sandbox Code Playgroud)

python stdin user-input sys

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

在argparse中使用numpy数据类型

我正在设置一个Argparse解析器来通过shell读取一些用户输入.输入将用于从包含字符串和数字的pandas DataFrame中提取数据.我想type=在Argparse中自动设置参数.add_argument()以匹配相应列的数据类型.

我的想法是设置像这样的Argparse参数,其中inputdata是DataFrame:

for c in inputdata.columns:
        inputname= c
        inputtype= np.dtype(inputdata[c])
        parser.add_argument("--"+inputname, type=inputtype)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:Python提出了一个ValueError: dtype('int64') is not callable.我想这是因为我没有给它Numpy文件类型喂它; 如果我将inputtype设置为float,则全部按计划进行.如果我手动输入type=np.int64,Argparse也没有问题.

  • 我怎样才能让它接受我的DataFrame中的文件类型,即上面显示的循环中的int64object?我在这里尝试了一些选项,例如dtype.type但没有任何效果.

  • 或者这是不可能的?Argparse 文档仅说明了这一点

常见的内置类型和函数可以直接用作类型参数的值

但正如我上面所说,如果明确放入,numpy数据类型似乎很好.

谢谢你的帮助!

python user-input numpy argparse pandas

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

用 Python 解析 Google Earth KML 文件(lxml,命名空间)

我正在尝试使用 xml 模块将.kml文件解析为 Python(在我用于 HTML 的 BeautifulSoup 中失败后)。

由于这是我第一次这样做,我遵循了官方教程并且一切顺利,直到我尝试构建一个迭代器来通过根迭代提取我的数据:

from lxml import etree
tree=etree.parse('kmlfile')
Run Code Online (Sandbox Code Playgroud)

这是我试图模仿的教程中的示例

如果你知道你只对一个标签感兴趣,你可以将它的名称传递给 getiterator() 让它为你过滤:

for element in root.getiterator("child"):
    print element.tag, '-', element.text
Run Code Online (Sandbox Code Playgroud)

我想获取“地标”下的所有数据,所以我尝试了

for i in tree.getiterterator("Placemark"):
    print i, type(i)
Run Code Online (Sandbox Code Playgroud)

这没有给我任何东西。什么工作是:

for i in tree.getiterterator("{http://www.opengis.net/kml/2.2}Placemark"):
    print i, type(i)
Run Code Online (Sandbox Code Playgroud)

我不明白这是怎么回事。www.opengis.net 列在文档开头的标签中(kml xmlns="http://www.opengis.net/kml/2.2"...),但我不明白

  • {} 中的部分与我的具体示例有什么关系

  • 为什么它与教程不同

  • 我做错了什么

任何帮助深表感谢!

python xml xpath lxml xml-namespaces

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

仅在一侧的图边距外绘制 abline

我正在处理一个 R 绘图,该绘图将被我正在创建的垂直线分成两部分abline()。我希望该 abline 仅在一侧越过我的绘图边界。

我发现这篇关于设置par(xpd=) 的有用帖子。但是,我无法弄清楚如何使用此命令使线条仅在一侧越过绘图边框,如下面的屏幕截图所示。

  • 有没有办法在基础 R 中做到这一点?(或者我是否必须在 ggplot 等中重建整个内容?)

  • 我觉得关键可能是、 等之间的差异figure regiondevice region但无法真正确定它们之间的差异。我查看了这个 来源, 但至少对于我的情节来说,这些设置似乎是一样的——如果有人在这里也能得到一些帮助,那就太酷了!

这是我的方法:

plot(100, 100)
par(xpd=TRUE)
abline(v=70, lty=3)
Run Code Online (Sandbox Code Playgroud)

我得到/想要的:

我的阴谋

任何帮助表示赞赏!

plot r par

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