我正在尝试使用Last.fm的数据构建一个推荐系统,以推荐用户可能会喜欢的歌曲。
我使用NearestNeighbors算法来预测用户可能会喜欢的歌曲特征。我已经建立了模型,但遇到的问题是,在Pandas DataFrame中,我得到的是整数值而不是歌曲名称。这是我的结果截图
我希望在数据集中值部分显示歌曲名称而不是数字。我该如何实现这一点?这是输出应有的样子:
这是我的Ipython笔记本的链接: http://nbviewer.ipython.org/github/kartikjagdale/Last.fm-Song-Recommender/blob/master/Ipython%20Notebook/Last.Fm%20Song%20Recommeder.ipynb
这是我的GitHub项目的链接: https://github.com/kartikjagdale/Last.fm-Song-Recommender/
回答:
DataFrame.columns
是一个 Index
对象,可以作为数组使用。
你可以使用 pd.DataFrame(df.columns[model])
来获取名称,这里是一个示例:
import pandas as pdimport numpy as npfrom sklearn.neighbors import NearestNeighborsdf = pd.DataFrame(np.random.randint(0, 5, (10, 5)), columns=list("ABCDE"))neigh = NearestNeighbors(n_neighbors=3)neigh.fit(df.T) # 拟合数据model = neigh.kneighbors(df.T, return_distance=False)pd.DataFrame(df.columns[model])