{ "metadata": { "name": "", "signature": "sha256:c7a42663f208bb9970a862ad379be8d2ad8cb9e2ed6e2b17bf05217079b03c79" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import print_function" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "with np.load(\"data_files.npz\") as data:\n", " X_train = data['X_train']\n", " Y_train = data['Y_train']\n", " X_test = data['X_test']\n", " Y_test = data['Y_test']\n", " X_comp = data['X_comp']\n", "del data" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Work in floating point this time" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X_train = np.float64(X_train)\n", "X_test = np.float64(X_test)\n", "X_comp = np.float64(X_comp)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "def convert_to_spectra(X):\n", " out = []\n", " for row in X:\n", " xfft = np.fft.fft(row)\n", " n = len(xfft)\n", " half_n = np.ceil(n/2.0)\n", " xfft = (2.0 / n) * xfft[1:half_n]\n", " out.append(np.abs(xfft))\n", " out = np.array(out)\n", " return out" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_spectra = convert_to_spectra(X_train)\n", "X_test_spectra = convert_to_spectra(X_test)\n", "X_comp_spectra = convert_to_spectra(X_comp)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_spectra.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "(15680, 1666)" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(X_train_spectra[0])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nJ71mioR06dLw3L33vSGTHj06OW81impYZ54ZStXQ2MRxJ5yQHx43ukPo0polXSCAUKvJe9cqkW4A\nj3s8xbUsQN40AAAQ5ElEQVTrtE0nnlh63AsvBBdTtW+OxO0el16aXL/ttgvpFU2zUYmiNjD3+r+h\n0m60pSDEtYH0C1DU+FvkMvrnf87326YFpl5iu4pevJ6eMK1WPvvZ4v2xS2r+fPjGN8J63PD5V38F\n48fnj9mIX7wNG0KmEGegt94aesFAKEk/+GByvaZNS9JftCgIR1yq3W+/RJw2bCjt8bNxY/mgu82b\nS1/+rbYKvYZ23z3UKCB0T41rm/WQdcWku1RW6qa8227J+IgiQUjXWE46Kbgvsm6t8ePzj6u10bta\nragefvaz4v3Z/zpkCPzTP5WGFbls026gn/40LIsKU3fcUVrKv/DCyvasXAkjRgQPQfo8u+4arlH8\nnEB4RqvVqCG0gVWqVcybV9to9LbG3dvmBzi4P/BAmBHopZe8IsmsQe4XXBCWp5yS7B89OoSlOfbY\n5Jgjj6ycXva4bJxHHw3bjz6axM0ef+ml5WHp3447un/oQ8Vx2un38Y+7X3KJ+1lnhf/75S+H8KOP\nLl2OHRuWmzeH+wHuJ51Unl76XrzySrJ+++3uhx5aGnenncqPv+469w9/uLK9L7/svs8+zfnv73iH\n+7e+5X7IIT1/nb/yFfdVq8rDf/lL97e/Pf+YvOevt36nn15uyyOPVD9uzz1rS3/evPr+3wEHhPh/\n+lPyjD37rPtRRyVx/uu/wjLON+LfU0+Vvu9Tp4bnOJsHfP3r7jNmlOcPTz4Z9meP6Q1CVt79PLjt\nagiQlN7da4sfx0vHr9adtGhQUREvvFDbl9TiGsJnPgOnnVa+/y9/gb/+6/xjs42ntRKXUHuCX/0q\n+It/8IMwoV48fiMeJBcv47mc1q9P3D553UfTNYB0w+lnPhPaJtJk3RIAX/pS4mvOY6ed8gddNcLK\nlaG2kdeo2Wz22iv/2d28uXhaimq95XqKeGAfJN1ZDz44vIt5DcwxZvDud1dPf999g2uoVrbfPrhN\nd989aU8755zSKT/i5zJbi487WMyeHdpUPvaxMHAzJq59XHlleP6yxO7aON0VK+qfuqTVtKUgxA93\nrYIweHBoYPrc55Kwn/60vNdEusEpbxK5uHG40jB8KK62Dx9enhaUV2urpVXLGII8Pv3p2uPutVdj\n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\nEAKA/w9CvlWSzhV+ewAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "def moving_average(X, n=3):\n", " ret = []\n", " for row in X:\n", " row = np.cumsum(row)\n", " row[n:] = row[n:] - row[:-n]\n", " row = row[n - 1:] / n\n", " ret.append(row)\n", " ret = np.array(ret)\n", " return ret" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_spectra = moving_average(X_train_spectra, n=5)\n", "X_test_spectra = moving_average(X_test_spectra, n=5)\n", "X_comp_spectra = moving_average(X_comp_spectra, n=5)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(X_train_spectra[0])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nYII=\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "print(X_train_spectra.min(), X_train_spectra.max())\n", "print(X_test_spectra.min(), X_test_spectra.max())\n", "print(X_comp_spectra.min(), X_comp_spectra.max())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.0 5079.24144214\n", "0.0 4924.13100536\n", "0.0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 5131.84586544\n" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_spectra = np.int16(X_train_spectra)\n", "X_test_spectra = np.int16(X_test_spectra)\n", "X_comp_spectra = np.int16(X_comp_spectra)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train_spectra = np.vstack((X_train_spectra, X_test_spectra))\n", "Y_train = np.concatenate((Y_train, Y_test), axis=0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": true, "input": [ "for_google = np.c_[Y_train, X_train_spectra]\n", "np.savetxt(\"X_train_spectra_ave_goog_everything.csv\", for_google, delimiter=\",\", fmt='%i')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "for_google.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "(22400, 1663)" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "print(X_train_spectra.shape)\n", "print(Y_train.shape)\n", "print(X_test_spectra.shape)\n", "print(Y_test.shape)\n", "print(X_comp_spectra.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(22400, 1662)\n", "(22400,)\n", "(6720, 1662)\n", "(6720,)\n", "(9600, 1662)\n" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.ensemble import RandomForestClassifier\n", "model = RandomForestClassifier(n_estimators=100, verbose=True,max_depth=None,min_samples_split=1, random_state=0)\n", "model.fit(X_train_spectra,Y_train)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "[Parallel(n_jobs=1)]: Done 1 jobs | elapsed: 2.7min\n", "[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 2.7min finished\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "RandomForestClassifier(bootstrap=True, compute_importances=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " max_leaf_nodes=None, min_density=None, min_samples_leaf=1,\n", " min_samples_split=1, n_estimators=100, n_jobs=1,\n", " oob_score=False, random_state=0, verbose=True)" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "my_score = model.score(X_test_spectra,Y_test)\n", "print(my_score)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.996279761905\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "[Parallel(n_jobs=1)]: Done 1 jobs | elapsed: 0.5s\n", "[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 0.5s finished\n" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.metrics import accuracy_score, classification_report, confusion_matrix" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "Y_pred = model.predict(X_test_spectra)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "[Parallel(n_jobs=1)]: Done 1 jobs | elapsed: 0.6s\n", "[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 0.6s finished\n" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "accuracy_score(Y_test, Y_pred)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "0.99627976190476186" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "print(classification_report(Y_test, Y_pred))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " precision recall f1-score support\n", "\n", " 0 0.99 1.00 1.00 3381\n", " 1 1.00 0.99 1.00 3339\n", "\n", "avg / total 1.00 1.00 1.00 6720\n", "\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "confusion_matrix(Y_test, Y_pred, labels=[0, 1])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "array([[3381, 0],\n", " [ 25, 3314]])" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "Y_comp = model.predict(X_comp_spectra)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "[Parallel(n_jobs=1)]: Done 1 jobs | elapsed: 0.6s\n", "[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 0.6s finished\n" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "np.savetxt(\"sklearn_spectra_ave_everything.csv\", np.array(Y_comp,dtype=int), delimiter=\",\", fmt='%i')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 } ], "metadata": {} } ] }