示例#1
0
    def do_GET(self):

        try:
            userid = self.path.lstrip("/")

            if userid not in uid:
                return self.error(userid + " not in graph snapshot")

            src = uid[userid]

            if not baseG.IsNode(src):
                return self.error(userid + " not in graph snapshot")

            print("Creating subgraph")
            subBaseG = graphutils.getSubGraph(baseG, src, 4)
            print("Subgraph ready")

            topIDs = runrw.runrw(subBaseG, featG, src, beta)[:20]
            cache = reader.get_users(topIDs)
            users = []
            print(cache)

            for rowid in cache:
                users.append(cache[rowid])

            self.send_response(200)
            self.end_headers()

            self.wfile.write(json.dumps(users))
        except:
            self.wfile.write(sys.exc_info())

        return
示例#2
0
文件: index.py 项目: niutyut/cs224w
	def do_GET(self):

		try:
			userid = self.path.lstrip("/")

			if userid not in uid:
				return self.error(userid + " not in graph snapshot")

			src = uid[userid]
			
			if not baseG.IsNode(src):
				return self.error(userid + " not in graph snapshot")

			print("Creating subgraph")
			subBaseG = graphutils.getSubGraph(baseG, src, 4)
			print("Subgraph ready")

			topIDs = runrw.runrw(subBaseG, featG, src, beta)[:20]	
			cache = reader.get_users(topIDs)
			users = []
			print(cache)

			for rowid in cache:
				users.append(cache[rowid])
				
			self.send_response(200)
			self.end_headers()
	
			self.wfile.write(json.dumps(users))	
		except:
			self.wfile.write(sys.exc_info())

		return
示例#3
0
文件: predict.py 项目: niutyut/cs224w
def main(args):
	db = args[0]
	date1 = args[1]
	userid = args[2]
	
	k=2
	beta= 0

	reader = DBReader(db)
	print("Getting uid")
	uid = reader.uid()
	src = uid[userid]

	print("Userid, rowid: %s, %d"%(userid, src))

	print("Getting all the base graphs")

	
	'''
	Gcollab_base = graphutils.get_collab_graph(db, uid)
	assert(Gcollab_base.IsNode(src))

	feature_graphs = graphutils.get_feat_graphs(db, uid, None, date1)
	base_graphs = graphutils.get_base_dict(Gcollab_base, feature_graphs)

	# from base graph take a random source node in every iteration
	baseG = base_graphs[graphutils.Graph.COLLAB]
	featG = graphutils.split_feat_graphs(base_graphs)

	'''
	followers = reader.followers()
	baseG = graphutils.get_db_graph(graphutils.Graph.FOLLOW, uid, followers)
	Gp = snapext.EUNGraph()
	featG = [Gp, Gp, Gp]
	
	subBaseG= graphutils.getSubGraph(baseG, src, 5)
	topIDs = runrw.runrw(subBaseG, featG, src, beta)[:20]	
	print reader.get_users(topIDs)
示例#4
0
def main(args):
    db = args[0]
    date1 = args[1]
    userid = args[2]

    k = 2
    beta = 0

    reader = DBReader(db)
    print("Getting uid")
    uid = reader.uid()
    src = uid[userid]

    print("Userid, rowid: %s, %d" % (userid, src))

    print("Getting all the base graphs")
    '''
	Gcollab_base = graphutils.get_collab_graph(db, uid)
	assert(Gcollab_base.IsNode(src))

	feature_graphs = graphutils.get_feat_graphs(db, uid, None, date1)
	base_graphs = graphutils.get_base_dict(Gcollab_base, feature_graphs)

	# from base graph take a random source node in every iteration
	baseG = base_graphs[graphutils.Graph.COLLAB]
	featG = graphutils.split_feat_graphs(base_graphs)

	'''
    followers = reader.followers()
    baseG = graphutils.get_db_graph(graphutils.Graph.FOLLOW, uid, followers)
    Gp = snapext.EUNGraph()
    featG = [Gp, Gp, Gp]

    subBaseG = graphutils.getSubGraph(baseG, src, 5)
    topIDs = runrw.runrw(subBaseG, featG, src, beta)[:20]
    print reader.get_users(topIDs)
