Ejemplo n.º 1
0
def main():
    user_list = [3, 8, 7, 5]
    item_list = [46, 34, 54]
    user_list = sorted(user_list)
    item_list = sorted(item_list)
    user_item_matrix = np.matrix([[3, 0, 3], [5, 4, 0], [1, 2, 4], [2, 2, 0]])
    user_similarity_matrix = f.get_similarity(user_item_matrix)
    print('用户相似性矩阵如下:')
    print(user_similarity_matrix)
    Recommender = f.get_recommender(user_item_matrix, user_similarity_matrix,
                                    2)
    print('根据相似性得到的推荐矩阵如下:')
    print(Recommender)
    f.recommend(5, user_list, item_list, Recommender, 2)
Ejemplo n.º 2
0
def main():
    #从数据库中读取所需信息,并做格式化预处理
    db = db_cls(db_filename="pj_data.db")
    user_list = db.read_Data(sql_query="Select id FROM User_Table")
    user_list = [ite[0] for ite in user_list]
    #item_list_dict = dict(db.read_Data(sql_query="Select id,song_name FROM Song"))
    #item_list = list(item_list_dict)
    item_list1 = db.read_Data(sql_query="Select song_id FROM User2Song")
    item_list2 = db.read_Data(sql_query="Select song_id FROM SongList2Song")
    item_list = list(set(item_list1 + item_list2))
    item_list = [ite[0] for ite in item_list]
    user_list = sorted(user_list)
    item_list = sorted(item_list)
    item_list_dict = dict(
        db.read_Data(sql_query="Select id,song_name FROM Song"))
    for item in item_list:
        item_list_dict[item] = item_list_dict.get(item, "歌名未知")
    #创建“最近听歌”字典,key为user_id,value为该用户最近听歌的歌曲id组成的列表
    recent_listen = db.read_Data(sql_query="Select * FROM User2Song")
    recent_listen_dict = dict()
    for it in recent_listen:
        recent_listen_dict[it[0]] = recent_listen_dict.get(it[0], []) + [it[1]]
    for it in user_list:
        recent_listen_dict[it] = recent_listen_dict.get(it, [])
    #创建“歌单音乐”字典,key为user_id,value为该用户收藏歌单中歌曲id组成的列表
    list_music = db.read_Data(sql_query="Select a.user_id,b.song_id \
                                         FROM User2SongList a INNER JOIN SongList2Song b\
                                         ON a.songlist_id = b.songlist_id")
    list_music_dict = dict()
    for it in list_music:
        list_music_dict[it[0]] = list_music_dict.get(it[0], []) + [it[1]]
    for it in user_list:
        list_music_dict[it] = list_music_dict.get(it, [])

    #获取用户-音乐评价矩阵
    user_item_matrix = cf.get_matrix(user_list, item_list, recent_listen_dict,
                                     list_music_dict)

    #获取用户相似度矩阵
    user_similarity_matrix = cf.get_similarity(user_item_matrix)

    #获取基于用户相似性得到的推荐矩阵
    Recommender = cf.get_recommender(user_item_matrix, user_similarity_matrix,
                                     5)

    #为id为393718733的用户推荐5首歌曲
    #cf.recommend(393718733, user_list, item_list_dict, Recommender, 20)
    cf.recommend(2141581764, user_list, item_list_dict, Recommender, 10)
Ejemplo n.º 3
0
def main():
    parser = argparse.ArgumentParser(
        description='Convert a binary logfile to json.')
    parser.add_argument('in_path',
                        metavar='infile',
                        help='The binary file that is converted to json.')

    parser.add_argument('out_path',
                        metavar='outfile',
                        nargs='?',
                        help='The output json file.')

    args = parser.parse_args()

    in_path = args.in_path
    out_path = args.out_path if args.out_path is not None else args.in_path + ".json"

    logData = cff.decode(in_path)

    for key in logData.keys():
        logData[key] = logData[key].tolist()

    f = open(out_path, "w")
    print("Number of lines written to {}: {}".format(
        out_path, str(f.write(json.dumps(logData)))))
    f.close()
Ejemplo n.º 4
0
def process_data(filename, foldername):
    logData = cff.decode(filename)

    cwd = os.getcwd()
    outputdir = cwd + '/' + foldername
    if not os.path.exists(outputdir):
        os.makedirs(outputdir)

    for group, vars in LogGroups.items():
        filename = outputdir + '/' + group +'.csv'
        names = "tick"
        values = [logData["tick"]]
        for var in vars:
            if var in logData:

                names += "," + var
                values.append(logData[var])

        if len(values) > 1:
            values = np.stack(values).T
            np.savetxt(filename, values, delimiter=',', header=names)
