python中的lambda函数中发生了什么?
我正在学习从文本文档中提取特征并找到了。我无法理解结尾第三行中的np.asarray(doc_counts.sum(axis=0)).ravel()返回了什么。我检查了这个,它返回了一个数字列表。我猜是术语频率,但我不确定 以及python中的lambda函数中发生了什么?,python,numpy,lambda,scikit-learn,nltk,Python,Numpy,Lambda,Scikit Learn,Nltk,我正在学习从文本文档中提取特征并找到了。我无法理解结尾第三行中的np.asarray(doc_counts.sum(axis=0)).ravel()返回了什么。我检查了这个,它返回了一个数字列表。我猜是术语频率,但我不确定 以及idx:-1*idx[1]在做什么,特别是乘以-1。我检查了zip()函数是否有与access元素关联的.idx,但找不到 代码: import numpy as np from sklearn.feature_extraction.text import CountVe
idx:-1*idx[1]
在做什么,特别是乘以-1。我检查了zip()
函数是否有与access元素关联的.idx
,但找不到
代码:
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
docs = <load your docs as an iterable>
count_vect = CountVectorizer()
doc_counts = count_vect.fit_transform(docs)
word_counts = zip(count_vect.get_feature_names(), np.asarray(doc_counts.sum(axis=0)).ravel())
word_counts = sorted(word_counts, key=lambda idx: -1 * idx[1] )
# Display top 100 words by frequency
word_counts[:100]
将numpy导入为np
从sklearn.feature\u extraction.text导入countvectorier
文件=
count\u vect=countvectorier()
文档计数=计数向量拟合变换(文档)
word\u counts=zip(count\u vect.get\u feature\u names(),np.asarray(doc\u counts.sum(axis=0)).ravel())
单词计数=已排序(单词计数,关键字=lambda idx:-1*idx[1])
#按频率显示前100个单词
字数[:100]
有人能解释一下这两行吗
提前感谢。这基本上是指定用作排序基础的键是
-1*idx[1]
。现在,word\u count
的每个元素都包含一个单词,后跟它的频率。因此,当您编写idx[1]
时,您正在访问频率,该频率被用作数组排序的基础。我认为他将它乘以-1的原因是因为默认情况下,sorted()
按升序排序,所以如果你将+ve数字列表乘以-1,并按升序排序,你会得到降序的原始列表,这正是你想要的,按频率降序排列的单词列表
你可以阅读更多关于使用lambda和输入排序的信息。在
word\u counts
中的每个项目idx
都被排序为-1*idx[1]
。我真的不明白否决这个问题的动机。是因为**点击***向下投票按钮****比回答问题更容易,让初学者逃避吗?@OmPrakash向下投票是因为你用简单的谷歌搜索就能轻松回答的问题把这个网站弄得乱七八糟。你的问题太模糊了。例如,不清楚您是否完全不理解lambda函数的概念,在这种情况下,不阅读文档的否决票是正确的,或者您是否不知道为什么在您提供的代码中应用了这个特定的lambda函数,或者您是否不了解特定lambda函数如何对输入进行排序。在任何情况下,对一个不明确且研究不足的问题投反对票都是有理由的。我们不想在网站上出现更多这样的问题,因为我们没有回答而是投了否决票。@gobrewers14,如果问题不清楚,我道歉。问题不在于python的lambda
或zip()
,而在于内部代码是如何工作的。