【问题标题】:Why do I get "NameError: name '...' is not defined" in python module?为什么我在 python 模块中得到“NameError: name '...' is not defined”?
【发布时间】:2012-06-13 19:27:46
【问题描述】:

文件名:recom.py

# Returns a distance-based similarity score for person1 and person2
def sim_distance(prefs,person1,person2):
# Get the list of shared_items
    si={}
    for item in prefs[person1]:
        if item in prefs[person2]:
            si[item]=1
    # if they have no ratings in common, return 0
    if len(si)==0: return 0
    # Add up the squares of all the differences
    sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
    for item in prefs[person1] if item in prefs[person2]])
    return 1/(1+sum_of_squares)

当我尝试执行 reload(recom)

时出现错误

回溯(最近一次通话最后一次): 文件“”,第 1 行,在 NameError:名称“recom”未定义

【问题讨论】:

  • 你之前有import recom吗?
  • 不,我只是从推荐进口评论家中做了`(评论家是一本字典)。感谢您的提醒!。问题已解决!

标签: python machine-learning


【解决方案1】:

我用的是python 3.4.3,也遇到了同样的问题。下面的解决方案为我解决了它。

当您使用reload() 时,您还应该在使用之前使用from imp import reload

关于获得欧几里得距离分数,您可以得到如下答案:

 from recom import critics
 from recom import sim_distance
 sim_distance(critics,'Lisa Rose','Gene Seymour')

结果是:0.29429805508554946

【讨论】:

    【解决方案2】:

    您需要先使用“import recom”导入模块,然后才能重新加载。此外,请确保代码在可以解析推荐路径的位置执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-08
      • 2015-01-20
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2018-06-11
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多