位置索引器超出范围

时间:2020-05-24 04:53:30

标签: python-3.x recommendation-engine cosine-similarity

我只是使用余弦相似性创建一个简单的推荐系统,我正在尝试推荐这道菜。我的数据集包含Dish_name,食物类型(蔬菜或非蔬菜),配料。我使用TFIDF将成分转换为向量,并使用余弦相似度作为距离。

我创建了两个用户功能。首先获取食物类型并从数据框中过滤出数据,并应用TFIDF和余弦相似度。


df =[]
def category(type):

    global tfidf
    global df
    global cosine_similarities

    df = df1.loc[df1['Food Type'] == type]
    df.reset_index(level = 0, inplace = True)
    df = df.head(50)

    tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df = 0, stop_words='english')
    tfidf = tf.fit_transform(df['clean'])

    from sklearn.metrics.pairwise import cosine_similarity

    cosine_similarities = cosine_similarity(tfidf_matrix, tfidf_matrix)

上面的代码有效,并且cosine_similarities类型为ndarray

我的第二个用户定义功能是使用余弦相似度评分推荐菜品


hotels = df['Dish_Name']
#Reverse mapping of the index
indices = pd.Series(df.index, index = df['Dish_Name'])

def recommendations(dish):
    idx = indices[dish]
    sim_scores = list(enumerate(cosine_similarities[idx]))
    sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
    sim_scores = sim_scores[1:5]
    dish_indices = [i[0] for i in sim_scores]
    return hotels.iloc[dish_indices]

运行上面的代码时,出现以下错误

enter image description here

请告知

0 个答案:

没有答案
相关问题