我试图在Frappe (code.zip)数据集上使用code.zip。以下是我的代码:
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from pyfm import pylibfm
def loadData(filename,path="datasets/"):
data = []
y = []
users=set()
items=set()
with open(path+filename) as f:
for line in f:
(user,movieid,rating,ts)=line.split('\t')
data.append({ "user_id": str(user), "movie_id": str(movieid)})
y.append(float(rating))
users.add(user)
items.add(movieid)
return (data, np.array(y), users, items)
(train_data, y_train, train_users, train_items) = loadData("traindata.txt")
(test_data, y_test, test_users, test_items) = loadData("testdata.txt")
v = DictVectorizer()
X_train = v.fit_transform(train_data)
X_test = v.transform(test_data)
fm = pylibfm.FM(num_factors=10, num_iter=100, verbose=True, task="regression", initial_learning_rate=0.001,learning_rate_schedule="optimal")
fm.fit(X_train,y_train)
preds = fm.predict(X_test)
from sklearn.metrics import mean_squared_error
print("FM MSE: %.4f" % mean_squared_error(y_test,preds)) 但是,在运行此代码时,我会收到反对的警告,并将FM作为0.0000运行。如何使代码正确运行?
发布于 2017-10-19 20:16:29
由于隐式数据集仅包含正评等,因此FM将无法在该数据集上工作(它将给出错误0.00)。您需要有负面的实例(例如。FM的正确工作(在现实世界中)。
https://stackoverflow.com/questions/43980357
复制相似问题