Skip to content

Instantly share code, notes, and snippets.

View abhishek-Kumar009's full-sized avatar
🎯
Focusing

Abhishek abhishek-Kumar009

🎯
Focusing
View GitHub Profile
mutest, sigma2test = estimateGaussian(Xtest)
ptest = multivariateGaussian(Xtest, mutest, sigma2test)
pvaltest = multivariateGaussian(Xvaltest, mutest, sigma2test)
F1test, epsilontest = selectThreshHold(yvaltest, pvaltest)
print('\nBest epsilon and F1 are\n',epsilontest, F1test)
outliersTest = ptest < epsilontest
listOfOl = findIndices(outliersTest)
print('\n\n Outliers are:\n',listOfOl)
print('\n\nNumber of outliers are: ',len(listOfOl))
mutest, sigma2test = estimateGaussian(Xtest)
ptest = multivariateGaussian(Xtest, mutest, sigma2test)
pvaltest = multivariateGaussian(Xvaltest, mutest, sigma2test)
F1test, epsilontest = selectThreshHold(yvaltest, pvaltest)
print('\nBest epsilon and F1 are\n',epsilontest, F1test)
newDataset = sio.loadmat('anomalyDataTest.mat')
Xtest = newDataset['X']
Xvaltest = newDataset['Xval']
yvaltest = newDataset['yval']
plt.scatter(X[:, 0], X[:, 1], marker = "x")
plt.xlabel('Latency(ms)')
plt.ylabel('Throughput(mb/s)')
plt.scatter(X[listOfOutliers,0], X[listOfOutliers, 1], facecolors = 'none', edgecolors = 'r')
plt.show()
count_outliers = len(listOfOutliers)
print('\n\nNumber of outliers:', count_outliers)
print('\n',listOfOutliers)
def findIndices(binVec):
l = []
for i in range(len(binVec)):
if binVec[i] == 1:
l.append(i)
return l
def selectThreshHold(yval, pval):
F1 = 0
bestF1 = 0
bestEpsilon = 0
stepsize = (np.max(pval) - np.min(pval))/1000
epsVec = np.arange(np.min(pval), np.max(pval), stepsize)
noe = len(epsVec)
def multivariateGaussian(X, mu, sigma2):
n = np.size(sigma2, 1)
m = np.size(sigma2, 0)
#print(m,n)
if n == 1 or m == 1:
# print('Yes!')
sigma2 = np.diag(sigma2[0, :])
#print(sigma2)
X = X - mu
def estimateGaussian(X):
n = np.size(X, 1)
m = np.size(X, 0)
mu = np.zeros((n, 1))
sigma2 = np.zeros((n, 1))
mu = np.reshape((1/m)*np.sum(X, 0), (1, n))
sigma2 = np.reshape((1/m)*np.sum(np.power((X - mu),2), 0),(1, n))
return mu, sigma2