This is a python wrapped for LibFFM library writen in C++
Installing it:
make so
mv libffm.so ffm
python setup.py install
Using it:
import ffm
from sklearn.metrics import roc_auc_score
# prepare the data
# (field, index, value) format
X = [[(1, 2, 1), (2, 3, 1), (3, 5, 1)],
[(1, 0, 1), (2, 3, 1), (3, 7, 1)],
[(1, 1, 1), (2, 3, 1), (3, 7, 1), (3, 9, 1)],]
y = [1, 1, 0]
ffm_data = ffm.FFMData(X, y)
# train the model for 10 iterations
n_iter = 10
model = ffm.FFM(eta=0.1, lam=0.0001, k=4)
model.init_model(ffm_data)
for i in range(n_iter):
print('iteration %d, ' % i, end='')
model.iteration(ffm_data)
y_pred = model.predict(ffm_data)
auc = roc_auc_score(y, y_pred)
print('train auc %.4f' % auc)
# save the model
model.save_model('ololo.bin')
# load it to reuse the model
model = ffm.read_model('ololo.bin')