예제 #1
0
def train(dataset):
    db = DB(join(dbpath,'train.db'))
    tbl_manifest = '%s_man'%dataset
    tbl_rss = '%s_rss'%dataset

    n_feature = int(db.queryone('value',tbl_manifest,'key="n_feature"')[0])
    
    data = []
    cls = []
    for y,entry in db.query(['p_id','entry'], tbl_rss):
        dic = json.loads(entry)
        x = [-100]*n_feature
        for m_id,rss in dic.items():
            x[int(m_id)] = float(rss)
        data.append(x)
        cls.append(y)
    neigh = KNeighborsClassifier(n_neighbors=5)
    neigh.fit(data,cls)
    
    fout = open('model.dat','w')
    pickle.dump(neigh,fout)
    fout.close()
예제 #2
0
#!/usr/bin/env python
import pickle
from dbhelper import DB

db = DB('train.db')
n_feature = int(db.queryone('value','manifest','key="n_feature"')[0])

fin = open('model.dat')
clf = pickle.load(fin)
fin.close

def predict(dic):
    data = [-100]*n_feature
    for m_id, rss in dic.items():
        data[int(m_id)] = float(rss)
    proba = clf.predict_proba([data]).tolist()[0]
    print 'proba--', proba
    return proba
예제 #3
0
#!/usr/bin/env python
import pickle
from dbhelper import DB
import os
from os.path import join

rootpath = os.getenv('WLAN_ROOT')
datapath = join(rootpath,'raw_data')
dbpath = join(datapath,'DB')
db = DB(join(dbpath,'train.db'))
dataset = db.queryone('value','meta','key="current"')[0]
tbl_manifest = '%s_man'%dataset
n_feature = int(db.queryone('value',tbl_manifest,'key="n_feature"')[0])

fin = open('model.dat')
clf = pickle.load(fin)
fin.close

def predict(dic):
    data = [-100]*n_feature
    for m_id, rss in dic.items():
        data[int(m_id)] = float(rss)
    proba = clf.predict_proba([data]).tolist()[0]
    return proba
예제 #4
0
map_coord = {}
for line in open('raw_data/coord.txt'):
    pt,xy = line.strip().split('\t')
    x,y = xy.split(' ')
    map_coord[pt] = (x,y)

db.insert(('n_feature',len(map_mac)), 'manifest')
db.insertmany([ (m_id,mac) for mac,m_id in map_mac.items()], 'map_mac')
db.insertmany([(p_id,pt)+map_coord[pt] for pt,p_id in map_pt.items()], 'map_pt')
db.commit()
            
#-------------------------------split data----------------------------
db_train = DB('train.db')
db_test = DB('test.db')
for device in db.queryone('value', 'manifest', 'key="device"'):
    db_train.new_table(device, ('r_id integer','p_id integer','entry text'))
    db_test.new_table(device, ('r_id integer','p_id integer','entry text'))
    for record in db.queryall(device):
        if random.random() > 0.3:
            db_train.insert(record, device)
        else:
            db_test.insert(record, device)

db_train.clone_from(db, 'manifest')
db_train.clone_from(db, 'map_mac')
db_train.clone_from(db, 'map_pt')

db_test.clone_from(db, 'manifest')
db_test.clone_from(db, 'map_mac')
db_test.clone_from(db, 'map_pt')
예제 #5
0
#!/usr/bin/env python
from dbhelper import DB
import json

map_mac = {}
map_pt = {}
feas_map = {}
db = DB('train.db')
mac_dic = dict([(mac,m_id) for mac,m_id in db.query(['mac','m_id'],'map_mac')])
pid_dic = dict([(p_id,pt) for p_id,pt in db.query(['p_id','pt'],'map_pt')])
coord_dic = dict([(p_id,(int(x),int(y))) for p_id,x,y in db.query(['p_id','x','y'],'map_pt')])
n_point = int(db.queryone('value','manifest','key="n_point"')[0])
p2p_matrix = [[float('inf')]*n_point for i in range(n_point)]
for i in range(n_point):
    p2p_matrix[i][i] = 0.0
for i,j,dis in db.query(['src_pt','dest_pt','distance'],'relation'):
    p2p_matrix[i][j] = p2p_matrix[j][i] = dis

def get_macid(mac):
    return mac_dic[mac]

def get_pointname(pid):
    return pid_dic[pid]

def get_coordinate(pid):
    return coord_dic[pid]

def has_mac(mac):
    return mac in mac_dic

def transform(entry):