示例#1
0
def test_store_als(store_cls):
    algo = BiasedMF(10)
    algo.fit(lktu.ml_test.ratings)

    with store_cls() as store:
        k = store.put_model(algo)
        client = store.client()

        a2 = client.get_model(k)
        assert a2 is not algo
        assert a2.item_features_ is not algo.item_features_
        assert np.all(a2.item_features_ == algo.item_features_)
        assert a2.user_features_ is not algo.user_features_
        assert np.all(a2.user_features_ == algo.user_features_)
        del a2
示例#2
0
def test_store_als():
    algo = BiasedMF(10)
    algo.fit(lktu.ml_test.ratings)

    shared = lks.persist(algo)
    k2 = pickle.loads(pickle.dumps(shared))
    try:
        a2 = k2.get()

        assert a2 is not algo
        assert a2.item_features_ is not algo.item_features_
        assert np.all(a2.item_features_ == algo.item_features_)
        assert a2.user_features_ is not algo.user_features_
        assert np.all(a2.user_features_ == algo.user_features_)
        del a2
        k2.close()
        del k2
    finally:
        shared.close()
示例#3
0
def test_als_isolate(ml20m, rng):
    users = rng.choice(ml20m['user'].unique(), 5000, replace=False)
    algo = BiasedMF(20, iterations=10)
    algo = Recommender.adapt(algo)
    _log.info('training %s', algo)
    ares = batch.train_isolated(algo, ml20m)
    try:
        _log.info('recommending with %s', algo)
        recs = batch.recommend(ares, users, 10)
        assert recs['user'].nunique() == 5000
        _log.info('predicting with %s', algo)
        pairs = ml20m.sample(1000)
        preds = batch.predict(ares, pairs)
        assert len(preds) == len(pairs)
    finally:
        ares.close()
def instantiate(opts, implicit):
    feats, ureg, ireg, damp = opts
    return GenderCalibratedRecommender(
        BiasedMF(feats, reg=(ureg, ireg), damping=damp), getBookGender(), 0.5)
"""
Code for a gender balanced  explicit ALS algorithm.
"""

from skopt.space import Integer, Real
from lenskit.algorithms.als import BiasedMF

from bookgender.rerank.GenderCalibratedRecommender import GenderCalibratedRecommender
from bookgender.rerank.fastForceGenderBalanceRecommender import FastForceGenderBalanceRecommender
from bookgender.rerank.rerankUtil import getBookGender
from bookgender.rerank.slowForceGenderBalanceRecommender import SlowForceGenderBalanceRecommender
from bookgender.rerank.slowForceGenderTargetRecommender import SlowForceGenderTargetRecommender

dimensions = [Integer(5, 300), Real(1.0e-6, 5), Real(1.0e-6, 5), Real(0, 25)]


def instantiate(opts, implicit):
    feats, ureg, ireg, damp = opts
    return GenderCalibratedRecommender(
        BiasedMF(feats, reg=(ureg, ireg), damping=damp), getBookGender(), 0.5)
    #return SlowForceGenderTargetRecommender(BiasedMF(feats, reg=(ureg, ireg), damping=damp), getBookGender())


update = None

sweep_points = [BiasedMF(nf) for nf in range(25, 250, 25)]
sweep_attrs = ['features']
示例#6
0
import pickle
from lenskit.algorithms.als import BiasedMF
from lenskit.batch import predict
from lenskit.metrics.predict import rmse


test_bool = True

train = pd.read_pickle("../data/ml-1m-split/train.pkl")
val = pd.read_pickle("../data/ml-1m-split/val.pkl")
test = pd.read_pickle("../data/ml-1m-split/test.pkl")

num_factors = 30
num_iters = 100

model = BiasedMF(num_factors, iterations=num_iters)
print("Fitting model...")
model.fit(train)
print("Making validation predictions...")
val_preds = predict(model, val)
val_result = rmse(val_preds["prediction"], val_preds["rating"])

if test_bool:
    print("Making test predictions...")
    test_preds = predict(model, test)
    test_result = rmse(test_preds["prediction"], test_preds["rating"])
else:
    test_result = 0

print("============= RESULTS =============\nFactors: {}\nIterations: {}\nValidation RMSE: {}\nTest RMSE: {}" \
    .format(num_factors, num_iters, val_result, test_result))
示例#7
0
def default(implicit):
    return BiasedMF(50)
示例#8
0
def instantiate(opts, implicit):
    feats, ureg, ireg, damp = opts
    return BiasedMF(feats, reg=(ureg, ireg), damping=damp)