In [2]:
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from tornado import gen
from tornado.ioloop import IOLoop
from aimetrics import metrics
%matplotlib inline
In [3]:
data = {}
@gen.coroutine
def get_data():
data['drones'] = yield metrics.fetch_data("http://localhost:3002/", "bst", "drone", auth_username="bst", auth_password="bst")
return data
IOLoop.instance().add_callback(get_data)
In [5]:
data
Out[5]:
In [6]:
X = pd.DataFrame(data['drones']['X'], columns=data['drones']['features'])
In [14]:
from sklearn.preprocessing import normalize
X_norm = normalize(X)
X_norm.max(axis=0)
Out[14]:
In [8]:
from sklearn.decomposition import PCA
X_PCA = pd.DataFrame(PCA(2).fit_transform(X))
X_PCA.plot(kind='scatter', x=0, y=1)
Out[8]:
In [9]:
from sklearn.decomposition import PCA
X_PCA_2 = pd.DataFrame(PCA(2).fit_transform(X[['rcs','speed', 'range']]))
X_PCA_2.plot(kind='scatter', x=0, y=1)
Out[9]:
In [17]:
y = pd.DataFrame(data['drones']['y'], columns=data['drones']['classes'])[['small drone', 'person']]
In [18]:
import seaborn as sns
Xy = X.copy()
Xy['small_drone'] = y['small drone']
Xy['person'] = y['person']
Xy['label'] = Xy['small_drone'].apply(lambda x: "small_drone" if x == 1 else "person")
del Xy['small_drone']
del Xy['person']
sns.pairplot(Xy, hue='label')
Out[18]:
In [19]:
sns.pairplot(Xy[['speed', 'range', 'rcs', 'label']], hue='label', size=4)
Out[19]:
In [20]:
Xy[['pca1', 'pca2']] = X_PCA_2
sns.pairplot(Xy[['pca1', 'pca2', 'label']], hue='label', size=6)
Out[20]:
In [21]:
%matplotlib qt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
Xy_drones = Xy[Xy.label=="small_drone"]
xs = Xy_drones['rcs'].values
ys = Xy_drones['range'].values
zs = Xy_drones['speed'].values
ax.scatter(xs, ys, zs, c='r')
Xy_person = Xy[Xy.label=="person"]
xs = Xy_person['rcs'].values
ys = Xy_person['range'].values
zs = Xy_person['speed'].values
ax.scatter(xs, ys, zs, c='b')
ax.set_xlabel('RCS')
ax.set_ylabel('Range')
ax.set_zlabel('Speed')
plt.show()
In [ ]: