int main(int argc, char *argv[])
{
    // Force printf calls to stdout to be printed immediately.
    setbuf(stdout, NULL);

    QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QFont font("Arial");
    font.setWeight(QFont::Light);
    app.setFont(font);

    // Read configuration arguments from "config.txt" in the same directory as the exectuable.
    QString connectionString;
    QString devId;
    const QString configFilePath = app.applicationDirPath() + QStringLiteral("/config.txt");
    QFile file(configFilePath);
    if (file.open(QIODevice::ReadOnly)) {
        QByteArray contents = file.readAll();
        QList<QByteArray> configArgs = contents.split('\n');
        bool configFormatError = false;
        if (configArgs.size() >= 2) {
            connectionString = configArgs.at(0);
            devId = configArgs.at(1);

            if (connectionString.isEmpty() || devId.isEmpty())
                configFormatError = true;
        } else {
            configFormatError = true;
        }

        if (configFormatError) {
            qWarning() << "Expected <connectionString>\\n<devId> in config.txt, but found:" << contents
                << "\nRunning in offline mode";
        }
    } else {
        qWarning().nospace() << "No config.txt found at " << configFilePath << "; running in offline mode";
    }

    UserModel userModel(connectionString, devId);

    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("userModel", &userModel);
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
Exemple #2
0
void test_Fill_Predictor()
{
	string train_data = "E:/data/resys/corpus/1/train/base";
	string test_data = "E:/data/resys/corpus/1/test/u1.test";
	FileDataReader train_reader = FileDataReader(train_data);
	FileDataReader test_reader = FileDataReader(test_data);
	int n_user, n_item, n_rating;
	n_user = 943;
	n_item = 1682;
	n_rating = 80000;
	UserModel userModel(n_user,n_item,n_rating);
	UserModel testModel(n_user,n_item,20000);
	UserModel resultModel(n_user,n_item,20000);
	ItemModel itemModel(n_user,n_item,n_rating);
	if(train_reader.readData(userModel) && train_reader.readData(itemModel) 
		&& test_reader.readData(testModel)) {
		int min_com = 0;
		double min_sim = 0.00001;
		int shrink_parameter = 25;
		Similarity_Shrinking shrinker(min_com,min_sim,shrink_parameter);
		Pearson_Similarity similarity(shrinker);
		UserBased_Predictor predictor = UserBased_Predictor(similarity,30,0);

		min_com = 30;
		min_sim = 0.3;
		shrink_parameter = 40;
		NeighborCollection *item_nbs = new NeighborCollection[n_item+1];
		vector<FillObj> *u_fobjs = new vector<FillObj>[n_user+1];
		Similarity_Shrinking shrinker2(min_com,min_sim,shrink_parameter);
		Pearson_Similarity similarity2(shrinker2);
		similarity2.similarity(itemModel,item_nbs,1);
		//similarity2.similarity(itemModel,item_nbs,1);
		Fill_Predictor fill_predictor;
		//int fill_count = fill_predictor.cal_fill_objs(userModel,item_nbs,u_fobjs,min_com);
		int fill_count = fill_predictor.cal_fill_objs(userModel,item_nbs,u_fobjs,min_sim);
		cout << fill_count << endl;
		fill_predictor.fill(predictor,userModel,u_fobjs);

		predictor.train(userModel);
		predictor.predictAll(userModel,testModel,resultModel);
		double rmse = evl_rmse(testModel, resultModel);
		cout << "RMSE: " << rmse << endl;
		double mae = evl_mae(testModel, resultModel);
		cout << "MAE: " << mae << endl;
	}
}
Exemple #3
0
void test_UserItemBased_Predictor()
{
	clock_t begin,end;
	string train_data = "E:/data/resys/corpus/1/train/base";
	string test_data = "E:/data/resys/corpus/1/test/u1.test";
	FileDataReader train_reader = FileDataReader(train_data);
	FileDataReader test_reader = FileDataReader(test_data);
	int n_user, n_item, n_rating;
	n_user = 943;
	n_item = 1682;
	n_rating = 80000;
	UserModel userModel(n_user,n_item,n_rating);
	ItemModel itemModel(n_user,n_item,n_rating);
	UserModel testModel(n_user,n_item,20000);
	UserModel resultModel(n_user,n_item,20000);
	if(train_reader.readData(userModel) && train_reader.readData(itemModel) && test_reader.readData(testModel)) {
		int min_com = 0;
		double min_sim = 0.05;
		int shrink_parameter = 30;
		Similarity_Shrinking shrinker(min_com,min_sim,shrink_parameter);
		Pearson_Similarity similarity(shrinker);
		UserItemBased_Predictor predictor = UserItemBased_Predictor(similarity,15,0);
		begin = clock();
		predictor.train(userModel,itemModel);
		end = clock();
		cout << "Train time: " << (end - begin) * 1.0 / CLOCKS_PER_SEC << endl;
		begin = end;
		predictor.predictAll(userModel,itemModel,testModel,resultModel);
		end = clock();
		cout << "Predict time: " << (end - begin) * 1.0 / CLOCKS_PER_SEC << endl;
		double rmse = evl_rmse(testModel, resultModel);
		cout << "RMSE: " << rmse << endl;
		double mae = evl_mae(testModel, resultModel);
		cout << "MAE: " << mae << endl;
	}
}