pyFM
pyFM copied to clipboard
Use seed in train_test_split
Permits having the same result when running the same experiment twice.
Follows recommendation given at https://github.com/coreylynch/pyFM/issues/19
Tested with
from pyfm import pylibfm
from sklearn.feature_extraction import DictVectorizer
import numpy as np
def test_reproducible():
train = [
{"user": "1", "item": "5", "age": 19},
{"user": "2", "item": "43", "age": 33},
{"user": "3", "item": "20", "age": 55},
{"user": "4", "item": "10", "age": 20},
]
v = DictVectorizer()
X = v.fit_transform(train)
y = np.repeat(1.0,X.shape[0])
fm = pylibfm.FM(seed=42)
fm.fit(X,y)
pred = fm.predict(v.transform({"user": "1", "item": "10", "age": 24}))[0]
expected = 0.99148472
diff = abs(pred - expected)
assert diff < 10 ** -6