m0_56062032 2024-03-14 21:56 采纳率: 68%
浏览 2
已结题

knn电影推荐评估准确率

最后结果ValueError: continuous is not supported
说不支持继续,classification_report能评估回归问题嘛?我要怎样才能得到准确率,召回率和F1呢?


# 导入必要的库
from sklearn.metrics import classification_report
 
# 创建训练集和测试集
train_data = movie_features_df.iloc[:100]  # 训练特征
train_labels = movie_features_df.iloc[:100] # 训练目标值(评分)
test_data = movie_features_df.iloc[100:]  # 测试特征
test_labels = movie_features_df.iloc[100:] # 真实评分
 
# 训练knn模型
model_knn.fit(train_data,train_labels)
 
# 根据训练的模型预测测试集中的电影评分
predicted_ratings = []
for i in range(len(test_data)):
    distances, indices = model_knn.kneighbors(movie_features_df.iloc[query_index,:].values.reshape(1, -1),
                                          n_neighbors = 6)
    #根据电影之间的相似度预测电影评分
    predicted_rating = np.mean(train_data.iloc[indices.flatten(), -1].values)
    predicted_ratings.append(predicted_rating)
 
# 对比预测值和真实值,计算准确率、召回率和F1值
true_ratings = test_data.values
predicted_ratings = np.array(predicted_ratings).reshape(-1,1)
predicted_ratings = np.repeat(predicted_ratings, test_data.shape[1],axis=1)
 
print(classification_report(true_ratings.flatten(), predicted_ratings.flatten()))

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-14 21:57
    关注

    引自免费微信小程序:皆我百晓生

    在您的场景中,您正在尝试使用KNN算法进行电影推荐系统的评分预测,这是一个回归问题,而非分类问题。classification_report函数是为分类任务设计的,它用于计算各类别的精确度、召回率和F1值等指标,因此不适用于连续数值的回归问题。

    对于回归问题,评估模型性能时通常会使用以下指标:

    1. 平均绝对误差(Mean Absolute Error, MAE)
    2. 均方误差(Mean Squared Error, MSE)
    3. R²分数(Coefficient of Determination)
    4. 平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)

    您可以使用如下代码来计算这些指标:

    from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
    
    # 计算评估指标
    mae = mean_absolute_error(true_ratings.flatten(), predicted_ratings.flatten())
    mse = mean_squared_error(true_ratings.flatten(), predicted_ratings.flatten())
    r2 = r2_score(true_ratings.flatten(), predicted_ratings.flatten())
    
    print(f"MAE: {mae:.2f}")
    print(f"MSE: {mse:.2f}")
    print(f"R² Score: {r2:.2f}")
    

    如果您确实需要类似准确率这样的概念,对于回归问题,R²分数是一个很好的衡量标准,它可以反映模型对数据集变化的解释程度。但请注意,回归问题并不直接对应于“准确率”这一概念。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月14日