# -*- coding: utf-8 -*-
"""
example on how to plot decoded sensor data from crazyflie
@author: jsschell
"""
import CF_functions as cff
import matplotlib.pyplot as plt
import re

# decode binary log data
logData = cff.decode("test100")

# set window background to white
plt.rcParams['figure.facecolor'] = 'w'
    
# number of columns and rows for suplot
plotCols = 1;
plotRows = 0;

# let's see which keys exists in current data set
keys = ""
for k, v in logData.items():
    keys += k

# get plot config from user
plotGyro = 0
if re.search('gyr', keys):
    inStr = input("plot gyro data? ([Y]es / [n]o): ")
    if ((re.search('^[Yy]', inStr)) or (inStr == '')):
        plotGyro = 1
        plotRows += 1
Ejemplo n.º 6
0
# -*- coding: utf-8 -*-
"""
example on how to plot decoded sensor data from crazyflie
@author: jsschell
"""
import CF_functions as cff
import matplotlib.pyplot as plt
import re

# decode binary log data
logData = cff.decode("test100")

# set window background to white
plt.rcParams['figure.facecolor'] = 'w'
    
# number of columns and rows for suplot
plotCols = 1;
plotRows = 0;

# let's see which keys exists in current data set
keys = ""
for k, v in logData.items():
    keys += k

# get plot config from user
plotGyro = 0
if re.search('gyr', keys):
    inStr = input("plot gyro data? ([Y]es / [n]o): ")
    if ((re.search('^[Yy]', inStr)) or (inStr == '')):
        plotGyro = 1
        plotRows += 1
Ejemplo n.º 7
0
# -*- coding: utf-8 -*-
"""
example on how to plot decoded sensor data from crazyflie
@author: jsschell
"""
import CF_functions as cff
import matplotlib.pyplot as plt
import re
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("filename")
args = parser.parse_args()

# decode binary log data
logData = cff.decode(args.filename)

# set window background to white
plt.rcParams['figure.facecolor'] = 'w'
    
# number of columns and rows for suplot
plotCols = 1;
plotRows = 1;

# let's see which keys exists in current data set
keys = ""
for k, v in logData.items():
    keys += k

# get plot config from user
plotGyro = 0
Ejemplo n.º 8
0
import CF_functions as cff
import csv
from matplotlib import pyplot as plt

# Decode binary log file
log = cff.decode('log_data/log_thrust_est_4')
csv_file = 'csv_data/log_thrust_est_4.csv'

# Begin writing to csv
with open(csv_file, mode='w') as file:
    wrtr = csv.writer(file, delimiter=',')

    # Extract key names as a list
    keys = list(log.keys())

    # Write first row with names
    wrtr.writerow(keys)

    for cols in range(len(list(log['tick']))):
        row_list = []

        # Extract a value from every key in a row and append it to the list
        for key in keys:
            row_list.append(log[key][cols])

        # Write row to csv file
        wrtr.writerow(row_list)
Ejemplo n.º 9
0
import CF_functions as cff
import matplotlib.pyplot as plt
import re
import numpy as np
import argparse

parser = argparse.ArgumentParser(description='Play a pickled policy.')
parser.add_argument("-l", '--log', type=str, help='Logfile')
args = parser.parse_args()
if args.log is not None:
    logfile = args.log
else:
    logfile = "ctrlNN_feb_1/log01"

# decode binary log data
logData = cff.decode(logfile)
print(logData.keys())
print(logData['ctrlNN.out2'])
OFFSET = 0

# set window background to white
plt.rcParams['figure.facecolor'] = 'w'

# number of columns and rows for suplot
plotCols = 1
plotRows = 1

# let's see which keys exists in current data set
keys = ""
for k, v in logData.items():
    keys += k
Ejemplo n.º 10
0
            log_list = os.listdir(arg)
            log_dir = arg
            multi_log = True
        elif os.path.isfile(arg):
            log_name = arg
    if opt in ('-a', '--all'): plot_all = True
    elif opt in ('-k', '--key_group'):
        key_to_plot_alone = arg
    else:
        key_to_plot_alone = None
        plot_all = False

if multi_log:
    logDataList = []
    for log_file in log_list:
        logData = cff.decode(os.path.join(log_dir, log_file))
        logDataList.append(logData)
        printed = []
        for data in logDataList:
            keys = ""
            for k, v in data.items():
                keys += k
                if k not in printed:
                    print(k)
                printed.append(k)
else:
    # decode binary log data
    logData = cff.decode(log_name)
    # let's see which keys exists in current data set
    keys = ""
    for k, v in logData.items():