0% found this document useful (0 votes)
37 views6 pages

Maximally Specific Hypothesis Learning

Uploaded by

itsme31121999
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views6 pages

Maximally Specific Hypothesis Learning

Uploaded by

itsme31121999
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1)import csv

num_attributes=6
a = []
print("\n The given training data set\n")

with open('[Link]','r') as csvfile:


reader = [Link](csvfile)
for row in reader:
[Link](row)
print(row)

print("\n The initial value of hypothesis: ")


hypothesis = ['0'] * num_attributes
print(hypothesis)

for j in range(0,num_attributes):
hypothesis[j]=a[0][j]

print(" Find S: Finding a maximally specific Hypothesis")

for i in range(0,len(a)):
if a[i][num_attributes] == 'yes':
for j in range(0,num_attributes):
if a[i][j] != hypothesis[j]:
hypothesis[j] ='?'
else:
hypothesis[j]= a[i][j]
print("for training instance no:{0} the hypothesis is:",format(i),hypothesis)

print("\n The Maximally Specific Hypothesis for a given training Example:\n")


print(hypothesis)

2)import pandas as pd
import numpy as np
df=pd.read_csv("[Link]")
df=[Link](['slno'],axis=1)

concepts=[Link][:,:-1]
target=[Link][:,-1]
[Link]()

def learn(concepts,target):
specific_h=concepts[0].copy()

general_h=[["?" for i in range (len(specific_h))]for i in range (len(specific_h))]


for i,h in enumerate(concepts):
if target[i]=="yes":
for x in range(len(specific_h)):
if h[x]!=specific_h[x]:
specific_h[x]='?'
general_h[x][x]='?'
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]='?'
indices=[i for i,val in enumerate(general_h) if val==['?','?','?','?','?','?']]
for i in indices:
general_h.remove(['?','?','?','?','?','?'])
return specific_h,general_h

s_final,g_final=learn(concepts,target)
print(f"Final S: {s_final}")
print(f"Final G: {g_final}")

3)import pandas as pd
from pandas import DataFrame
from math import log
from collections import Counter
from pprint import pprint

df_tennis=pd.read_csv('[Link]')
df_tennis.keys()[0]
def entropy(probs):
return sum([-prob*log(prob,2) for prob in probs])
def entropy_of_list(a_list):
cnt=Counter(x for x in a_list)
num_instances=len(a_list)*1.0
probs=[x/num_instances for x in [Link]()]
return entropy(probs)
def information_gain(df,split_attribute_name, target_attribute_name):
df_split=[Link](split_attribute_name)
nobs=len([Link])*1.0
df_agg_ent=df_split.agg({target_attribute_name:[entropy_of_list, lambda x:
len(x)/nobs]})[target_attribute_name]
df_agg_ent.columns=['Entropy','PropObservations']
new_entropy=sum(df_agg_ent['Entropy']*df_agg_ent['PropObservations'])
old_entropy=entropy_of_list(df[target_attribute_name])
return old_entropy-new_entropy

def id3(df,target_attribute_name,attribute_names,default_class=None):
cnt=Counter(x for x in df[target_attribute_name])
if len(cnt)==1:
return next(iter(cnt))
elif [Link] or (not attribute_names):
return default_class
else:
default_class=max([Link]())
gainz=[information_gain(df,attr,target_attribute_name) for attr in attribute_names]
index_of_max= [Link](max(gainz))
best_attr=attribute_names[index_of_max]
tree={best_attr:{}}
remaining_attribute_names=[i for i in attribute_names if i!=best_attr]

for attr_val, data_subset in [Link](best_attr):


subtree=id3(data_subset,target_attribute_name,remaining_attribute_names, default_class)
tree[best_attr][attr_val]=subtree
return tree

attribute_names=list(df_tennis.columns)
#Print("List of attributes:",attribute_names)
attribute_names.remove("PlayTennis")
#Print("List of attributes:",attribute_names)
tree=id3(df_tennis,'PlayTennis',attribute_names)
print("\n\n The Resultant Decision Tree is:\n")
pprint(tree)

4)import numpy as np
X=[Link](([2,9],[1,5],[3,6]),dtype=float)
y=[Link](([92],[86],[89]),dtype=float)
X=X/[Link](X,axis=0)
y=y/100
def sigmoid(x):
return 1/(1+[Link](-x))
def derivatives_sigmoid(x):
return x*(1-x)
epoch=1000
learning_rate=0.6
inputlayer_neurons=2
hiddenlayer_neurons=3
output_neurons=1
wh=[Link](size=(inputlayer_neurons, hiddenlayer_neurons))
bh=[Link](size=(1,hiddenlayer_neurons))
wo=[Link](size=(hiddenlayer_neurons,output_neurons))
bo=[Link](size=(1,output_neurons))
for i in range(epoch):
net_h=[Link](X,wh)+bh
sigma_h=sigmoid(net_h)
net_o=[Link](sigma_h,wo)+bo
output=sigmoid(net_o)
deltaK=(y-output)*derivatives_sigmoid(output)
deltaH=[Link](wo.T)*derivatives_sigmoid(sigma_h)
wo=wo+sigma_h.[Link](deltaK)*learning_rate
wh=wh+[Link](deltaH)*learning_rate

print(f"Input:\n{X}*")
print(f"Actual Ouput:\n{y}*")
print(f"Predicted Output:\n{output}")

5)from sklearn.model_selection import train_test_split


