{"cells":[{"metadata":{"trusted":true,"_uuid":"84a1df5eb05f3b4ddec17332e3cc3cefe56abb51","scrolled":true},"cell_type":"code","source":"!pip install fastai==0.7.0","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"%load_ext autoreload\n%autoreload 2\n%matplotlib inline\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"from fastai.imports import *\nfrom fastai.structured import *\n\nfrom pandas_summary import DataFrameSummary\nfrom sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\nfrom IPython.display import display\n\nfrom sklearn import metrics","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b6ec3a669182a6435d5e5e213606b7d97acbb11f"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"09a9b8a10d7fa8e31ef4ebd3e518db2e7e56ff32"},"cell_type":"code","source":"%%time\ntrain = pd.read_csv(\"../input/train.csv\",\n                     dtype={\"acoustic_data\": np.int16, \"time_to_failure\": np.float64},\n                     nrows=100_000_000)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ba481107265f97032889f6004c0f4276ee70c477"},"cell_type":"code","source":"rows = 10000\nsegments = int(np.floor(train.shape[0] / rows))\n\ndf_train = pd.DataFrame(index=range(segments), dtype=np.float64,\n                       columns=['ave', 'std', 'max', 'min', 'sum', 'range', 'time_to_failure'])\n\nfor segment in tqdm(range(segments)):\n    seg = train.iloc[segment*rows:segment*rows+rows]\n    x = seg['acoustic_data'].values\n    y = seg['time_to_failure'].values[-1]\n    \n    df_train.loc[segment, 'time_to_failure'] = y\n    \n    df_train.loc[segment, 'ave'] = x.mean()\n    df_train.loc[segment, 'std'] = x.std()\n    df_train.loc[segment, 'max'] = x.max()\n    df_train.loc[segment, 'min'] = x.min()\n    df_train.loc[segment, 'sum'] = x.sum()\n    df_train.loc[segment, 'range'] = x.max()-x.min()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4c97bfe4424393d15cee150167d07b4f14f64282"},"cell_type":"code","source":"df_train = df_train.sample(frac=1, axis=1).reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5243f8f7ef1b5c9cf7497175f4e967f8dd04baa0"},"cell_type":"code","source":"df_train.time_to_failure = np.log(df_train.time_to_failure)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5b156e86b5200cfa707455702b3b31b22ed6a907"},"cell_type":"code","source":"df_trn, y_trn, nas = proc_df(df_train, 'time_to_failure')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9688e48f42afcbc277ab1224b3add5cf3947a61b"},"cell_type":"code","source":"def split_vals(a,n): \n    return a[:n].copy(), a[n:].copy()\n    \ntrain_required_ratio = 0.80\nn_trn = int(len(df_trn) * train_required_ratio)\n\nX_train, X_valid = split_vals(df_trn, n_trn) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"85978c9e0d0c11626524353df0cd2f95d16ddb06"},"cell_type":"code","source":"y_train, y_valid = split_vals(y_trn, n_trn)\nX_train.shape, X_valid.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"42493bc98ad5425434eb19434181651bda627828"},"cell_type":"code","source":"def print_score(m):\n    res = [metrics.mean_absolute_error(m.predict(X_train), y_train), metrics.mean_absolute_error(m.predict(X_valid), y_valid),\n                m.score(X_train, y_train), m.score(X_valid, y_valid)]\n    if hasattr(m, 'oob_score_'): res.append(m.oob_score_)\n    print(res)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4ccfd3eb56396cf07a6ae3fe4e01fa4f632ae055"},"cell_type":"code","source":"m = RandomForestRegressor(n_estimators=100, n_jobs=-1)\nm.fit(X_train, y_train)\nprint_score(m)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"eaf71419bf7714692b7c81107dc2675f06d372e0"},"cell_type":"code","source":"preds = np.stack([t.predict(X_valid) for t in m.estimators_])\npreds[:,0], np.mean(preds[:,0]), y_valid[0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4054fa4fd6ff259ea663fde854f2d36cf7eda811"},"cell_type":"code","source":"submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id')\nX_test = pd.DataFrame(columns=X_train.columns, dtype=np.float64, index=submission.index)\nfor seg_id in X_test.index:\n    seg = pd.read_csv('../input/test/' + seg_id + '.csv')\n    \n    x = seg['acoustic_data'].values\n    \n    X_test.loc[seg_id, 'ave'] = x.mean()\n    X_test.loc[seg_id, 'std'] = x.std()\n    X_test.loc[seg_id, 'max'] = x.max()\n    X_test.loc[seg_id, 'min'] = x.min()\n    X_test.loc[seg_id, 'sum'] = x.sum()\n    X_test.loc[seg_id, 'range'] = x.max()-x.min()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6c6d1533cfa93e5177492440d66f009012b0df0a"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e7dac2a8395d6d7f20ac1e2ed63fbf33715de6cc"},"cell_type":"code","source":"preds = np.stack([t.predict(X_test) for t in m.estimators_])\npreds2 = np.mean(preds, axis=0)\npreds2","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"eee66db1a42fd7028f46d4815423324035a86b4b"},"cell_type":"code","source":"X_test2 = X_test\nX_test2['time_to_failure'] = preds2","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"24ba6444624d8f3aeee8a20ccbcdab2ddc42f0d2"},"cell_type":"code","source":"X_test2.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f0999c11be9cd55eb01b45e2ec8ff9d438aaf452"},"cell_type":"code","source":"pred_df = X_test2.drop(columns=['min','range','ave','sum','std','max'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e16588fbb049b1525a3a13f8b9d3fd44aa730714"},"cell_type":"code","source":"pred_df.rename_axis('seg_id')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ecb2cef90484961de2fc374d059859076b7997d9"},"cell_type":"code","source":"pred_df.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f0dae5a89118c084acc8f51046dd8f0ce344dac3"},"cell_type":"code","source":"pred_df.to_csv('datapreds.csv', sep=',', index=True, quotechar=' ')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3c7a8d197c8fb8166f6bfb98549358b0af0c21b6"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}