我只是使用余弦相似性创建一个简单的推荐系统,我正在尝试推荐这道菜。我的数据集包含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]
运行上面的代码时,出现以下错误
请告知