推荐系统:ValueError at /无法将字符串转换为float:

时间:2017-09-01 07:27:58

标签: python django python-2.7

我正在尝试使用python和django构建一个电影推荐器Web应用程序。我正在尝试使用命令来拍摄电影的描述并创建一个信息检索系统,以允许用户找到键入一些相关单词的电影。然后将该tf-idf模型与初始推荐系统模型(基于CF项和对数似然比)一起保存在Django缓存中。

加载数据的命令是

python manage.py load_data --input=plots.csv --nmaxwords=30000  --umatrixfile=umatrix.csv

终端错误

File "/home/anthra/server_movierecsys/books_recsys_app/management/commands/load_data.py", line 80, in handle
matr[0]=newrow
ValueError: could not convert string to float: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,

plot.csv截图

plot.csv umatrix.csv

代码如下:

    matr = np.empty([1,ndims])
    titles = []
    cnt=0
    for m in xrange(nmovies):
        moviedata = MovieData()
        moviedata.title=tot_titles[m]
        moviedata.description=tot_textplots[m]
        moviedata.ndim= ndims
        moviedata.array=json.dumps(vec_tfidf[m].toarray()[0].tolist())
        moviedata.save()
        newrow = moviedata.array
        if cnt==0:
            matr[0]=newrow
        else:
            matr = np.vstack([matr, newrow])
        titles.append(moviedata.title)
        cnt+=1

moviedata.array输出 moviedata.array output

2 个答案:

答案 0 :(得分:0)

json.dumps为newrow变量生成一个字符串。然后,您尝试将序列化的变量写入numpy数组。

据我所知,numpy数组仅限于声明的类型(如果你没有显式地提供一个,则隐式),所以当你用浮点数初始化数组时,代码会尝试输入你的字符串var newrow到浮点值 - 由于您没有传入表示数字的字符串而是传递数字的字符串而失败。

答案 1 :(得分:0)

微小的改变给了很棒的结果。改变了

$("div[id^=page]").each(function() {
    var match = this.id.match(/\d+$/)[0];
    $(this).load('cards/' + match + '.html');
});

moviedata.array=json.dumps(vec_tfidf[m].toarray()[0].tolist())"