2017-05-15 13 views
0

私はFrappe(http://baltrunas.info/data/CARS2_code.zip)データセットでpyFMを使用しようとしています。以下は、私のコードです:FrappeデータセットでpyFMを使用する

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)) 

しかし、私は0.0000として、このコードとFM MSEを実行する上で非推奨警告が表示されます。 コードを正しく実行するにはどうすればよいですか?

+0

問題は、レーティング= 1を含む暗黙的なデータセットであるため、トレーニングデータセットにある可能性があります。 –

答えて

0

暗黙的なデータセットには肯定的な評価しか含まれていないため、FMはデータセットに対して機能しません(エラーは0.00になります)。 FMが(実際の設定で)正しく動作するには、負のインスタンス(例:rating = 0)が必要です。

関連する問題