浮点数列表中最大值的索引 | Python
Index of max value from list of floats | Python
我看了很多帖子,但 none 似乎有帮助。
我想计算词频和逆向文档频率;深度学习中使用的词袋技术。这段代码的目的只是为了计算公式。我这里没有实现 ANN。
下面是一个最小的代码示例。在 for 循环之后我遇到了这个问题。
import math
docs = 1000
words_per_doc = 100 # length of doc
#word_freq = 10
#doc_freq = 100
dp = 4
print('Term Frequency Inverse Document Frequency')
# term, word_freq, doc_freq
words = [['the', 10, 100], ['python', 10, 900]]
tfidf_ = []
for idx, val in enumerate(words):
print(words[idx][0] + ':')
word_freq = words[idx][1]
doc_freq = words[idx][2]
tf = round(word_freq/words_per_doc, dp)
idf = round(math.log10(docs/doc_freq), dp)
tfidf = round((tf*idf), dp)
print(str(tf) + ' * ' + str(idf) + ' = ' + str(tfidf))
tfidf_.append(tfidf)
print()
max_val = max(tfidf)
max_idx = tfidf.index(max_val)
#max_idx = tfidf.index(max(tfidf))
lowest_idx = 1 - max_idx
print('Therefore, \'' + words[max_idx][0] + '\' semantically is more important than \'' + words[lowest_idx][0] + '\'.')
#print('log(N/|{d∈D:w∈W}|)')
错误:
line 25, in <module>
max_val = max(tfidf)
TypeError: 'float' object is not iterable
您正试图在您的函数上传递 tfidf 而不是 tfidf_
tfidf 是整数,tfidf_ 是您的列表
所以代码应该是
max_val = max(tfidf_)
max_idx = tfidf_.index(max_val)
我看了很多帖子,但 none 似乎有帮助。
我想计算词频和逆向文档频率;深度学习中使用的词袋技术。这段代码的目的只是为了计算公式。我这里没有实现 ANN。
下面是一个最小的代码示例。在 for 循环之后我遇到了这个问题。
import math
docs = 1000
words_per_doc = 100 # length of doc
#word_freq = 10
#doc_freq = 100
dp = 4
print('Term Frequency Inverse Document Frequency')
# term, word_freq, doc_freq
words = [['the', 10, 100], ['python', 10, 900]]
tfidf_ = []
for idx, val in enumerate(words):
print(words[idx][0] + ':')
word_freq = words[idx][1]
doc_freq = words[idx][2]
tf = round(word_freq/words_per_doc, dp)
idf = round(math.log10(docs/doc_freq), dp)
tfidf = round((tf*idf), dp)
print(str(tf) + ' * ' + str(idf) + ' = ' + str(tfidf))
tfidf_.append(tfidf)
print()
max_val = max(tfidf)
max_idx = tfidf.index(max_val)
#max_idx = tfidf.index(max(tfidf))
lowest_idx = 1 - max_idx
print('Therefore, \'' + words[max_idx][0] + '\' semantically is more important than \'' + words[lowest_idx][0] + '\'.')
#print('log(N/|{d∈D:w∈W}|)')
错误:
line 25, in <module>
max_val = max(tfidf)
TypeError: 'float' object is not iterable
您正试图在您的函数上传递 tfidf 而不是 tfidf_
tfidf 是整数,tfidf_ 是您的列表
所以代码应该是
max_val = max(tfidf_)
max_idx = tfidf_.index(max_val)