from [Link] import KNeighborsClassifier
from sklearn import datasets
iris=datasets.load_iris()
print("Iris Data set loaded...")
x_train, x_test, y_train, y_test= train_test_split([Link], [Link], test_size=0.1)
#randomstate = 0
for i in range(len(iris.target_names)):
print("Label",i,"-",str(iris.target_names[i]))
classifier=KNeighborsClassifier(n_neighbors=2)
[Link](x_train, y_train)
y_pred=[Link](x_test)
print("Results of Classification using K-nn with K=1")
for r in range(0,len(x_test)):
print("Sample:", str(x_test[r]),"Actual Label:", str(y_test[r]),"Predicted Label:",str(y_pred[r]))
print("Classification Accuracy:", [Link](x_test, y_test));

6)def probAttr(data,attr,val):
Total=[Link][0]
cnt=len(data[data[attr]==val])
return cnt,cnt/Total

def train(data,Attr,conceptVals,concept):
conceptProbs={}
countConcept={}

for cVal in conceptVals:


countConcept[cVal],conceptProbs[cVal]=probAttr(data,concept,cVal)

AttrConcept={}
probability_list={}

for att in Attr:


probability_list[att]={}
AttrConcept[att]={}

for val in Attr[att]:


AttrConcept[att][val]={}
a,probability_list[att][val]=probAttr(data,att,val)

for cVal in conceptVals:


dataTemp=data[data[att]==val]

AttrConcept[att][val][cVal]=len(dataTemp[dataTemp[concept]==cVal])/countConcept[cVal]

print(f"P(A):{conceptProbs}\n")
print(f"P(X/A):{AttrConcept}\n")
print(f"P(X):{probability_list}\n")

return conceptProbs,AttrConcept,probability_list

def test(examples,Attr,concept_list,conceptProbs,AttrConcept,probablity_list):
misclassification_count=0
Total=len(examples)
for ex in examples:
px={}
for a in Attr:
for x in ex:
for c in concept_list:
if x in AttrConcept[a]:
if c not in px:
px[c]=conceptProbs[c]*AttrConcept[a][x][c]/probability_list[a][x]
else:
px[c]=px[c]*AttrConcept[a][x][c]/probability_list[a][x]
print(px)
classification=max(px,key=[Link])
print(f"Classification:{classification} Expected:{ex[-1]}")

if(classification!=ex[-1]):
misclassification_count+=1
misclassification_rate=misclassification_count*100/Total
accuracy=100-misclassification_rate

print(f"Misclassification Count={misclassification_count}")
print(f"Misclassification Rate={misclassification_rate}%")
print(f"Accuracy={accuracy}%")

import pandas as pd
df=pd.read_csv('[Link]')
concept=str(list(df)[-1])
concept_list=set(df[concept])
Attr={}

for a in [Link][:-1]:
Attr[a]=set(df[a])
print(f"{a}:{Attr[a]}")

conceptProbs,AttrConcept,probability_list=train(df,Attr,concept_list,concept)
examples=pd.read_csv('[Link]')
test([Link],Attr,concept_list,conceptProbs,AttrConcept,probability_list)

7)import numpy as np
import [Link] as plt

def local_regression(x0,X,Y,tau):
x0=[1,x0]
X=[[1,l] for l in X]
X=[Link](X)
xw=(X.T)*[Link]([Link]((X-x0)**2, axis=1)/(-2*tau))
beta=[Link](xw@X)@xw@Y@x0
return beta

def draw(tau):
prediction=[local_regression(x0,X,Y,tau) for x0 in domain]
[Link](X,Y,'o',color='black')
[Link](domain,prediction,color='red')
[Link]()

X=[Link](-3,3,num=1000)
domain=X
Y=[Link]([Link](X**2-1)+.5)

draw(10)
draw(0.1)
draw(0.01)
draw(0.001)

8)import [Link] as plt


import numpy as np
import pandas as pd
from sklearn import preprocessing
from [Link] import KMeans
from [Link] import load_iris
from [Link] import GaussianMixture

iris=load_iris()
df = [Link](iris['data'],columns=iris['feature_names'])
df['target']= iris['target']

X=[Link][:,:-1]
y=df['target']

from sklearn import preprocessing


scaler=[Link]()
[Link](X)
X_scaled_array=[Link](X)
X_scaled=[Link](X_scaled_array,columns=[Link])

[Link](figsize=(14,7))
colormap=[Link](['red','green','blue'])
#REAL PLOT
[Link](1,3,1)
[Link](X_scaled['petal length (cm)'],X_scaled['petal width (cm)'],c=colormap[y],s=40)
[Link]('Real')
#K-PLOT
[Link](1,3,2)
model=KMeans(n_clusters=3,random_state=0)
pred_y=model.fit_predict(X)
pred_y=[Link](pred_y,[1,0,2]).astype(np.int64)
[Link](X_scaled['petal length (cm)'],X_scaled['petal width (cm)'],c=colormap[pred_y],s=40)
[Link]('KMeans')
#GMM PLOT
gmm=GaussianMixture(n_components=3,max_iter=200)
y_cluster_gmm=gmm.fit_predict(X_scaled)
y_cluster_gmm=[Link](y_cluster_gmm,[2,0,1]).astype(np.int64)
[Link](1,3,3)
[Link](X['petal length (cm)'],X['petal width (cm)'],c=colormap[y_cluster_gmm],s=40)
[Link]('GMM Classification')

You might also like