aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornia <nia1048596@gmail.com>2014-07-13 18:13:27 +0800
committernia <nia1048596@gmail.com>2014-07-13 18:13:27 +0800
commit9f711945a9199a34bc295f3ed0a8cd561d2fb297 (patch)
tree33754decaaee31be612c3dbfc9e06c41986acdb2
parentc0b96ae66e6bd55016bebf440966bce3525aa18f (diff)
downloadmyoparasite-9f711945a9199a34bc295f3ed0a8cd561d2fb297.tar.gz
myoparasite-9f711945a9199a34bc295f3ed0a8cd561d2fb297.tar.zst
myoparasite-9f711945a9199a34bc295f3ed0a8cd561d2fb297.zip
a version that works
-rwxr-xr-xrecord.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/record.py b/record.py
index 3a19ad5..c1dcc82 100755
--- a/record.py
+++ b/record.py
@@ -54,7 +54,7 @@ def getdata (raw) :
def record () :
- # labels = range(Classifier.NUM_OF_LABELS-1, -1, -1) * 15
+ #labels = range(Classifier.NUM_OF_LABELS-1, -1, -1) * 15
labels = [0] * 15 + [1] * 15
# random.shuffle(labels)
datas = []
@@ -62,7 +62,7 @@ def record () :
rawdata2 = []
record_time = len (labels)
- shcmd = "arecord -c 2 -d %d -t raw -r 2000 -f S16_LE - 2>/dev/null | xxd -p | tr -d '\n' > tmppp" % (record_time + 1)
+ shcmd = "arecord -c 2 -d %d -t raw -r 2000 -f S16_LE - 2>/dev/null > tmppp" % (record_time + 1)
proc = subprocess.Popen (shcmd , stdout = subprocess.PIPE, shell = True)
for i in range (-1, record_time) :
if i > -1 :
@@ -108,18 +108,23 @@ def train(rawdata1, rawdata2, y):
X1 = rawdata1
X2 = rawdata2
y_2 = []
- for yi, x1, x2 in zip(y, X1[:-1], X2[:-1]):
- for i in range(700, 1500, Classifier.WINDOW_SHIFT_TRAIN):
+ for yi, x1, x2 in zip(y, X1, X2):
+ for i in range(500, 1500, Classifier.WINDOW_SHIFT_TRAIN):
X.append( extract_feature(
x1[i: i+Classifier.WINDOW_SIZE],
- x2[i: i+Classifier.WINDOW_SIZE]) )
+ x2[i: i+Classifier.WINDOW_SIZE])[:500] )
# X.append(x1[i: i+Classifier.WINDOW_SIZE])
# X.append( np.concatenate((
# np.absolute(np.fft.fft(x1[i: i+Classifier.WINDOW_SIZE])) ,
# np.absolute(np.fft.fft(x2[i: i+Classifier.WINDOW_SIZE])) ) ).tolist())
y_2.append( yi )
y = y_2
- scalers, classifiers, scores = Classifier.gen_model(X, y, verbose=False)
+ scalers, classifiers, scores = Classifier.gen_model(X, y, verbose=True)
+ """
+ scalers = []
+ classifiers = KNeighborsClassifier(n_neighbors=1).fit(X, y)
+ scores = []
+ """
sys.stderr.write ("finish training\n")
return scalers, classifiers, scores
@@ -132,7 +137,7 @@ def predict (scalers, classifiers, scores) :
sys.stderr.write ("start predict\n")
- shcmd = "arecord -t raw -c 2 -r 2000 -B 25 -f S16_LE - 2>/dev/null"
+ shcmd = "arecord -t raw -c 2 -r 2000 -f S16_LE - 2>/dev/null"
proc = subprocess.Popen (shcmd, stdout = subprocess.PIPE, shell = True)
read_thread = readdataThread (proc.stdout)
read_thread.start ()
@@ -147,16 +152,16 @@ def predict (scalers, classifiers, scores) :
# TODO
data2 = data1
- X = extract_feature(data1, data2)
+ X = extract_feature(data1, data2)[:500]
tmpp.append(X)
- tp = Classifier.multi_classification(X, scalers, classifiers, scores)[0]
+ #tp = classifiers.predict([X])[0]
+ tp = Classifier.multi_classification([X], scalers, classifiers, scores)[0]
print tp
p[tp] += 1
count += 1
# TODO
if count >= 10 :
-# TODO
maj = p.index (max (p))
count = 0
p = [0] * Classifier.NUM_OF_LABELS
@@ -189,10 +194,11 @@ def main () :
sys.stderr.write ("Wrong arguments\n")
exit (1)
scalers, classifiers, scores = train (rawx1, rawx2, y)
+ """
for i, j in zip(rawx1[:-1], rawx2[:-1]):
- print len(i), len(j)
- print Classifier.multi_classification(extract_feature(rawx1[500:1000], rawx2[500:1000]), scalers, classifiers, scores)
- #predict (scalers, classifiers, scores)
+ print Classifier.multi_classification(extract_feature(i[500:1000], j[500:1000])[:500], scalers, classifiers, scores)
+ """
+ predict (scalers, classifiers, scores)
if __name__ == "__main__" :
main ()