Professional Documents
Culture Documents
-------------------------------------------------------------------------
----------------------------
1.Implement A* Search algorithm.
_________________________________________________________________________
____________________________________
return H[n]
while par[n] != n:
reconst_path.append(n)
n = par[n]
reconst_path.append(start)
reconst_path.reverse()
if m in closed_lst:
closed_lst.remove(m)
open_lst.add(m)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
----------------------------
2,Implement AO* Search algorithm.
_________________________________________________________________________
____________________________________
class Graph:
def __init__(self, graph, heuristicNodeList, startNode):
self.graph = graph
self.H=heuristicNodeList
self.start=startNode
self.parent={}
self.status={}
self.solutionGraph={}
def applyAOStar(self):
self.aoStar(self.start, False)
def getStatus(self,v):
return self.status.get(v,0)
def printSolution(self):
print("FOR GRAPH SOLUTION, TRAVERSE THE GRAPH FROM THE START
NODE:",self.start)
print("------------------------------------------------------------")
print(self.solutionGraph)
print("------------------------------------------------------------")
print("------------------------------------------------------------------
-----------------------")
if self.getStatus(v) >= 0:
minimumCost, childNodeList =
self.computeMinimumCostChildNodes(v)
print(minimumCost, childNodeList)
self.setHeuristicNodeValue(v, minimumCost)
self.setStatus(v,len(childNodeList))
solved=True # check the Minimum Cost nodes of v are solved
for childNode in childNodeList:
self.parent[childNode]=v
if self.getStatus(childNode)!=-1:
solved=solved & False
if solved==True:
self.setStatus(v,-1)
self.solutionGraph[v]=childNodeList
if v!=self.start:
self.aoStar(self.parent[v], True)
if backTracking==False: # check the current call is not for
backtracking
for childNode in childNodeList:
self.setStatus(childNode,0)
self.aoStar(childNode, False)
#for simplicity we ll consider heuristic distances given
print ("Graph - 1")
h1 = {'A': 1, 'B': 6, 'C': 2, 'D': 12, 'E': 2, 'F': 1, 'G': 5, 'H': 7,
'I': 7, 'J': 1}
graph1 = {
'A': [[('B', 1), ('C', 1)], [('D', 1)]],
'B': [[('G', 1)], [('H', 1)]],
'C': [[('J', 1)]],
'D': [[('E', 1), ('F', 1)]],
'G': [[('I', 1)]]
}
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------
3. For a given set of training data examples stored in a .CSV file,
implement and demonstrate the Candidate-Elimination algorithm to output a
description of the set of all hypotheses consistent with the training
examples.
_________________________________________________________________________
_________________________________________________________________________
______________
import numpy as np
import pandas as pd
data = pd.DataFrame(data=pd.read_csv('C:/Users/asisk/Downloads/AIML
LAB/Programs/Programs/lab3_enjoysport.csv'))
concepts = np.array(data.iloc[:,0:-1])
print(concepts)
target = np.array(data.iloc[:,-1])
print(target)
if target[i] == "no":
for x in range(len(specific_h)):
if h[x]!=specific_h[x]:
general_h[x][x] = specific_h[x]
else:
general_h[x][x] = '?'
print("Specific Bundary after ", i+1, "Instance is ", specific_h)
print("Generic Boundary after ", i+1, "Instance is ", general_h)
print("\n")
indices = [i for i,val in enumerate(general_h) if val == ['?', '?',
'?', '?', '?', '?']]
for i in indices:
general_h.remove(['?', '?', '?', '?', '?', '?'])
return specific_h, general_h
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
---------------
4.Write a program to demonstrate the working of the decision tree based
ID3 algorithm. Use an appropriate data set for building the decision tree
and apply this knowledge to classify a new sample
_________________________________________________________________________
_________________________________________________________________________
_
def find_entropy(df):
Class = df.keys()[-1]
entropy=0
values=df[Class].unique()
for value in values:
fraction=df[Class].value_counts()[value]/len(df[Class])
entropy+=-fraction*np.log2(fraction)
return entropy
def find_entropy_attribute(df,attribute):
Class = df.keys()[-1]
target_variables=df[Class].unique()
variables=df[attribute].unique()
entropy2=0
for variable in variables:
entropy=0
for target_variable in target_variables:
num=len(df[attribute][df[attribute]==variable]
[df[Class]==target_variable])
den=len(df[attribute][df[attribute]==variable])
fraction=num/(den+eps)
entropy+=-fraction*log(fraction+eps)
fraction2=den/len(df)
entropy2+=-fraction2*entropy
return abs(entropy2)
def find_winner(df):
Entropy_att= []
IG= []
for key in df.keys()[:-1]:
IG.append(find_entropy(df)-find_entropy_attribute(df,key))
return df.keys()[:-1][np.argmax(IG)]
def get_subtable(df,node,value):
return df[df[node]==value].reset_index(drop=True)
def buildTree(df,tree=None):
Class=df.keys()[-1]
node=find_winner(df)
attValue=np.unique(df[node])
if tree is None:
tree= {}
tree[node]={}
if len(counts)==1:
tree[node][value]=clValue[0]
else:
tree[node][value]=buildTree(subtable)
return tree
import pandas as pd
import numpy as np
eps=np.finfo(float).eps
from numpy import log2 as log
df=pd.read_csv('lab4_tennis.csv')
print("\n Given play tennis Data set: \n \n",df)
tree = buildTree(df)
import pprint
pprint.pprint(tree)
test={'Outlook':'Sunny','Temperature':'Hot','Humidity':'High','Wind':'Wea
k'}
def func(test,tree,default=None):
attribute=next(iter(tree))
print(attribute)
if test[attribute] in tree[attribute].keys():
print(tree[attribute].keys())
print(test[attribute])
result=tree[attribute][test[attribute]]
if isinstance(result,dict):
return func(test,result)
else:
return result
else:
return default
ans=func(test,tree)
print(ans)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
------------------
5.Build an Artificial Neural Network by implementing the Backpropagation
algorithm and test the same using appropriate data sets.
_________________________________________________________________________
_________________________________________________________________________
__
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)
y = y/100
#Sigmoid Function
def derivatives_sigmoid(x):
return x * (1 - x)
#Variable 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))
#Forward Propagation
for i in range(epoch):
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
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
----------
6.Write a program to implement the naïve Bayesian classifier for a
sample training data set stored as a .CSV file. Compute the accuracy of
the classifier, considering few test data sets.
_________________________________________________________________________
_______________________________________________________________________
import csv
import random
import math
def loadcsv(filename):
lines = csv.reader(open("C:/Users/asisk/Downloads/AIML
LAB/Programs/Programs/lab6_naivedata.csv", "r"));
dataset = list(lines)
for i in range(len(dataset)):
#converting strings into numbers for processing
dataset[i] = [float(x) for x in dataset[i]]
return dataset
def separatebyclass(dataset):
separated = {} #dictionary of classes 1 and 0
#creates a dictionary of classes 1 and 0 where the values are
#the instances belonging to each class
for i in range(len(dataset)):
vector = dataset[i]
if (vector[-1] not in separated):
separated[vector[-1]] = []
separated[vector[-1]].append(vector)
return separated
def mean(numbers):
return sum(numbers)/float(len(numbers))
def stdev(numbers):
avg = mean(numbers)
variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-
1)
return math.sqrt(variance)
def summarizebyclass(dataset):
separated = separatebyclass(dataset);
#print(separated)
summaries = {}
for classvalue, instances in separated.items():
#for key,value in dic.items()
#summaries is a dic of tuples(mean,std) for each class value
summaries[classvalue] = summarize(instances) #summarize is
used to cal to mean and std
return summaries
def calculateprobability(x, mean, stdev):
exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2))))
return (1 / (math.sqrt(2*math.pi) * stdev)) * exponent
def main():
filename = 'lab6_naivedata.csv'
splitratio = 0.67
dataset = loadcsv(filename);
main()
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
--------------------------------------------
7.Apply EM algorithm to cluster a set of data stored in a .CSV file. Use
the same data set for clustering using k-Means algorithm. Compare the
results of these two algorithms and comment on the quality of clustering.
You can add Java/Python ML library classes/API in the program.
_________________________________________________________________________
_________________________________________________________________________
____________________
names = ['Sepal_Length','Sepal_Width','Petal_Length','Petal_Width',
'Class']
dataset = pd.read_csv("C:/Users/asisk/Downloads/AIML
LAB/Programs/Programs/lab7_iris.csv", names=names)
X = dataset.iloc[:, :-1]
label = {'Iris-setosa': 0,'Iris-versicolor': 1, 'Iris-virginica': 2}
y = [label[c] for c in dataset.iloc[:, -1]]
plt.subplot(2, 2, 2)
plt.scatter(X.Petal_Length, X.Petal_Width, c=colormap[model.labels_],
s=40)
plt.title('K-Means Clustering')
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')
plt.subplot(2, 2, 3)
plt.scatter(X.Petal_Length, X.Petal_Width, c=colormap[gmm_y], s=40)
plt.title('GMM Clustering')
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
------------------------------
8.Write a program to implement k-Nearest Neighbor algorithm to classify
the iris data set. Print both correct and wrong predictions. Java/Python
ML library classes can be used for this problem.
_________________________________________________________________________
_________________________________________________________________________
__________
# Load dataset
iris=datasets.load_iris()
print("Iris Data set loaded...")
# Split the data into train and test samples
x_train, x_test, y_train, y_test =
train_test_split(iris.data,iris.target,test_size=0.2)
print("Dataset is split into training and testing...")
print("Size of trainng data and its label",x_train.shape,y_train.shape)
print("Size of trainng data and its label",x_test.shape, y_test.shape)
# Perform Training
classifier.fit(x_train, y_train)
# Perform testing
y_pred=classifier.predict(x_test)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------
9.Implement the non-parametric Locally Weighted Regression algorithm in
order to fit data points. Select appropriate data set for your experiment
and draw graphs
_________________________________________________________________________
_________________________________________________________________________
______________
#set k here
ypred = localWeightRegression(X,mtip,2)
SortIndex = X[:,1].argsort(0)
xsort = X[SortIndex][:,0]
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(bill,tip, color='green')
ax.plot(xsort[:,1],ypred[SortIndex], color = 'red', linewidth=10)
plt.xlabel('Total bill')
plt.ylabel('Tip')
plt.show();