Exemple #1
0
def recommend_items(paper_symbol_U_1, paper_symbol_U_2, paper_symbol_V,
                    paper_symbol_H_1, paper_symbol_H_2, train_buy_set, alpha,
                    feature_k, item_k):
    X = paper_symbol_U_1.dot(paper_symbol_V.T)
    Y = paper_symbol_U_2.dot(paper_symbol_V.T)
    A = paper_symbol_U_1.dot(paper_symbol_U_2.T) + paper_symbol_H_1.dot(
        paper_symbol_H_2.T)

    features = get_top_columns_index(X, feature_k)

    #print features

    _change_X_with_features(X, features)

    #print 'change OK'

    tmp1 = alpha * X.dot(Y.T) / (feature_k * 5)
    tmp1.index = range(tmp1.shape[0])
    tmp1.columns = range(tmp1.shape[1])
    tmp2 = (1 - alpha) * A
    tmp2.index = range(tmp2.shape[0])
    tmp2.columns = range(tmp2.shape[1])
    #print 'tmp1', sorted(tmp1.ix[0,:], reverse=True)[:8]
    #print 'tmp2', sorted(tmp2.ix[0,:], reverse=True)[:8]
    score = tmp1.add(tmp2, fill_value=0)
    #print 'score', score.ix[0,:5]

    #score.to_csv('score.csv', index=False)
    #print score.ix[0,0]

    items = get_top_columns_index(score, score.shape[1])

    #print items[0]

    result = set([])

    for idx in range(len(items)):
        val = items[idx]
        user_items_num = 0
        for cdx in val:
            potentional_ui = (idx, cdx)
            #if not potentional_ui in train_buy_set:
            result.add(potentional_ui)
            user_items_num += 1
            if user_items_num >= item_k:
                break

    return result
def recommend_items(paper_symbol_U_1, paper_symbol_U_2, paper_symbol_V, paper_symbol_H_1, paper_symbol_H_2, train_buy_set, alpha,  feature_k, item_k):
    X = paper_symbol_U_1.dot(paper_symbol_V.T)
    Y = paper_symbol_U_2.dot(paper_symbol_V.T)
    A = paper_symbol_U_1.dot(paper_symbol_U_2.T) + paper_symbol_H_1.dot(paper_symbol_H_2.T)

    features = get_top_columns_index(X, feature_k)

    #print features

    _change_X_with_features(X, features)

    #print 'change OK'

    tmp1 = alpha * X.dot(Y.T) / (feature_k * 5)
    tmp1.index = range(tmp1.shape[0])
    tmp1.columns = range(tmp1.shape[1])
    tmp2 = (1 - alpha) * A
    tmp2.index = range(tmp2.shape[0])
    tmp2.columns = range(tmp2.shape[1])
    #print 'tmp1', sorted(tmp1.ix[0,:], reverse=True)[:8]
    #print 'tmp2', sorted(tmp2.ix[0,:], reverse=True)[:8]
    score = tmp1.add(tmp2, fill_value=0)
    #print 'score', score.ix[0,:5]

    #score.to_csv('score.csv', index=False)
    #print score.ix[0,0]

    items = get_top_columns_index(score, score.shape[1])

    #print items[0]

    result = set([])

    for idx in range(len(items)):
        val = items[idx]
        user_items_num = 0
        for cdx in val:
            potentional_ui = (idx, cdx)
            #if not potentional_ui in train_buy_set:
            result.add(potentional_ui)
            user_items_num += 1
            if user_items_num >= item_k:
                break

    return result
Exemple #3
0
def recommend_features(paper_symbol_U_1, paper_symbol_V, feature_k):
    X = paper_symbol_U_1.dot(paper_symbol_V.T)
    features = get_top_columns_index(X, feature_k)

    result = {}

    for idx in range(len(features)):
        result[idx] = set(features[idx])

    return result
def recommend_features(paper_symbol_U_1, paper_symbol_V, feature_k):
    X = paper_symbol_U_1.dot(paper_symbol_V.T)
    features = get_top_columns_index(X, feature_k)

    result = {}

    for idx in range(len(features)):
        result[idx] = set(features[idx])

    return result