Untitled
unknown
plain_text
2 years ago
7.9 kB
14
Indexable
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics
dataset=load_iris()
X=dataset.data
y=dataset.target
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3)
classifier = KNeighborsClassifier(n_neighbors=5).fit(Xtrain, ytrain)
ypred = classifier.predict(Xtest)
i = 0
print ('%-25s %-25s %-25s' % ('Original Label', 'Predicted Label', 'Correct/Wrong'))
for label in ytest:
print ('%-25s %-25s' % (label, ypred[i]), end="")
if (label == ypred[i]):
print (' %-25s' % ('Correct'))
else:
print (' %-25s' % ('Wrong'))
i = i + 1
print ("-------------------------------------------------------------------------")
print("\nConfusion Matrix:\n",metrics.confusion_matrix(ytest, ypred))
print ("-------------------------------------------------------------------------")
print("\nClassification Report:\n",metrics.classification_report(ytest, ypred))
print ("-------------------------------------------------------------------------")
print('Accuracy of the classifer is %0.2f' % metrics.accuracy_score(ytest,ypred))
print ("-------------------------------------------------------------------------")
2
from sklearn.cluster import KMeans
from sklearn.mixture import GaussianMixture
import sklearn.metrics as metrics
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
names = ['Sepal_Length','Sepal_Width','Petal_Length','Petal_Width', 'Class']
from sklearn import datasets
dataset = pd.read_csv("data.csv", names=names)
X = iris_dataset.iloc[:, :-1]
label = {'Iris-setosa': 0,'Iris-versicolor': 1, 'Iris-virginica': 2}
y = [label[c] for c in dataset['species']]
#print(y)
plt.figure(figsize=(14,7))
colormap=np.array(['red','lime','black'])
plt.subplot(1,3,1)
plt.title('Real')
plt.scatter(X.Petal_Length,X.Petal_Width,c=colormap[y])
model=KMeans(n_clusters=3, random_state=0).fit(X)
plt.subplot(1,3,2)
plt.title('KMeans')
plt.scatter(X.Petal_Length,X.Petal_Width,c=colormap[model.labels_])
print('The accuracy score of K-Mean: ',metrics.accuracy_score(y, model.labels_))
print('The Confusion matrixof K-Mean:\n',metrics.confusion_matrix(y, model.labels_))
gmm=GaussianMixture(n_components=3, random_state=0).fit(X)
y_cluster_gmm=gmm.predict(X)
plt.subplot(1,3,3)
plt.title('GMM Classification')
plt.scatter(X.Petal_Length,X.Petal_Width,c=colormap[y_cluster_gmm])
print('The accuracy score of EM: ',metrics.accuracy_score(y, y_cluster_gmm))
print('The Confusion matrix of EM:\n ',metrics.confusion_matrix(y, y_cluster_gmm))
print('Observation: The GMM using EM algorithm based clustering matched the true labels more closely than the Kmeans.')
3
import numpy as np
import matplotlib.pyplot as plt
def local_regression(x0, X, Y, tau):
x0 = [1, x0]
X = [[1, i] for i in X]
X = np.asarray(X)
xw = (X.T) * np.exp(np.sum((X - x0) ** 2, axis=1) / (-2 * tau))
beta = np.linalg.pinv(xw @ X) @ xw @ Y @ x0
return beta
prediction = [local_regression(x0, X, Y, tau) for x0 in domain]
plt.plot(X, Y, 'o', color='black')
plt.plot(domain, prediction, color='red')
plt.show()
X = np.linspace(-3, 3, num=1000)
domain = X
Y = np.log(np.abs(X ** 2 - 1) + .5)
draw(10)
draw(0.1)
draw(0.01)
draw(0.001)
4
import numpy as np
sigmoid = lambda x: 1 / (1 + np.exp(-x))
X, y = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]), np.array([[0], [1], [1], [0]])
wh, bh, wo, bo = np.random.randn(2, 2), np.zeros((1, 2)), np.random.randn(2, 1), np.zeros((1, 1))
def forward(x): return sigmoid(np.dot(sigmoid(np.dot(x, wh) + bh), wo) + bo)
print("Before:", forward(X))
for _ in range(10000):
h = sigmoid(np.dot(X, wh) + bh)
eo = sigmoid(np.dot(h, wo) + bo)
eo, do = y - o, eo * o * (1 - o)
dh = np.dot(do, wo.T) * h * (1 - h)
wo += h.T.dot(do) * 0.1
bo += np.sum(do, 0, keepdims=True) * 0.1
wh += X.T.dot(dh) * 0.1
bh += np.sum(dh, 0, keepdims=True) * 0.1
print("After:", forward(X))
import numpy as np
X = np.array(([2, 9], [1, 5], [3, 6]), dtype=float)
y = np.array(([92], [86], [89]), dtype=float)
X = X/np.amax(X,axis=0) # maximum of X array longitudinally
y = y/100
#Sigmoid Function
def sigmoid (x):
return 1/(1 + np.exp(-x))
def derivatives_sigmoid(x):
return x * (1 - x)
epoch=5000
lr=0.1
inputlayer_neurons = 2
hiddenlayer_neurons = 3
output_neurons = 1
#weight and bias initialization
wh=np.random.uniform(size=(inputlayer_neurons,hiddenlayer_neurons))
bh=np.random.uniform(size=(1,hiddenlayer_neurons))
wout=np.random.uniform(size=(hiddenlayer_neurons,output_neurons))
bout=np.random.uniform(size=(1,output_neurons))
#draws a random range of numbers uniformly of dim x*y
for i in range(epoch):
#Forward Propogation
hinp1=np.dot(X,wh)
hinp=hinp1 + bh
hlayer_act = sigmoid(hinp)
outinp1=np.dot(hlayer_act,wout)
outinp= outinp1+ bout
output = sigmoid(outinp)
#Backpropagation
EO = y-output
outgrad = derivatives_sigmoid(output)
d_output = EO* outgrad
EH = d_output.dot(wout.T)
hiddengrad = derivatives_sigmoid(hlayer_act)
d_hiddenlayer = EH * hiddengrad
wout += hlayer_act.T.dot(d_output) *lr
wh += X.T.dot(d_hiddenlayer) *lr
print("Input: \n" + str(X))
print("Actual Output: \n" + str(y))
print("Predicted Output: \n" ,output)
5
import random
import string
target_string = "GENETIC ALGORITHM"
target_length = len(target_string)
population_size = 100
mutation_rate = 0.01
def generate_random_string(length):
return ''.join(random.choice(string.ascii_uppercase + ' ,') for _ in range(length))
def initial_population():
return [generate_random_string(target_length) for _ in range(population_size)]
def calculate_fitness(individual):
return sum(1 for i in range(target_length) if individual[i] == target_string[i])
def select_parents(population):
return random.choices(population, weights=[calculate_fitness(individual) for individual in population], k=2)
def crossover(parent1, parent2):
crossover_point = random.randint(1, target_length - 1)
child = parent1[:crossover_point] + parent2[crossover_point:]
return child
def mutate(individual):
return ''.join(random.choice(string.ascii_uppercase + ' ,') if random.random() < mutation_rate else char for char in individual)
population = initial_population()
generation = 1
while True:
population = sorted(population, key=calculate_fitness, reverse=True)
best_individual = population[0]
print(f"Generation {generation}: {best_individual} (Fitness: {calculate_fitness(best_individual)})")
if best_individual == target_string:
break
new_population = [best_individual]
for _ in range(population_size - 1):
parent1, parent2 = select_parents(population)
child = crossover(parent1, parent2)
child = mutate(child)
new_population.append(child)
population = new_population
generation += 1
6
import numpy as np
import random
states = [0, 1, 2, 3]
q_table = {}
for state in states:
q_table[state] = 0
alpha = 0.5
gamma = 0.9
# Q-learning
for i in range(100):
state = random.choice(states)
action = random.choice([0, 1])
if action == 0:
new_state = max(state - 1, 0)
else:
new_state = min(state + 1, 3)
reward = 1
# Update Q value
q_table[state] += alpha * (reward + gamma * q_table[new_state] - q_table[state])
state = new_state
print(q_table)Editor is loading...
Leave a Comment