def test_cross_val_score_multi(): # Generate some toy data. rng = np.random.RandomState(0) U = rng.rand(50, 3) V = rng.rand(3, 20) X = np.dot(U, V) X = (X > X.mean()).astype(np.int32) cv = ShuffleSplit(n_iter=10) mf = ImplicitMF(n_components=3, max_iter=10, alpha=1e-3, random_state=0) scores = cross_val_score(mf, X, cv, metric=["precision", "recall"]) assert_equal(scores.shape, (cv.n_iter, 2))
version = "100k" X = load_movielens(version) print(X.shape) # Binarize and pretend this is implicit feedback. cond = X.data > X.data.mean() X.data[cond] = 1 X.data[~cond] = 0 X_tr, X_te = train_test_split(X, train_size=0.75, random_state=0) X_tr = X_tr.tocsr() X_te = X_te.tocsr() cb = Callback(X_tr, X_te) mf = ImplicitMF(n_components=30, max_iter=50, alpha=0.1, callback=cb, random_state=0) mf.fit(X_tr) plt.figure() plt.plot(cb.times, cb.obj) plt.xlabel("CPU time") plt.xscale("log") plt.ylabel("Objective value") plt.figure() plt.plot(cb.times, cb.f1) plt.xlabel("CPU time") plt.xscale("log") plt.ylabel("F1 score") plt.show()
import sys import time from spira.datasets import load_movielens from spira.cross_validation import train_test_split from spira.completion import ImplicitMF from spira.metrics import average_precision try: version = sys.argv[1] except: version = "100k" X = load_movielens(version) print(X.shape) # Binarize and pretend this is implicit feedback. cond = X.data > X.data.mean() X.data[cond] = 1 X.data[~cond] = 0 X_tr, X_te = train_test_split(X, train_size=0.75, random_state=0) start = time.time() mf = ImplicitMF(n_components=30, max_iter=10, alpha=1e-1, random_state=0, verbose=1) mf.fit(X_tr) print("Time", time.time() - start) X_score = mf.decision_function(X_te) print("Average Precision", average_precision(X_te, X_score))
from spira.datasets import load_movielens from spira.cross_validation import train_test_split from spira.completion import ImplicitMF from spira.metrics import average_precision try: version = sys.argv[1] except: version = "100k" X = load_movielens(version) print(X.shape) # Binarize and pretend this is implicit feedback. cond = X.data > X.data.mean() X.data[cond] = 1 X.data[~cond] = 0 X_tr, X_te = train_test_split(X, train_size=0.75, random_state=0) start = time.time() mf = ImplicitMF(n_components=30, max_iter=10, alpha=1e-1, random_state=0, verbose=1) mf.fit(X_tr) print("Time", time.time() - start) X_score = mf.decision_function(X_te) print("Average Precision", average_precision(X_te, X_score))