Git Product home page Git Product logo

Comments (7)

saghiles avatar saghiles commented on August 18, 2024

Hi, you can specify the list of items to rank in the Recommender.rank() function.

from cornac.

wahyudierwin avatar wahyudierwin commented on August 18, 2024

When I run,

r = model.rank(user_idx=1,item_indices=[0,12,23,79])

it results in

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-247-37619b116839> in <module>
----> 1 r = model.rank(user_idx=1,item_indices=[0,12,23,79])

~/.local/lib/python3.6/site-packages/cornac/models/recommender.py in rank(self, user_idx, item_indices)
    280             item_scores = all_item_scores[: len(item_indices)]
    281             item_rank = item_scores.argsort()[::-1]
--> 282             item_scores = item_scores[item_indices]
    283 
    284         return item_rank, item_scores

IndexError: index 12 is out of bounds for axis 0 with size 4

.
Am I missing something?

from cornac.

saghiles avatar saghiles commented on August 18, 2024

Thanks for raising this issue. The current assumption with '''item_indices''' is that the list of item indices are continuous (no missing indices) from 0 to len(item_indices). This assumption is restrictive and it would not allow you to solve your problem. We are working on improving it.

In the mean time you can rank all items and post-process the ranked list to keep only the items of interest.

Btw Cornac uses its own indices, please take a look at the Datasets documentation if you want to map back to original ids or vice versa

from cornac.

tqtg avatar tqtg commented on August 18, 2024

When I run,

r = model.rank(user_idx=1,item_indices=[0,12,23,79])

it results in

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-247-37619b116839> in <module>
----> 1 r = model.rank(user_idx=1,item_indices=[0,12,23,79])

~/.local/lib/python3.6/site-packages/cornac/models/recommender.py in rank(self, user_idx, item_indices)
    280             item_scores = all_item_scores[: len(item_indices)]
    281             item_rank = item_scores.argsort()[::-1]
--> 282             item_scores = item_scores[item_indices]
    283 
    284         return item_rank, item_scores

IndexError: index 12 is out of bounds for axis 0 with size 4

.
Am I missing something?

@wahyudierwin it seems that your training data only has 4 items. Could you share your code?

from cornac.

wahyudierwin avatar wahyudierwin commented on August 18, 2024

Sorry for the late reply.

In the mean time you can rank all items and preprocess the ranked list to keep only the items of interest.

@saghiles thanks for your suggestion, probably I will do as you suggest.

@tqtg I'm sure that the training data has more than 4 items. This is the code, and I'm afraid I cannot share the data because of confidentiality.

train_set = cornac.data.Dataset.from_uir(data.itertuples(index=False), seed=42)
model = cornac.models.BPR(k=32,
                            max_iter=100,
                            learning_rate=0.01,
                            lambda_reg=0.001,
                            verbose=True,
                            seed=42)
model.fit(train_set)

r = model.rank(user_idx=1,item_indices=[0,12,23,79])

from cornac.

tqtg avatar tqtg commented on August 18, 2024

@wahyudierwin thank you for providing the details. We have now fixed the rank() function to work with an arbitrary list of item_indices, in the latest release version 1.8.0. You can give it a try and see if it solves your problem. Thanks!

from cornac.

wahyudierwin avatar wahyudierwin commented on August 18, 2024

@tqtg very glad to hear that! I will give it a try as soon as possible. Thank you very much!

from cornac.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.