{"cells":[{"metadata":{"_uuid":"4fa30d4e6fb88c2a39353e23e7f55654fda3447a"},"cell_type":"markdown","source":"![](https://1.bp.blogspot.com/-MQsmXC1vIXE/XEGw7tLb_nI/AAAAAAAACEQ/p4mZ4JiaoFMaact12BUREkn7NPcV0ajJACLcBGAs/s1600/cascades-alpine-tarns-20120819_0135.jpg)"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"_kg_hide-input":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom tqdm import tqdm\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.svm import NuSVR\nfrom sklearn.metrics import mean_absolute_error\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9617403ef249813b53f1e5fd6f0d58134ddf086e"},"cell_type":"code","source":"TrainData = pd.read_csv(\n    filepath_or_buffer = '../input/train.csv', # file path\n    # nrows = 1500000, # number of rows 150,000\n    dtype = {\n        'acoustic_data ' : np.int16,\n        'time_to_failure' : np.float16\n    }\n)\nTrainData.rename({\n    'acoustic_data':'signal',\n    'time_to_failure':'time'\n},\naxis = 'columns',\ninplace = True\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c4550dd83394cbf1de8d6d33c58179f0ead0e1f2","_kg_hide-output":false},"cell_type":"code","source":"fig, ax1 = plt.subplots(figsize=(16, 8))\nsns.lineplot(\n    data = TrainData['signal'].values[0:10000],\n)\nax2 = ax1.twinx()\nsns.lineplot(\n    data = TrainData['time'].values[0:10000],\n    color = 'orange'\n)\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"741b0bf5cf2427ec3c745ac51d68810d5d1327df"},"cell_type":"code","source":"fig, ax1 = plt.subplots(figsize=(16, 8))\nsns.lineplot(\n    data = TrainData['signal'].values[0:150000],\n)\nax2 = ax1.twinx()\nsns.lineplot(\n    data = TrainData['time'].values[0:150000],\n    color = 'orange'\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f6e34d18d2d7f14de314fde9edd54b1d9f070c71"},"cell_type":"code","source":"segment_size = 150_000 # segement size rows\nsegment_count = int(TrainData.shape[0]/segment_size) # shape[0] means row count\n\nSignalData = pd.DataFrame(\n    index = range(segment_count),\n    dtype = np.float16,\n    columns = [\n        'mean', # average\n        'stdev', # standard deviation\n        'max', #maximum value\n        'min' #minimum value\n    ]\n)\n\nTimeData = pd.DataFrame(\n    index = range(segment_count),\n    dtype = np.float16,\n    columns = [\n        'time', # average\n    ]\n)\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4cd8c7b157e231bc9327d0ea5ce9aec513b5fd88"},"cell_type":"code","source":"for segment in tqdm(range(segment_count)):\n    slice_from = segment * segment_size\n    slice_to  = slice_from + segment_size\n    \n    slicing = TrainData.iloc[slice_from : slice_to]\n    \n    Signal = slicing['signal'].values\n    Time = slicing['time'].values[-1]\n    \n    SignalData.loc[segment, 'mean'] = Signal.mean()\n    SignalData.loc[segment, 'stdev'] = Signal.std()\n    SignalData.loc[segment, 'max'] = Signal.max()\n    SignalData.loc[segment, 'min'] = Signal.min()\n    \n    TimeData.loc[segment, 'time'] = Time","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8c60b9c5e6950d6f57b6cbff77f01f8616be424a"},"cell_type":"code","source":"data = pd.DataFrame(SignalData.stdev, SignalData.index)\nsns.lineplot(data=data, palette=\"tab10\", linewidth=2.5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bcdd1b8c57fd7973d9236987767e72d21d1feb0f"},"cell_type":"code","source":"plt.scatter(SignalData.stdev, SignalData.index) \nplt.xlabel('x') \nplt.xlabel('y') \nplt.title(\"Training Data\") \nplt.show() ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ef9fec7d5a6067236098fb6f2e648cab667c94e3"},"cell_type":"code","source":"def build_model():\n  model = keras.Sequential([\n    layers.Dense(64, activation=tf.nn.relu, input_shape=[64]),\n    layers.Dense(64, activation=tf.nn.relu),\n    layers.Dense(1)\n  ])\n\n  optimizer = tf.train.RMSPropOptimizer(0.001)\n\n  model.compile(loss='mse',\n                optimizer=optimizer,\n                metrics=['mae', 'mse'])\n  return model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"scrolled":true,"_uuid":"b58c2417de47e230b7a37880e89570fcafb9a7ba"},"cell_type":"code","source":"model = build_model()\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2827919187e43faeac88d3c80abcad1da4e207b1"},"cell_type":"code","source":"plt.figure(figsize=(6, 6))\nplt.scatter(TimeData.values.flatten(), TimePredict)\nplt.xlim(0, 20)\nplt.ylim(0, 20)\nplt.xlabel('actual', fontsize=12)\nplt.ylabel('predicted', fontsize=12)\nplt.plot([(0, 0), (20, 20)], [(0, 0), (20, 20)])\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a3bb0802e0cfa21f141bb9f83686e590f7752552"},"cell_type":"code","source":"Score = mean_absolute_error(TimeData.values.flatten(), TimePredict)\nprint(f'Score: {Score:0.3f}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ed54617b4fd3edf69f02a485c28ed4359f05a6d6"},"cell_type":"code","source":"Submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9babaa172242ec3601374fdf4d338215d2e33517"},"cell_type":"code","source":"SignalDataTest = pd.DataFrame(columns=SignalData.columns, dtype=np.float64, index=Submission.index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2915c3ab99500169fa5d4949d414740e533e022b"},"cell_type":"code","source":"for seg_id in SignalDataTest.index:\n    seg = pd.read_csv('../input/test/' + seg_id + '.csv')\n    \n    x = seg['acoustic_data'].values\n    \n    SignalDataTest.loc[seg_id, 'ave'] = x.mean()\n    SignalDataTest.loc[seg_id, 'std'] = x.std()\n    SignalDataTest.loc[seg_id, 'max'] = x.max()\n    SignalDataTest.loc[seg_id, 'min'] = x.min()","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}