我正在创建一个推荐系统,我的数据的其中一列为'codeX'。 codeX列包括2278K,5567H,56738P等格式的产品代码。为了创建稀疏矩阵,我将codeX列转换为数字代码。 这是我用于转换的代码
`df['CodeX'] = df['CodeX'].astype("category")
df['product_id']= df['StockCode'].cat.codes
现在,在进行所有其他相关计算并拟合模型之后,我得到了一组用户的推荐,如下所示:
结果中的每一行代表每个用户的推荐项目列表
recommendation =
array([[2733, 3145, 1019, 402, 2043],
[2733, 886, 402, 797, 763],
[1648, 2128, 3216, 797, 1934],
...,
[2903, 1842, 1648, 1841, 1449],
[1370, 2621, 672, 2440, 2517],
[ 218, 2705, 809, 1813, 3087]], dtype=int32)
但是我希望我的结果包含其原始代码
array([[837Y, 73489U, ...],
[2837B, 82381W, ...],
...,
[2563Y,27487P, ...]])
我尝试使用查找,以便将值映射到其原始形式
product_lookup= train_df[['product_id','CodeX']].drop_duplicates()
product_lookup['product_id']= product_lookup.product_id.astype(str)
但我仍然无法获得结果
我对python完全陌生。有人可以指导我如何以所需的格式获得结果。
答案 0 :(得分:0)
df['numcode']= df['CodeX'].astype("category").cat.codes
为什么不重新格式化现有的列,为什么不重新制作一个新列呢?这样,您可以保留原始值。另一个选择是制作字典并将输出映射到字典值。