pyFM icon indicating copy to clipboard operation
pyFM copied to clipboard

Use seed in train_test_split

Open yetanotherion opened this issue 5 years ago • 1 comments

Permits having the same result when running the same experiment twice.

Follows recommendation given at https://github.com/coreylynch/pyFM/issues/19

yetanotherion avatar Mar 07 '19 14:03 yetanotherion

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

yetanotherion avatar Mar 07 '19 15:03 yetanotherion