| @ -0,0 +1,41 @@ | |||
| import numpy as np | |||
| class Perceptron(object): | |||
| """Implements a perceptron network""" | |||
| def __init__(self, input_size, lr=1, epochs=100): | |||
| self.W = np.zeros(input_size+1) | |||
| # add one for bias | |||
| self.epochs = epochs | |||
| self.lr = lr | |||
| #activation function | |||
| def activation_fn(self, x): | |||
| #return (x >= 0).astype(np.float32) | |||
| return 1 if x >= 0 else 0 | |||
| #we need a prediction function to run an input through the perceptron and return an output. | |||
| def predict(self, x): | |||
| z = self.W.T.dot(x) | |||
| a = self.activation_fn(z) | |||
| return a | |||
| def fit(self, X, d): | |||
| for _ in range(self.epochs): | |||
| for i in range(d.shape[0]): | |||
| x = np.insert(X[i], 0, 1) | |||
| y = self.predict(x) | |||
| e = d[i] - y | |||
| self.W = self.W + self.lr * e * x | |||
| #the easiset set of data that we can provide is the AND gate. Given is set of inputs and outputs. | |||
| if __name__ == '__main__': | |||
| X = np.array([ | |||
| [0, 0], | |||
| [0, 1], | |||
| [1, 0], | |||
| [1, 1] | |||
| ]) | |||
| d = np.array([0, 0, 0, 1]) | |||
| perceptron = Perceptron(input_size=2) | |||
| perceptron.fit(X, d) | |||
| print(perceptron.W) | |||
| @ -0,0 +1,41 @@ | |||
| import numpy as np | |||
| class Perceptron(object): | |||
| """Implements a perceptron network""" | |||
| def __init__(self, input_size, lr=1, epochs=100): | |||
| self.W = np.zeros(input_size+1) | |||
| # add one for bias | |||
| self.epochs = epochs | |||
| self.lr = lr | |||
| #activation function | |||
| def activation_fn(self, x): | |||
| #return (x >= 0).astype(np.float32) | |||
| return 1 if x >= 0 else 0 | |||
| #we need a prediction function to run an input through the perceptron and return an output. | |||
| def predict(self, x): | |||
| z = self.W.T.dot(x) | |||
| a = self.activation_fn(z) | |||
| return a | |||
| def fit(self, X, d): | |||
| for _ in range(self.epochs): | |||
| for i in range(d.shape[0]): | |||
| x = np.insert(X[i], 0, 1) | |||
| y = self.predict(x) | |||
| e = d[i] - y | |||
| self.W = self.W + self.lr * e * x | |||
| #the easiset set of data that we can provide is the AND gate. Given is set of inputs and outputs. | |||
| if __name__ == '__main__': | |||
| X = np.array([ | |||
| [0, 0], | |||
| [0, 1], | |||
| [1, 0], | |||
| [1, 1] | |||
| ]) | |||
| d = np.array([0, 0, 0, 1]) | |||
| perceptron = Perceptron(input_size=2) | |||
| perceptron.fit(X, d) | |||
| print(perceptron.W) | |||
| @ -0,0 +1,63 @@ | |||
| # Python3 Program to print BFS traversal | |||
| from collections import defaultdict | |||
| # This class represents a directed graph | |||
| # using adjacency list representation | |||
| class Graph: | |||
| # Constructor | |||
| def __init__(self): | |||
| # default dictionary to store graph | |||
| self.graph = defaultdict(list) | |||
| # function to add an edge to graph | |||
| def addEdge(self,u,v): | |||
| self.graph[u].append(v) | |||
| # Function to print a BFS of graph | |||
| def BFS(self, s): | |||
| # Mark all the vertices as not visited | |||
| visited = [False] * (len(self.graph)) | |||
| # Create a queue for BFS | |||
| queue = [] | |||
| # Mark the source node as | |||
| # visited and enqueue it | |||
| queue.append(s) | |||
| visited[s] = True | |||
| while queue: | |||
| # Dequeue a vertex from | |||
| # queue and print it | |||
| s = queue.pop(0) | |||
| print (s, end = " ") | |||
| # Get all adjacent vertices of the | |||
| # dequeued vertex s. If a adjacent | |||
| # has not been visited, then mark it | |||
| # visited and enqueue it | |||
| for i in self.graph[s]: | |||
| if visited[i] == False: | |||
| queue.append(i) | |||
| visited[i] = True | |||
| # Driver code | |||
| g = Graph() | |||
| g.addEdge(0, 1) | |||
| g.addEdge(0, 2) | |||
| g.addEdge(1, 2) | |||
| g.addEdge(2, 0) | |||
| g.addEdge(2, 3) | |||
| g.addEdge(3, 3) | |||
| print ("Following is Breadth First Traversal" | |||
| " (starting from vertex 2)") | |||
| g.BFS(2) | |||
| @ -0,0 +1,58 @@ | |||
| # Python3 program to print DFS traversal | |||
| from collections import defaultdict | |||
| # This class represents a directed graph using | |||
| # adjacency list representation | |||
| class Graph: | |||
| # Constructor | |||
| def __init__(self): | |||
| # default dictionary to store graph | |||
| self.graph = defaultdict(list) | |||
| def addEdge(self, u, v): | |||
| self.graph[u].append(v) | |||
| # A function used by DFS | |||
| def DFSUtil(self, v, visited): | |||
| # Mark the current node as visited | |||
| # and print it | |||
| visited[v] = True | |||
| print(v, end = ' ') | |||
| # Recur for all the vertices | |||
| # adjacent to this vertex | |||
| for i in self.graph[v]: | |||
| if visited[i] == False: | |||
| self.DFSUtil(i, visited) | |||
| # The function to do DFS traversal. It uses | |||
| # recursive DFSUtil() | |||
| def DFS(self, v): | |||
| # Mark all the vertices as not visited | |||
| visited = [False] * (len(self.graph)) | |||
| # Call the recursive helper function | |||
| # to print DFS traversal | |||
| self.DFSUtil(v, visited) | |||
| # Driver code | |||
| # Create a graph given | |||
| # in the above diagram | |||
| g = Graph() | |||
| g.addEdge(0, 1) | |||
| g.addEdge(0, 2) | |||
| g.addEdge(1, 2) | |||
| g.addEdge(2, 0) | |||
| g.addEdge(2, 3) | |||
| g.addEdge(3, 3) | |||
| print("Following is DFS from (starting from vertex 2)") | |||
| g.DFS(2) | |||