AIML Lab Improvement
AIML Lab Improvement
A LABORATORY MANUAL
FOR
ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING
LABORATORY
(18CSL76)
VII SEMESTER
Prepared by:
1. Suresh P
2. Surekha Gowda
3. Ashika
PREREQUISITES
PROGRAMMING IN PYTHON
SOFTWARE REQUIREMENTS
MACHINE LEARNINGPACKAGES
SCIKIT-LEARN
SCIPY-MANY NUMERICALVALUES
PANDAS-FACILITATES STRUCTURED/TABULARDATA
MANIPULATION AND VISUALIZATIONS.
OPERATING SYSTEMS
WINDOWS/LINUX
1 A* Search Algorithm 7
12
2 AO* Search Algorithm
17
3 Candidate Elimination Algorithm
23
4 Decision Tree-ID3
31
5 Artificial Neural Network using Back propagation
38
6 Classification of data using Naïve Bayes
43
7 Data set for Clustering using K-means Algorithm
48
8 K-Nearest Neighbour algorithm
53
9 Locally Weighted Regression algorithm
Machine learning
Machine learning is a subset of artificial intelligence in the field of computer science that often uses
statistical techniques to give computers the ability to "learn" (i.e., progressively improve performance
on a specific task) with data, without being explicitly programmed. In the past decade, machine
learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly
improved understanding of the human genome.
Machine learning tasks are typically classified into two broad categories, depending on whether there
is a learning "signal" or "feedback" available to a learning system:
1. Supervised learning: The computer is presented with example inputs and their desired
outputs, given by a "teacher", and the goal is to learn a general rule that maps inputs to outputs.
As special cases, the input signal can be only partially available, or restricted to specialfeedback:
3. Active learning: the computer can only obtain training labels for a limited set of instances
(based on a budget), and also has to optimize its choice of objects to acquire labels for. When
used interactively, these can be presented to the user forlabeling.
4. Reinforcement learning: training data (in form of rewards and punishments) is given only as
feedback to the program's actions in a dynamic environment, such as driving a vehicle or playing
a game against anopponent.
Page 2
5. Unsupervised learning: No labels are given to the learning algorithm, leaving it on its own to
find structure in its input. Unsupervised learning can be a goal in itself (discovering hidden
patterns in data) or a means towards an end (featurelearning).
In classification, inputs are divided into two or more classes, and the learner must produce a model that
assigns unseen inputs to one or more (multi-label classification) of these classes. This is typically
tackled in a supervised manner. Spam filtering is an example of classification, where the inputs are
email (or other) messages and the classes are "spam" and "not spam".
In regression, also a supervised problem, the outputs are continuous rather than discrete.
In clustering, a set of inputs is to be divided into groups. Unlike in classification, the groups are not
known beforehand, making this typically an unsupervised task.
Dimensionality reduction simplifies inputs by mapping them into a lower dimensional space. Topic
modeling is a related problem, where a program is given a list of human language documents and is
tasked with finding out which documents cover similar topics.
1. Decision treelearning
Decision tree learning uses a decision tree as a predictive model, which maps observations about an
item to conclusions about the item's target value.
Page 3
2. Association rulelearning
Association rule learning is a method for discovering interesting relations between variables in large
databases.
3. Artificial neuralnetworks
An artificial neural network (ANN) learning algorithm, usually called "neural network" (NN), is a
learning algorithm that is vaguely inspired by biological neural networks. Computations are structured
in terms of an interconnected group of artificial neurons, processing information using a connectionist
approach to computation. Modern neural networks are non-linear statistical data modeling tools. They
are usually used to model complex relationships between inputs and outputs, to find patterns in data, or
to capture the statistical structure in an unknown joint probability distribution between
observedvariables.
4. Deeplearning
Falling hardware prices and the development of GPUs for personal use in the last few years have
contributed to the development of the concept of deep learning which consists of multiple hidden
layers in an artificial neural network. This approach tries to model the way the human brain processes
light and sound into vision and hearing. Some successful applications of deep learning are computer
vision and speech Recognition.
5. Inductive logicprogramming
Inductive logic programming (ILP) is an approach to rule learning using logic Programming as a
uniform representation for input examples, background knowledge, and hypotheses. Given an
encoding of the known background knowledge and a set of examples represented as a logical database
of facts, an ILP system will derive a hypothesized logic program that entails all positive and no
negative examples. Inductive programming is a related field that considers any kind of programming
languages for representing hypotheses (and not only logic programming), such as functional programs.
6. Support vector machines
Support vector machines (SVMs) are a set of related supervised learning methods used for
classification and regression. Given a set of training examples, each marked as belonging to one
Page 4
of two categories, an SVM training algorithm builds a model that predicts whether a new example falls
into one category or the other.
7. Clustering
Cluster analysis is the assignment of a set of observations into subsets (called clusters) so that
observations within the same cluster are similar according to some pre designated criterion or criteria,
while observations drawn from different clusters are dissimilar. Different clustering techniques make
different assumptions on the structure of the data, often defined by some similarity metric and
evaluated for example by internal compactness (similarity between members of the same cluster) and
separation between different clusters. Other methods are based on estimated density and graph
connectivity. Clustering is a method of unsupervised learning, and a common technique for statistical
dataanalysis.
8. Bayesian networks
A Bayesian network, belief network or directed acyclic graphical model is a probabilistic graphical
model that represents a set of random variables and their conditional independencies via a directed
acyclic graph (DAG). For example, a Bayesian network could represent the probabilistic relationships
between diseases and symptoms. Given symptoms, the network can be used to compute the
probabilities of the presence of various diseases. Efficient algorithms exist that perform inference
andlearning.
9. Reinforcementlearning
Reinforcement learning is concerned with how an agent ought to take actions in an environment so as
to maximize some notion of long-term reward. Reinforcement learning algorithms attempt to find a
policy that maps states of the world to the actions the agent ought to take in those states.
Reinforcement learning differs from the supervised learning problem in that correct input/output pairs
are never presented, nor sub-optimal actions explicitly corrected.
10. Similarity and metriclearning
In this problem, the learning machine is given pairs of examples that are considered similar and pairs
of less similar objects. It then needs to learn a similarity function (or a distance metric function) that
can predict if new objects are similar. It is sometimes used in Recommendation systems.
Page 5
11. Geneticalgorithms
A genetic algorithm (GA) is a search heuristic that mimics the process of natural selection, and uses
methods such as mutation and crossover to generate new genotype in the hope of finding good
solutions to a given problem. In machine learning, genetic algorithms found some uses in the 1980s
and 1990s. Conversely, machine learning techniques have been used to improve the performance of
genetic and evolutionary algorithms.
Page 6
Machine Learning Laboratory 18CSL76
Program 1
Implement A* Search Algorithm.(Ver1)
from collections import deque
class Graph:
def init (self, adjac_lis):
self.adjac_lis = adjac_lis
# This is heuristic function which is having equal values for all nodes
def h(self, n):
H={
'A': 1,
'B': 1,
'C': 1,
'D': 1
}
return H[n]
if n == None:
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)
OUTPUT:
Path found: ['A', 'B', 'D']
['A', 'B', 'D']
OR
Version 2
class AStarGraph(object):
#Define a class board like grid with two barriers
closedVertices = set()
openVertices = set([start])
cameFrom = {}
Output
route [(0, 0), (1, 1), (2, 2), (3, 1), (4, 1), (5, 1), (6, 2), (7, 3), (6, 4), (7, 5), (6, 6), (7, 7)]
cost 11
vector<node*>*ans=(next_node-
>v)[i];
vector<node*>
ans_v=*ans;
int temp_cost=0;
for(unsigned int
j=0;j<(ans_v.size());j++)
{
node*
n=ans_v[j];
temp_cost+=n-
>data;
}
if(temp_cost<cost)
{
min_ans=ans;
cost=temp_cost;
}
}
vector<node*>
min_ans_v=*min_ans;
next_node=NULL;
for(unsigned int
next_node=min_ans_v[j];
break;
}
}
vector<node*>
min_ans_v=*min_ans;
for(unsigned int
j=0;j<min_ans_v.size();j++)
{
node* n=min_ans_v[j];
cout<<"Exploring
:"<<n->data<<endl;
int
final_cost=INT_MAX;
if(n->v.size()==0)
{
n->mark=true;
}
else{
for(unsigned int
i=0;i<n->v.size();i++)
{
vector<node*>*ans=(n->v)[i];
vector<node*>
ans_v=*ans;
int temp_cost=0;
for(unsigned int
j=0;j<(ans_v.size());j++)
{
node*
n=ans_v[j];
temp_cost+=n-
>data;
temp_cost+=edge_cost;
}
if(temp_cost<final_cost)
final_cost=temp_cost;
}
}
n- >data=final_cost;
n->mark=true;
}
cout<<"Marked : "<<n-
>data<<endl;
}
for(int i=0;i<20;i++)
cout<<"=";
cout<<endl;
while(!st.empty())
{
node* n=st.top();
cout<<n->data<<" ";
st.pop();
int
final_cost=INT_MAX;
for(unsigned int
i=0;i<n->v.size();i++)
{
vector<node*>*ans=(n->v)[i];
vector<node*>
ans_v=*ans;
int temp_cost=0;
for(unsigned int
j=0;j<(ans_v.size());j++)
{
node*
n=ans_v[j];
temp_cost+=n-
>data;
temp_cost+=edge_cost;
}
if(temp_cost<final_cost)
{
min_ans=ans;
final_cost=temp_cost;
}
}
}
}
void print(node* root)
{
if(root)
{
cout<<root->data<<" ";
vector<vector<node*>*
>vec=root->v;
for(unsigned int
i=0;i<(root->v).size();i++)
{
vector<node*>*
ans=(root->v)[i];
vector<node*>
ans_v=*ans;
for(unsigned int
j=0;j<ans_v.size();j++)
{
node* n=ans_v[j];
print(n);
}
}
}
return;
}
int main()
{
node* root=new node;
root->solved=false;
root->mark=false;
insert(root);cout<<endl;
cout<<"Enter the edge cost:
"<<endl;cin>>edge_cost;cout<<endl;
cout<<"The tree is as follows
:"<<endl;
print(root);
cout<<endl;
aostar(root);
cout<<"The minimum cost is :
"<<root->data<<endl;
return 0;