示例#5
0
def main(args):
	db = args[0]
	date1 = args[1]
	date2 = args[2]
	date3 = args[3]
	k = int(args[4])
	OUTFILE=args[5]

	if len(args)>=7:
		beta = float(args[6])
		bstart = beta
		bfinish = beta
	else:
		bstart = 0
		bfinish = 20

	reader = DBReader(db)
	print("Getting uid")
	uid = reader.uid()

	print("Getting all the base graphs")
	feature_graphs = graphutils.get_feat_graphs(db, uid, None, date1)
	Gcollab_base = graphutils.get_collab_graph(db, uid, date3, date1)
	base_graphs = graphutils.get_base_dict(Gcollab_base, feature_graphs)

	print("Getting Gcollab_delta graph")
	Gcollab_delta = graphutils.get_collab_graph(db, uid, date1, date2)

	# from base graph take a random source node in every iteration
	baseG = base_graphs[graphutils.Graph.COLLAB]
	featG = graphutils.split_feat_graphs(base_graphs)

	deltaNIDs = [node.GetId() for node in Gcollab_delta.Nodes()]
	baseNIDs = [node.GetId() for node in baseG.Nodes()]
	common_nodes = list(set(deltaNIDs).intersection(baseNIDs))
	
	ktop = 20
	subGraphK= 10 
	f = open(OUTFILE,"w")

	print_and_log("# Beta\tRecall\tAvg. Rank\tPrec 20\n", f)		
	n_iterations = 10
	it = 0
	sources = []

	while it < n_iterations:
		src  = random.choice(common_nodes)
		subBaseG= graphutils.getSubGraph(baseG, src, subGraphK)
		#print 'subgraph: ', subBaseG.GetNodes(), subBaseG.GetEdges()
		actual = evaluate.getYList(subBaseG, Gcollab_delta, src)
		#actual = evaluate.getYList(baseG, Gcollab_delta, src)
	
		# Consider source node if it forms at least one edge in delta graph
		if len(actual)>0:
			sources.append(src)
			common_nodes.remove(src)
			it += 1
		else:
			print("Warning. Ignoring node with 0 new edges")
	print 'number of nodes and edges in graph:', baseG.GetNodes(), baseG.GetEdges()

	for beta in frange(bstart, bfinish, 4):
		total_recall = 0
		total_avg_rank= 0
		total_preck = 0

		for src in sources:
			subBaseG= graphutils.getSubGraph(baseG, src, subGraphK)
			print 'sub graph nodes:', subBaseG.GetNodes()
			print 'sub graph edges:', subBaseG.GetEdges()
			topIDs = runrw.runrw(subBaseG, featG, src, beta)	
			#topIDs = runrw.runrw(baseG, featG, Gcollab_delta, src, beta)	

			# compare topIDs with list of labels already formed	
			actual = evaluate.getYList(subBaseG, Gcollab_delta, src)
			#actual = evaluate.getYList(baseG, Gcollab_delta, src)
	
			# ignore if the node did not form an edge in the delta	
			recall, preck, average_rank = evaluate.getAccuracy(topIDs, actual, ktop)	
			print recall, preck, average_rank
				
			total_recall+=recall
			total_avg_rank += average_rank
			total_preck += len(preck)
			
		num = float(n_iterations)
		print_and_log("%f\t%f\t%f\t%f\n"%(beta, total_recall/num, total_avg_rank/num, total_preck/num), f)
	
	f.close()	
示例#6
0
def main(args):
    db = args[0]
    date1 = args[1]
    date2 = args[2]
    date3 = args[3]
    k = int(args[4])
    OUTFILE = args[5]

    if len(args) >= 7:
        beta = float(args[6])
        bstart = beta
        bfinish = beta
    else:
        bstart = 0
        bfinish = 20

    reader = DBReader(db)
    print("Getting uid")
    uid = reader.uid()

    print("Getting all the base graphs")
    feature_graphs = graphutils.get_feat_graphs(db, uid, None, date1)
    Gcollab_base = graphutils.get_collab_graph(db, uid, date3, date1)
    base_graphs = graphutils.get_base_dict(Gcollab_base, feature_graphs)

    print("Getting Gcollab_delta graph")
    Gcollab_delta = graphutils.get_collab_graph(db, uid, date1, date2)

    # from base graph take a random source node in every iteration
    baseG = base_graphs[graphutils.Graph.COLLAB]
    featG = graphutils.split_feat_graphs(base_graphs)

    deltaNIDs = [node.GetId() for node in Gcollab_delta.Nodes()]
    baseNIDs = [node.GetId() for node in baseG.Nodes()]
    common_nodes = list(set(deltaNIDs).intersection(baseNIDs))

    ktop = 20
    subGraphK = 10
    f = open(OUTFILE, "w")

    print_and_log("# Beta\tRecall\tAvg. Rank\tPrec 20\n", f)
    n_iterations = 10
    it = 0
    sources = []

    while it < n_iterations:
        src = random.choice(common_nodes)
        subBaseG = graphutils.getSubGraph(baseG, src, subGraphK)
        #print 'subgraph: ', subBaseG.GetNodes(), subBaseG.GetEdges()
        actual = evaluate.getYList(subBaseG, Gcollab_delta, src)
        #actual = evaluate.getYList(baseG, Gcollab_delta, src)

        # Consider source node if it forms at least one edge in delta graph
        if len(actual) > 0:
            sources.append(src)
            common_nodes.remove(src)
            it += 1
        else:
            print("Warning. Ignoring node with 0 new edges")
    print 'number of nodes and edges in graph:', baseG.GetNodes(
    ), baseG.GetEdges()

    for beta in frange(bstart, bfinish, 4):
        total_recall = 0
        total_avg_rank = 0
        total_preck = 0

        for src in sources:
            subBaseG = graphutils.getSubGraph(baseG, src, subGraphK)
            print 'sub graph nodes:', subBaseG.GetNodes()
            print 'sub graph edges:', subBaseG.GetEdges()
            topIDs = runrw.runrw(subBaseG, featG, src, beta)
            #topIDs = runrw.runrw(baseG, featG, Gcollab_delta, src, beta)

            # compare topIDs with list of labels already formed
            actual = evaluate.getYList(subBaseG, Gcollab_delta, src)
            #actual = evaluate.getYList(baseG, Gcollab_delta, src)

            # ignore if the node did not form an edge in the delta
            recall, preck, average_rank = evaluate.getAccuracy(
                topIDs, actual, ktop)
            print recall, preck, average_rank

            total_recall += recall
            total_avg_rank += average_rank
            total_preck += len(preck)

        num = float(n_iterations)
        print_and_log(
            "%f\t%f\t%f\t%f\n" % (beta, total_recall / num,
                                  total_avg_rank / num, total_preck / num), f)

    f.close()