def testPredictEdges(self): numVertices = 10 numFeatures = 3 vList = VertexList(numVertices, numFeatures) vList.setVertices(numpy.random.rand(numVertices, numFeatures)) graph = SparseGraph(vList, False) graph.addEdge(0, 1) graph.addEdge(0, 2) graph.addEdge(0, 3) graph.addEdge(0, 4) graph.addEdge(0, 5) graph.addEdge(1, 2) graph.addEdge(1, 3) graph.addEdge(1, 4) graph.addEdge(1, 5) graph.addEdge(2, 3) graph.addEdge(3, 4) X = GraphUtils.vertexLabelPairs(graph, graph.getAllEdges()) c = numpy.random.rand(numFeatures * 2) logging.debug(("c=" + str(c))) y = numpy.dot(X, c) graph.addEdges(graph.getAllEdges(), y) lmbda = 0.001 tol = 10 ** -1 regressor = PrimalRidgeRegression(lmbda) predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph) w = regressor.getWeights() logging.debug(("w=" + str(w))) self.assertTrue(numpy.linalg.norm(w - c) < tol) predY = predictor.predictEdges(graph, graph.getAllEdges()) logging.debug((numpy.linalg.norm(predY - y))) self.assertTrue(numpy.linalg.norm(predY - y) < tol) # Now try on new edges testEdges = numpy.array([[2, 3], [4, 5], [6, 7]]) testX = GraphUtils.vertexLabelPairs(graph, testEdges) testY = numpy.dot(testX, c) graph.addEdges(testEdges, testY) predY = predictor.predictEdges(graph, testEdges) logging.debug((numpy.linalg.norm(predY - testY))) self.assertTrue(numpy.linalg.norm(predY - testY) < 0.3)
def testPredictEdges(self): numVertices = 10 numFeatures = 3 vList = VertexList(numVertices, numFeatures) vList.setVertices(numpy.random.rand(numVertices, numFeatures)) graph = SparseGraph(vList, False) graph.addEdge(0, 1) graph.addEdge(0, 2) graph.addEdge(0, 3) graph.addEdge(0, 4) graph.addEdge(0, 5) graph.addEdge(1, 2) graph.addEdge(1, 3) graph.addEdge(1, 4) graph.addEdge(1, 5) graph.addEdge(2, 3) graph.addEdge(3, 4) X = GraphUtils.vertexLabelPairs(graph, graph.getAllEdges()) c = numpy.random.rand(numFeatures * 2) logging.debug(("c=" + str(c))) y = numpy.dot(X, c) graph.addEdges(graph.getAllEdges(), y) lmbda = 0.001 tol = 10**-1 regressor = PrimalRidgeRegression(lmbda) predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph) w = regressor.getWeights() logging.debug(("w=" + str(w))) self.assertTrue(numpy.linalg.norm(w - c) < tol) predY = predictor.predictEdges(graph, graph.getAllEdges()) logging.debug((numpy.linalg.norm(predY - y))) self.assertTrue(numpy.linalg.norm(predY - y) < tol) #Now try on new edges testEdges = numpy.array([[2, 3], [4, 5], [6, 7]]) testX = GraphUtils.vertexLabelPairs(graph, testEdges) testY = numpy.dot(testX, c) graph.addEdges(testEdges, testY) predY = predictor.predictEdges(graph, testEdges) logging.debug((numpy.linalg.norm(predY - testY))) self.assertTrue(numpy.linalg.norm(predY - testY) < 0.3)
def testLearnModel(self): numVertices = 10 numFeatures = 5 vList = VertexList(numVertices, numFeatures) vList.setVertices(numpy.random.rand(numVertices, numFeatures)) graph = SparseGraph(vList, False) #Create a graph with 2 ego networks graph.addEdge(0, 1, 0.1) graph.addEdge(0, 2, 0.2) graph.addEdge(0, 3, 0.3) graph.addEdge(4, 5, 0.5) graph.addEdge(4, 6, 0.6) graph.addEdge(4, 7, 0.7) lmbda = 0.01 regressor = PrimalRidgeRegression(lmbda) logging.debug("Running prediction") predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph) #Try using an undirected graph graph = SparseGraph(vList, True) #Create a graph with 2 ego networks graph.addEdge(0, 1, 0.1) graph.addEdge(0, 2, 0.2) graph.addEdge(0, 3, 0.3) graph.addEdge(4, 5, 0.5) graph.addEdge(4, 6, 0.6) graph.addEdge(4, 7, 0.7) lmbda = 0.01 regressor = PrimalRidgeRegression(lmbda) logging.debug("Running prediction") predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph)
def testLearnModel(self): numVertices = 10 numFeatures = 5 vList = VertexList(numVertices, numFeatures) vList.setVertices(numpy.random.rand(numVertices, numFeatures)) graph = SparseGraph(vList, False) # Create a graph with 2 ego networks graph.addEdge(0, 1, 0.1) graph.addEdge(0, 2, 0.2) graph.addEdge(0, 3, 0.3) graph.addEdge(4, 5, 0.5) graph.addEdge(4, 6, 0.6) graph.addEdge(4, 7, 0.7) lmbda = 0.01 regressor = PrimalRidgeRegression(lmbda) logging.debug("Running prediction") predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph) # Try using an undirected graph graph = SparseGraph(vList, True) # Create a graph with 2 ego networks graph.addEdge(0, 1, 0.1) graph.addEdge(0, 2, 0.2) graph.addEdge(0, 3, 0.3) graph.addEdge(4, 5, 0.5) graph.addEdge(4, 6, 0.6) graph.addEdge(4, 7, 0.7) lmbda = 0.01 regressor = PrimalRidgeRegression(lmbda) logging.debug("Running prediction") predictor = FlatEdgeLabelPredictor(regressor) predictor.learnModel(graph)