-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrain.py
67 lines (58 loc) · 2.32 KB
/
train.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import math
import pickle
import numpy as np
import pandas as pd
from sklearn import svm
from sklearn.svm import SVC
from sklearn import preprocessing
from sklearn.covariance import EllipticEnvelope
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
#======================================================#
# Please provide the file training for training here #
#======================================================#
data = pd.read_csv("/home/harry/Documents/isi/leader/legitimate_data.csv")
#=====================================================#
# Outlier Fraction needs to be specified here #
#=====================================================#
outliers_fraction = 0
cols = data.columns
side_data = data.copy()
side_data.drop('class', 1, inplace=True)
side_data = pd.DataFrame(side_data, columns = cols[:-1])
side_data['class'] = data['class']
data=side_data
train_data = data.as_matrix()
print(train_data.shape)
labels = np.asarray(data['class'])
# Feature names
features = data.columns.values[:-1].tolist()
for i in range(train_data.shape[0]):
for j in range(train_data.shape[1]):
if np.isinf(train_data[i, j]):
train_data[i, j] = -1
if (math.isnan(train_data[i, j])):
train_data[i, j] = -1
print (np.all(np.isfinite(train_data)))
labels[np.where(labels==0)] = -1
labels[np.where(labels==1)] = 1
np.unique(labels)
print(len(np.where(labels==1)[0]), len(np.where(labels==-1)[0]))
model = EllipticEnvelope(contamination=outliers_fraction)
model.fit(train_data)
print (accuracy_score(labels, model.predict(train_data)))
print (confusion_matrix(labels, model.predict(train_data)))
pickle.dump(model, open("elliptic_envelope.mlmodel", 'wb'))
conn = "1987,9,51,13,22,0,10043209,7,7,16,14,32,850,459,17,8,59,5,3,1,3,1,2,0,2,1,1,1,1,4,4,2,1,1,1,1,1"
#conn = sys.argv[1]
feature_values = conn.split(",")
if(len(feature_values) == 37):
feature_values = [int(i) for i in feature_values]
df = pd.DataFrame(np.array(feature_values).reshape(1,37))
feature_values = df.as_matrix()
#feature_values = feature_values.as_matrix()
#feature_values.reshape(1,36)
#print(feature_values.shape)
output = model.predict(feature_values)
print("\n\n Hi",output)