首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scikits工具包加载数据集

如何使用scikits工具包加载数据集
EN

Stack Overflow用户
提问于 2015-11-10 16:25:55
回答 1查看 209关注 0票数 0

我正在研究推荐系统,并尝试使用scikits.crab包来使用推荐系统中的基本算法。然而,在每个教程中,在示例中,他们只是使用了自己的数据集,而我没有发现任何关于如何加载外部数据集(例如从我的计算机中)--这是您在每一本教程中都可以看到的。螃蟹:

代码语言:javascript
复制
from scikits.crab import datsets
movies=datsets.load_sample_movies()
model=MatrixPreferenceDataModel(movies.data)

但是,正如我所说的,我需要从我的机器上加载一个数据集,这个数据集可以由scikits方法使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 17:54:06

这里是螃蟹教程的相关部分。

在上面的示例中,您只对模型使用movies.data字段。movies.data看起来如下所示:

代码语言:javascript
复制
>>> print movies.data
{1: {1: 3.0, 2: 4.0, 3: 3.5, 4: 5.0, 5: 3.0},
 2: {1: 3.0, 2: 4.0, 3: 2.0, 4: 3.0, 5: 3.0, 6: 2.0},
 3: {2: 3.5, 3: 2.5, 4: 4.0, 5: 4.5, 6: 3.0},
 4: {1: 2.5, 2: 3.5, 3: 2.5, 4: 3.5, 5: 3.0, 6: 3.0},
 5: {2: 4.5, 3: 1.0, 4: 4.0},
 6: {1: 3.0, 2: 3.5, 3: 3.5, 4: 5.0, 5: 3.0, 6: 1.5},
 7: {1: 2.5, 2: 3.0, 4: 3.5, 5: 4.0}}

这只是一个字典,其中键是用户(这里用1、2、3、4、5、6和7表示),值是另一个字典,其中键是电影ID,值是评级。所以你只需要构造一个嵌套的字典。

从源代码中,作者使用以下代码从.csv文件加载数据:

代码语言:javascript
复制
def load_sample_movies():

    base_dir = join(dirname(__file__), 'data/')

    #Read data
    data_m = np.loadtxt(base_dir + 'sample_movies.csv',
            delimiter=';', dtype=str)
    item_ids = []
    user_ids = []
    data_songs = {}
    for user_id, item_id, rating in data_m:
        if user_id not in user_ids:
            user_ids.append(user_id)
        if item_id not in item_ids:
            item_ids.append(item_id)
        u_ix = user_ids.index(user_id) + 1
        i_ix = item_ids.index(item_id) + 1
        data_songs.setdefault(u_ix, {})
        data_songs[u_ix][i_ix] = float(rating)

    data_t = []
    for no, item_id in enumerate(item_ids):
        data_t.append((no + 1, item_id))
    data_titles = dict(data_t)

    data_u = []
    for no, user_id in enumerate(user_ids):
        data_u.append((no + 1, user_id))
    data_users = dict(data_u)

    fdescr = open(dirname(__file__) + '/descr/sample_movies.rst')

    return Bunch(data=data_songs, item_ids=data_titles,
                 user_ids=data_users, DESCR=fdescr.read())

该数据所在的.csv文件的形式为:

代码语言:javascript
复制
Jack Matthews;Lady in the Water;3.0
Jack Matthews;Snakes on a Planet;4.0
Jack Matthews;You, Me and Dupree;3.5
Jack Matthews;Superman Returns;5.0
Jack Matthews;The Night Listener;3.0
Mick LaSalle;Lady in the Water;3.0
Mick LaSalle;Snakes on a Planet;4.0
Mick LaSalle;Just My Luck;2.0
Mick LaSalle;Superman Returns;3.0
Mick LaSalle;You, Me and Dupree;2.0
Mick LaSalle;The Night Listener;3.0

因此,如果要创建自己的数据集,则有两个选项。要么自己将其格式化为推荐程序所需的字典格式,要么根据它们的导入为您编写一个方法。

这个项目似乎没有一个我能找到的一般的“从csv导入”方法--我可能只是错过了它,只是浏览过它。

幸运的是,由于推荐者似乎只需要字典,所以不需要额外的描述文件和所有这些,正确地格式化数据似乎就足够了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33634774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档