def main(): # Load dataset data = datasets.load_iris() X = normalize(data.data[data.target != 0]) y = data.target[data.target != 0] y[y == 1] = 0 y[y == 2] = 1 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, seed=1) clf = LogisticRegression(gradient_descent=True) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # Reduce dimension to two using PCA and plot the results Plot().plot_in_2d(X_test, y_pred, title="Logistic Regression", accuracy=accuracy)
def main(): data = datasets.load_digits() X = normalize(data.data) y = data.target # One-hot encoding of nominal y-values y = to_categorical(y) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, seed=1) # Perceptron clf = Perceptron(n_iterations=5000, learning_rate=0.001, loss=CrossEntropy, activation_function=Sigmoid) clf.fit(X_train, y_train) y_pred = np.argmax(clf.predict(X_test), axis=1) y_test = np.argmax(y_test, axis=1) accuracy = accuracy_score(y_test, y_pred) print ("Accuracy:", accuracy) # Reduce dimension to two using PCA and plot the results Plot().plot_in_2d(X_test, y_pred, title="Perceptron", accuracy=accuracy, legend_labels=np.unique(y))
def main(): # Load the dataset data = datasets.load_iris() X = normalize(data.data) y = data.target # Project the data onto the 2 primary components multi_class_lda = MultiClassLDA() multi_class_lda.plot_in_2d(X, y, title="LDA")
def main(): X, y = datasets.make_classification(n_samples=1000, n_features=10, n_classes=4, n_clusters_per_class=1, n_informative=2) data = datasets.load_iris() X = normalize(data.data) y = data.target y = to_categorical(y.astype("int")) # Model builder def model_builder(n_inputs, n_outputs): model = NeuralNetwork(optimizer=Adam(), loss=CrossEntropy) model.add(Dense(16, input_shape=(n_inputs,))) model.add(Activation('relu')) model.add(Dense(n_outputs)) model.add(Activation('softmax')) return model # Print the model summary of a individual in the population print ("") model_builder(n_inputs=X.shape[1], n_outputs=y.shape[1]).summary() population_size = 100 n_generations = 10 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, seed=1) inertia_weight = 0.8 cognitive_weight = 0.8 social_weight = 0.8 print ("Population Size: %d" % population_size) print ("Generations: %d" % n_generations) print ("") print ("Inertia Weight: %.2f" % inertia_weight) print ("Cognitive Weight: %.2f" % cognitive_weight) print ("Social Weight: %.2f" % social_weight) print ("") model = ParticleSwarmOptimizedNN(population_size=population_size, inertia_weight=inertia_weight, cognitive_weight=cognitive_weight, social_weight=social_weight, max_velocity=5, model_builder=model_builder) model = model.evolve(X_train, y_train, n_generations=n_generations) loss, accuracy = model.test_on_batch(X_test, y_test) print ("Accuracy: %.1f%%" % float(100*accuracy)) # Reduce dimension to 2D using PCA and plot the results y_pred = np.argmax(model.predict(X_test), axis=1) Plot().plot_in_2d(X_test, y_pred, title="Particle Swarm Optimized Neural Network", accuracy=accuracy, legend_labels=range(y.shape[1]))
def main(): X, y = datasets.make_classification(n_samples=1000, n_features=10, n_classes=4, n_clusters_per_class=1, n_informative=2) data = datasets.load_digits() X = normalize(data.data) y = data.target y = to_categorical(y.astype("int")) # Model builder def model_builder(n_inputs, n_outputs): model = NeuralNetwork(optimizer=Adam(), loss=CrossEntropy) model.add(Dense(16, input_shape=(n_inputs, ))) model.add(Activation('relu')) model.add(Dense(n_outputs)) model.add(Activation('softmax')) return model # Print the model summary of a individual in the population print("") model_builder(n_inputs=X.shape[1], n_outputs=y.shape[1]).summary() population_size = 100 n_generations = 3000 mutation_rate = 0.01 print("Population Size: %d" % population_size) print("Generations: %d" % n_generations) print("Mutation Rate: %.2f" % mutation_rate) print("") X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, seed=1) model = Neuroevolution(population_size=population_size, mutation_rate=mutation_rate, model_builder=model_builder) model = model.evolve(X_train, y_train, n_generations=n_generations) loss, accuracy = model.test_on_batch(X_test, y_test) # Reduce dimension to 2D using PCA and plot the results y_pred = np.argmax(model.predict(X_test), axis=1) Plot().plot_in_2d(X_test, y_pred, title="Evolutionary Evolved Neural Network", accuracy=accuracy, legend_labels=range(y.shape[1]))
def main(): data = datasets.load_iris() X = normalize(data.data) y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) clf = KNN(k=5) y_pred = clf.predict(X_test, X_train, y_train) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # Reduce dimensions to 2d using pca and plot the results Plot().plot_in_2d(X_test, y_pred, title="K Nearest Neighbors", accuracy=accuracy, legend_labels=data.target_names)
def main(): data = datasets.load_iris() X = normalize(data.data[data.target != 0]) y = data.target[data.target != 0] y[y == 1] = -1 y[y == 2] = 1 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) clf = SupportVectorMachine(kernel=polynomial_kernel, power=4, coef=1) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # Reduce dimension to two using PCA and plot the results Plot().plot_in_2d(X_test, y_pred, title="Support Vector Machine", accuracy=accuracy)
def main(): data = datasets.load_digits() X = normalize(data.data) y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4) clf = NaiveBayes() clf.fit(X_train, y_train) y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # Reduce dimension to two using PCA and plot the results Plot().plot_in_2d(X_test, y_pred, title="Naive Bayes", accuracy=accuracy, legend_labels=data.target_names)
def predict(self, X): X = normalize(polynomial_features(X, degree=self.degree)) return super(ElasticNet, self).predict(X)
def fit(self, X, y): X = normalize(polynomial_features(X, degree=self.degree)) super(ElasticNet, self).fit(X, y)
def predict(self, X): X = normalize(polynomial_features(X, degree=self.degree)) return super(PolynomialRidgeRegression, self).predict(X)
def fit(self, X, y): X = normalize(polynomial_features(X, degree=self.degree)) super(PolynomialRidgeRegression, self).fit(X, y)
# ........... # LOAD DATA # ........... data = datasets.load_digits() digit1 = 1 digit2 = 8 idx = np.append( np.where(data.target == digit1)[0], np.where(data.target == digit2)[0]) y = data.target[idx] # Change labels to {0, 1} y[y == digit1] = 0 y[y == digit2] = 1 X = data.data[idx] X = normalize(X) print("Dataset: The Digit Dataset (digits %s and %s)" % (digit1, digit2)) # .......................... # DIMENSIONALITY REDUCTION # .......................... pca = PCA() X = pca.transform(X, n_components=5) # Reduce to 5 dimensions n_samples, n_features = np.shape(X) # .......................... # TRAIN / TEST SPLIT # .......................... X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)