{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport lightgbm as lgb\nfrom tsfresh import extract_features, extract_relevant_features, select_features\nfrom tsfresh.utilities.dataframe_functions import impute\nimport numpy as np\nimport pandas as pd\nfrom tsfresh.feature_extraction import MinimalFCParameters, EfficientFCParameters ,ComprehensiveFCParameters\nfrom sklearn.model_selection import KFold, cross_validate, cross_val_predict\nimport timeit\nimport seaborn as sns\nimport sys\nimport time\nfrom tqdm import tqdm\nimport warnings\n\nfrom sklearn.ensemble import GradientBoostingRegressor\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.kernel_ridge import KernelRidge\n\nfrom sklearn.preprocessing import MinMaxScaler, StandardScaler,QuantileTransformer\n\nfrom sklearn.model_selection import KFold\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.pipeline import Pipeline\nfrom matplotlib import pyplot\n\n# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \nwarnings.filterwarnings(\"ignore\")\nnp.seterr(divide='ignore', invalid='ignore')\nnp.seterr(divide='ignore')\n# data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))","execution_count":1,"outputs":[{"output_type":"stream","text":"['test', 'train.csv', 'sample_submission.csv']\n","name":"stdout"}]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"_kg_hide-input":true},"cell_type":"code","source":"def progressbar(it, prefix=\"\", size=60, file=sys.stdout):\n    count = len(it)\n    def show(j):\n        x = int(size*j/count)\n        file.write(\"%s[%s%s] %i/%i\\r\" % (prefix, \"#\"*x, \".\"*(size-x), j, count))\n        file.flush()        \n    show(0)\n    for i, item in enumerate(it):\n        yield item\n        show(i+1)\n    file.write(\"\\n\")\n    file.flush()","execution_count":2,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Import the data "},{"metadata":{"trusted":true},"cell_type":"code","source":"%matplotlib inline\nstart = time.time()\ntrain = pd.read_csv('../input/train.csv',dtype={'acoustic_data': np.int16, 'time_to_failure': np.float32})\nend = time.time()\nprint(end - start)","execution_count":3,"outputs":[{"output_type":"stream","text":"0.40488243103027344\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"**This contains the features from the tsfresh library ComprehensiveFCParameters**"},{"metadata":{"trusted":true,"_kg_hide-input":true},"cell_type":"code","source":"settings={'variance_larger_than_standard_deviation': None,\n 'has_duplicate_max': None,\n 'has_duplicate_min': None,\n 'has_duplicate': None,\n 'sum_values': None,\n 'abs_energy': None,\n 'mean_abs_change': None,\n 'mean_change': None,\n 'mean_second_derivative_central': None,\n 'median': None,\n 'mean': None,\n 'length': None,\n 'standard_deviation': None,\n 'variance': None,\n 'skewness': None,\n 'kurtosis': None,\n 'absolute_sum_of_changes': None,\n 'longest_strike_below_mean': None,\n 'longest_strike_above_mean': None,\n 'count_above_mean': None,\n 'count_below_mean': None,\n 'last_location_of_maximum': None,\n 'first_location_of_maximum': None,\n 'last_location_of_minimum': None,\n 'first_location_of_minimum': None,\n 'percentage_of_reoccurring_datapoints_to_all_datapoints': None,\n 'percentage_of_reoccurring_values_to_all_values': None,\n 'sum_of_reoccurring_values': None,\n 'sum_of_reoccurring_data_points': None,\n 'ratio_value_number_to_time_series_length': None,\n 'sample_entropy': None,\n 'maximum': None,\n 'minimum': None,\n 'time_reversal_asymmetry_statistic': [{'lag': 1}, {'lag': 2}, {'lag': 3}],\n 'c3': [{'lag': 1}, {'lag': 2}, {'lag': 3}],\n 'cid_ce': [{'normalize': True}, {'normalize': False}],\n 'symmetry_looking': [{'r': 0.0},\n  {'r': 0.05},\n  {'r': 0.1},\n  {'r': 0.15000000000000002},\n  {'r': 0.2},\n  {'r': 0.25},\n  {'r': 0.30000000000000004},\n  {'r': 0.35000000000000003},\n  {'r': 0.4},\n  {'r': 0.45},\n  {'r': 0.5},\n  {'r': 0.55},\n  {'r': 0.6000000000000001},\n  {'r': 0.65},\n  {'r': 0.7000000000000001},\n  {'r': 0.75},\n  {'r': 0.8},\n  {'r': 0.8500000000000001},\n  {'r': 0.9},\n  {'r': 0.9500000000000001}],\n 'large_standard_deviation': [{'r': 0.05},\n  {'r': 0.1},\n  {'r': 0.15000000000000002},\n  {'r': 0.2},\n  {'r': 0.25},\n  {'r': 0.30000000000000004},\n  {'r': 0.35000000000000003},\n  {'r': 0.4},\n  {'r': 0.45},\n  {'r': 0.5},\n  {'r': 0.55},\n  {'r': 0.6000000000000001},\n  {'r': 0.65},\n  {'r': 0.7000000000000001},\n  {'r': 0.75},\n  {'r': 0.8},\n  {'r': 0.8500000000000001},\n  {'r': 0.9},\n  {'r': 0.9500000000000001}],\n 'quantile': [{'q': 0.1},\n  {'q': 0.2},\n  {'q': 0.3},\n  {'q': 0.4},\n  {'q': 0.6},\n  {'q': 0.7},\n  {'q': 0.8},\n  {'q': 0.9}],\n 'autocorrelation': [{'lag': 0},\n  {'lag': 1},\n  {'lag': 2},\n  {'lag': 3},\n  {'lag': 4},\n  {'lag': 5},\n  {'lag': 6},\n  {'lag': 7},\n  {'lag': 8},\n  {'lag': 9}],\n 'agg_autocorrelation': [{'f_agg': 'mean', 'maxlag': 40},\n  {'f_agg': 'median', 'maxlag': 40},\n  {'f_agg': 'var', 'maxlag': 40}],\n 'partial_autocorrelation': [{'lag': 0},\n  {'lag': 1},\n  {'lag': 2},\n  {'lag': 3},\n  {'lag': 4},\n  {'lag': 5},\n  {'lag': 6},\n  {'lag': 7},\n  {'lag': 8},\n  {'lag': 9}],\n 'number_cwt_peaks': [{'n': 1}, {'n': 5}],\n 'number_peaks': [{'n': 1}, {'n': 3}, {'n': 5}, {'n': 10}, {'n': 50}],\n 'binned_entropy': [{'max_bins': 10}],\n 'index_mass_quantile': [{'q': 0.1},\n  {'q': 0.2},\n  {'q': 0.3},\n  {'q': 0.4},\n  {'q': 0.6},\n  {'q': 0.7},\n  {'q': 0.8},\n  {'q': 0.9}],\n 'cwt_coefficients': [{'widths': (2, 5, 10, 20), 'coeff': 0, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 0, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 0, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 0, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 1, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 1, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 1, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 1, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 2, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 2, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 2, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 2, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 3, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 3, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 3, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 3, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 4, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 4, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 4, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 4, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 5, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 5, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 5, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 5, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 6, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 6, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 6, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 6, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 7, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 7, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 7, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 7, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 8, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 8, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 8, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 8, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 9, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 9, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 9, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 9, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 10, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 10, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 10, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 10, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 11, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 11, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 11, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 11, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 12, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 12, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 12, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 12, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 13, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 13, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 13, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 13, 'w': 20},\n  {'widths': (2, 5, 10, 20), 'coeff': 14, 'w': 2},\n  {'widths': (2, 5, 10, 20), 'coeff': 14, 'w': 5},\n  {'widths': (2, 5, 10, 20), 'coeff': 14, 'w': 10},\n  {'widths': (2, 5, 10, 20), 'coeff': 14, 'w': 20}],\n 'spkt_welch_density': [{'coeff': 2}, {'coeff': 5}, {'coeff': 8}],\n 'ar_coefficient': [{'coeff': 0, 'k': 10},\n  {'coeff': 1, 'k': 10},\n  {'coeff': 2, 'k': 10},\n  {'coeff': 3, 'k': 10},\n  {'coeff': 4, 'k': 10}],\n 'change_quantiles': [{'ql': 0.0, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 1.0, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 1.0, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 1.0, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 1.0, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.2, 'qh': 1.0, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.2, 'qh': 1.0, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 1.0, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.4, 'qh': 1.0, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.4, 'qh': 1.0, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 1.0, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.6, 'qh': 1.0, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.6, 'qh': 1.0, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 1.0, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.8, 'qh': 1.0, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.8, 'qh': 1.0, 'isabs': True, 'f_agg': 'var'}],\n 'fft_coefficient': [{'coeff': 0, 'attr': 'real'},\n  {'coeff': 1, 'attr': 'real'},\n  {'coeff': 2, 'attr': 'real'},\n  {'coeff': 3, 'attr': 'real'},\n  {'coeff': 4, 'attr': 'real'},\n  {'coeff': 5, 'attr': 'real'},\n  {'coeff': 6, 'attr': 'real'},\n  {'coeff': 7, 'attr': 'real'},\n  {'coeff': 8, 'attr': 'real'},\n  {'coeff': 9, 'attr': 'real'},\n  {'coeff': 10, 'attr': 'real'},\n  {'coeff': 11, 'attr': 'real'},\n  {'coeff': 12, 'attr': 'real'},\n  {'coeff': 13, 'attr': 'real'},\n  {'coeff': 14, 'attr': 'real'},\n  {'coeff': 15, 'attr': 'real'},\n  {'coeff': 16, 'attr': 'real'},\n  {'coeff': 17, 'attr': 'real'},\n  {'coeff': 18, 'attr': 'real'},\n  {'coeff': 19, 'attr': 'real'},\n  {'coeff': 20, 'attr': 'real'},\n  {'coeff': 21, 'attr': 'real'},\n  {'coeff': 22, 'attr': 'real'},\n  {'coeff': 23, 'attr': 'real'},\n  {'coeff': 24, 'attr': 'real'},\n  {'coeff': 25, 'attr': 'real'},\n  {'coeff': 26, 'attr': 'real'},\n  {'coeff': 27, 'attr': 'real'},\n  {'coeff': 28, 'attr': 'real'},\n  {'coeff': 29, 'attr': 'real'},\n  {'coeff': 30, 'attr': 'real'},\n  {'coeff': 31, 'attr': 'real'},\n  {'coeff': 32, 'attr': 'real'},\n  {'coeff': 33, 'attr': 'real'},\n  {'coeff': 34, 'attr': 'real'},\n  {'coeff': 35, 'attr': 'real'},\n  {'coeff': 36, 'attr': 'real'},\n  {'coeff': 37, 'attr': 'real'},\n  {'coeff': 38, 'attr': 'real'},\n  {'coeff': 39, 'attr': 'real'},\n  {'coeff': 40, 'attr': 'real'},\n  {'coeff': 41, 'attr': 'real'},\n  {'coeff': 42, 'attr': 'real'},\n  {'coeff': 43, 'attr': 'real'},\n  {'coeff': 44, 'attr': 'real'},\n  {'coeff': 45, 'attr': 'real'},\n  {'coeff': 46, 'attr': 'real'},\n  {'coeff': 47, 'attr': 'real'},\n  {'coeff': 48, 'attr': 'real'},\n  {'coeff': 49, 'attr': 'real'},\n  {'coeff': 50, 'attr': 'real'},\n  {'coeff': 51, 'attr': 'real'},\n  {'coeff': 52, 'attr': 'real'},\n  {'coeff': 53, 'attr': 'real'},\n  {'coeff': 54, 'attr': 'real'},\n  {'coeff': 55, 'attr': 'real'},\n  {'coeff': 56, 'attr': 'real'},\n  {'coeff': 57, 'attr': 'real'},\n  {'coeff': 58, 'attr': 'real'},\n  {'coeff': 59, 'attr': 'real'},\n  {'coeff': 60, 'attr': 'real'},\n  {'coeff': 61, 'attr': 'real'},\n  {'coeff': 62, 'attr': 'real'},\n  {'coeff': 63, 'attr': 'real'},\n  {'coeff': 64, 'attr': 'real'},\n  {'coeff': 65, 'attr': 'real'},\n  {'coeff': 66, 'attr': 'real'},\n  {'coeff': 67, 'attr': 'real'},\n  {'coeff': 68, 'attr': 'real'},\n  {'coeff': 69, 'attr': 'real'},\n  {'coeff': 70, 'attr': 'real'},\n  {'coeff': 71, 'attr': 'real'},\n  {'coeff': 72, 'attr': 'real'},\n  {'coeff': 73, 'attr': 'real'},\n  {'coeff': 74, 'attr': 'real'},\n  {'coeff': 75, 'attr': 'real'},\n  {'coeff': 76, 'attr': 'real'},\n  {'coeff': 77, 'attr': 'real'},\n  {'coeff': 78, 'attr': 'real'},\n  {'coeff': 79, 'attr': 'real'},\n  {'coeff': 80, 'attr': 'real'},\n  {'coeff': 81, 'attr': 'real'},\n  {'coeff': 82, 'attr': 'real'},\n  {'coeff': 83, 'attr': 'real'},\n  {'coeff': 84, 'attr': 'real'},\n  {'coeff': 85, 'attr': 'real'},\n  {'coeff': 86, 'attr': 'real'},\n  {'coeff': 87, 'attr': 'real'},\n  {'coeff': 88, 'attr': 'real'},\n  {'coeff': 89, 'attr': 'real'},\n  {'coeff': 90, 'attr': 'real'},\n  {'coeff': 91, 'attr': 'real'},\n  {'coeff': 92, 'attr': 'real'},\n  {'coeff': 93, 'attr': 'real'},\n  {'coeff': 94, 'attr': 'real'},\n  {'coeff': 95, 'attr': 'real'},\n  {'coeff': 96, 'attr': 'real'},\n  {'coeff': 97, 'attr': 'real'},\n  {'coeff': 98, 'attr': 'real'},\n  {'coeff': 99, 'attr': 'real'},\n  {'coeff': 0, 'attr': 'imag'},\n  {'coeff': 1, 'attr': 'imag'},\n  {'coeff': 2, 'attr': 'imag'},\n  {'coeff': 3, 'attr': 'imag'},\n  {'coeff': 4, 'attr': 'imag'},\n  {'coeff': 5, 'attr': 'imag'},\n  {'coeff': 6, 'attr': 'imag'},\n  {'coeff': 7, 'attr': 'imag'},\n  {'coeff': 8, 'attr': 'imag'},\n  {'coeff': 9, 'attr': 'imag'},\n  {'coeff': 10, 'attr': 'imag'},\n  {'coeff': 11, 'attr': 'imag'},\n  {'coeff': 12, 'attr': 'imag'},\n  {'coeff': 13, 'attr': 'imag'},\n  {'coeff': 14, 'attr': 'imag'},\n  {'coeff': 15, 'attr': 'imag'},\n  {'coeff': 16, 'attr': 'imag'},\n  {'coeff': 17, 'attr': 'imag'},\n  {'coeff': 18, 'attr': 'imag'},\n  {'coeff': 19, 'attr': 'imag'},\n  {'coeff': 20, 'attr': 'imag'},\n  {'coeff': 21, 'attr': 'imag'},\n  {'coeff': 22, 'attr': 'imag'},\n  {'coeff': 23, 'attr': 'imag'},\n  {'coeff': 24, 'attr': 'imag'},\n  {'coeff': 25, 'attr': 'imag'},\n  {'coeff': 26, 'attr': 'imag'},\n  {'coeff': 27, 'attr': 'imag'},\n  {'coeff': 28, 'attr': 'imag'},\n  {'coeff': 29, 'attr': 'imag'},\n  {'coeff': 30, 'attr': 'imag'},\n  {'coeff': 31, 'attr': 'imag'},\n  {'coeff': 32, 'attr': 'imag'},\n  {'coeff': 33, 'attr': 'imag'},\n  {'coeff': 34, 'attr': 'imag'},\n  {'coeff': 35, 'attr': 'imag'},\n  {'coeff': 36, 'attr': 'imag'},\n  {'coeff': 37, 'attr': 'imag'},\n  {'coeff': 38, 'attr': 'imag'},\n  {'coeff': 39, 'attr': 'imag'},\n  {'coeff': 40, 'attr': 'imag'},\n  {'coeff': 41, 'attr': 'imag'},\n  {'coeff': 42, 'attr': 'imag'},\n  {'coeff': 43, 'attr': 'imag'},\n  {'coeff': 44, 'attr': 'imag'},\n  {'coeff': 45, 'attr': 'imag'},\n  {'coeff': 46, 'attr': 'imag'},\n  {'coeff': 47, 'attr': 'imag'},\n  {'coeff': 48, 'attr': 'imag'},\n  {'coeff': 49, 'attr': 'imag'},\n  {'coeff': 50, 'attr': 'imag'},\n  {'coeff': 51, 'attr': 'imag'},\n  {'coeff': 52, 'attr': 'imag'},\n  {'coeff': 53, 'attr': 'imag'},\n  {'coeff': 54, 'attr': 'imag'},\n  {'coeff': 55, 'attr': 'imag'},\n  {'coeff': 56, 'attr': 'imag'},\n  {'coeff': 57, 'attr': 'imag'},\n  {'coeff': 58, 'attr': 'imag'},\n  {'coeff': 59, 'attr': 'imag'},\n  {'coeff': 60, 'attr': 'imag'},\n  {'coeff': 61, 'attr': 'imag'},\n  {'coeff': 62, 'attr': 'imag'},\n  {'coeff': 63, 'attr': 'imag'},\n  {'coeff': 64, 'attr': 'imag'},\n  {'coeff': 65, 'attr': 'imag'},\n  {'coeff': 66, 'attr': 'imag'},\n  {'coeff': 67, 'attr': 'imag'},\n  {'coeff': 68, 'attr': 'imag'},\n  {'coeff': 69, 'attr': 'imag'},\n  {'coeff': 70, 'attr': 'imag'},\n  {'coeff': 71, 'attr': 'imag'},\n  {'coeff': 72, 'attr': 'imag'},\n  {'coeff': 73, 'attr': 'imag'},\n  {'coeff': 74, 'attr': 'imag'},\n  {'coeff': 75, 'attr': 'imag'},\n  {'coeff': 76, 'attr': 'imag'},\n  {'coeff': 77, 'attr': 'imag'},\n  {'coeff': 78, 'attr': 'imag'},\n  {'coeff': 79, 'attr': 'imag'},\n  {'coeff': 80, 'attr': 'imag'},\n  {'coeff': 81, 'attr': 'imag'},\n  {'coeff': 82, 'attr': 'imag'},\n  {'coeff': 83, 'attr': 'imag'},\n  {'coeff': 84, 'attr': 'imag'},\n  {'coeff': 85, 'attr': 'imag'},\n  {'coeff': 86, 'attr': 'imag'},\n  {'coeff': 87, 'attr': 'imag'},\n  {'coeff': 88, 'attr': 'imag'},\n  {'coeff': 89, 'attr': 'imag'},\n  {'coeff': 90, 'attr': 'imag'},\n  {'coeff': 91, 'attr': 'imag'},\n  {'coeff': 92, 'attr': 'imag'},\n  {'coeff': 93, 'attr': 'imag'},\n  {'coeff': 94, 'attr': 'imag'},\n  {'coeff': 95, 'attr': 'imag'},\n  {'coeff': 96, 'attr': 'imag'},\n  {'coeff': 97, 'attr': 'imag'},\n  {'coeff': 98, 'attr': 'imag'},\n  {'coeff': 99, 'attr': 'imag'},\n  {'coeff': 0, 'attr': 'abs'},\n  {'coeff': 1, 'attr': 'abs'},\n  {'coeff': 2, 'attr': 'abs'},\n  {'coeff': 3, 'attr': 'abs'},\n  {'coeff': 4, 'attr': 'abs'},\n  {'coeff': 5, 'attr': 'abs'},\n  {'coeff': 6, 'attr': 'abs'},\n  {'coeff': 7, 'attr': 'abs'},\n  {'coeff': 8, 'attr': 'abs'},\n  {'coeff': 9, 'attr': 'abs'},\n  {'coeff': 10, 'attr': 'abs'},\n  {'coeff': 11, 'attr': 'abs'},\n  {'coeff': 12, 'attr': 'abs'},\n  {'coeff': 13, 'attr': 'abs'},\n  {'coeff': 14, 'attr': 'abs'},\n  {'coeff': 15, 'attr': 'abs'},\n  {'coeff': 16, 'attr': 'abs'},\n  {'coeff': 17, 'attr': 'abs'},\n  {'coeff': 18, 'attr': 'abs'},\n  {'coeff': 19, 'attr': 'abs'},\n  {'coeff': 20, 'attr': 'abs'},\n  {'coeff': 21, 'attr': 'abs'},\n  {'coeff': 22, 'attr': 'abs'},\n  {'coeff': 23, 'attr': 'abs'},\n  {'coeff': 24, 'attr': 'abs'},\n  {'coeff': 25, 'attr': 'abs'},\n  {'coeff': 26, 'attr': 'abs'},\n  {'coeff': 27, 'attr': 'abs'},\n  {'coeff': 28, 'attr': 'abs'},\n  {'coeff': 29, 'attr': 'abs'},\n  {'coeff': 30, 'attr': 'abs'},\n  {'coeff': 31, 'attr': 'abs'},\n  {'coeff': 32, 'attr': 'abs'},\n  {'coeff': 33, 'attr': 'abs'},\n  {'coeff': 34, 'attr': 'abs'},\n  {'coeff': 35, 'attr': 'abs'},\n  {'coeff': 36, 'attr': 'abs'},\n  {'coeff': 37, 'attr': 'abs'},\n  {'coeff': 38, 'attr': 'abs'},\n  {'coeff': 39, 'attr': 'abs'},\n  {'coeff': 40, 'attr': 'abs'},\n  {'coeff': 41, 'attr': 'abs'},\n  {'coeff': 42, 'attr': 'abs'},\n  {'coeff': 43, 'attr': 'abs'},\n  {'coeff': 44, 'attr': 'abs'},\n  {'coeff': 45, 'attr': 'abs'},\n  {'coeff': 46, 'attr': 'abs'},\n  {'coeff': 47, 'attr': 'abs'},\n  {'coeff': 48, 'attr': 'abs'},\n  {'coeff': 49, 'attr': 'abs'},\n  {'coeff': 50, 'attr': 'abs'},\n  {'coeff': 51, 'attr': 'abs'},\n  {'coeff': 52, 'attr': 'abs'},\n  {'coeff': 53, 'attr': 'abs'},\n  {'coeff': 54, 'attr': 'abs'},\n  {'coeff': 55, 'attr': 'abs'},\n  {'coeff': 56, 'attr': 'abs'},\n  {'coeff': 57, 'attr': 'abs'},\n  {'coeff': 58, 'attr': 'abs'},\n  {'coeff': 59, 'attr': 'abs'},\n  {'coeff': 60, 'attr': 'abs'},\n  {'coeff': 61, 'attr': 'abs'},\n  {'coeff': 62, 'attr': 'abs'},\n  {'coeff': 63, 'attr': 'abs'},\n  {'coeff': 64, 'attr': 'abs'},\n  {'coeff': 65, 'attr': 'abs'},\n  {'coeff': 66, 'attr': 'abs'},\n  {'coeff': 67, 'attr': 'abs'},\n  {'coeff': 68, 'attr': 'abs'},\n  {'coeff': 69, 'attr': 'abs'},\n  {'coeff': 70, 'attr': 'abs'},\n  {'coeff': 71, 'attr': 'abs'},\n  {'coeff': 72, 'attr': 'abs'},\n  {'coeff': 73, 'attr': 'abs'},\n  {'coeff': 74, 'attr': 'abs'},\n  {'coeff': 75, 'attr': 'abs'},\n  {'coeff': 76, 'attr': 'abs'},\n  {'coeff': 77, 'attr': 'abs'},\n  {'coeff': 78, 'attr': 'abs'},\n  {'coeff': 79, 'attr': 'abs'},\n  {'coeff': 80, 'attr': 'abs'},\n  {'coeff': 81, 'attr': 'abs'},\n  {'coeff': 82, 'attr': 'abs'},\n  {'coeff': 83, 'attr': 'abs'},\n  {'coeff': 84, 'attr': 'abs'},\n  {'coeff': 85, 'attr': 'abs'},\n  {'coeff': 86, 'attr': 'abs'},\n  {'coeff': 87, 'attr': 'abs'},\n  {'coeff': 88, 'attr': 'abs'},\n  {'coeff': 89, 'attr': 'abs'},\n  {'coeff': 90, 'attr': 'abs'},\n  {'coeff': 91, 'attr': 'abs'},\n  {'coeff': 92, 'attr': 'abs'},\n  {'coeff': 93, 'attr': 'abs'},\n  {'coeff': 94, 'attr': 'abs'},\n  {'coeff': 95, 'attr': 'abs'},\n  {'coeff': 96, 'attr': 'abs'},\n  {'coeff': 97, 'attr': 'abs'},\n  {'coeff': 98, 'attr': 'abs'},\n  {'coeff': 99, 'attr': 'abs'},\n  {'coeff': 0, 'attr': 'angle'},\n  {'coeff': 1, 'attr': 'angle'},\n  {'coeff': 2, 'attr': 'angle'},\n  {'coeff': 3, 'attr': 'angle'},\n  {'coeff': 4, 'attr': 'angle'},\n  {'coeff': 5, 'attr': 'angle'},\n  {'coeff': 6, 'attr': 'angle'},\n  {'coeff': 7, 'attr': 'angle'},\n  {'coeff': 8, 'attr': 'angle'},\n  {'coeff': 9, 'attr': 'angle'},\n  {'coeff': 10, 'attr': 'angle'},\n  {'coeff': 11, 'attr': 'angle'},\n  {'coeff': 12, 'attr': 'angle'},\n  {'coeff': 13, 'attr': 'angle'},\n  {'coeff': 14, 'attr': 'angle'},\n  {'coeff': 15, 'attr': 'angle'},\n  {'coeff': 16, 'attr': 'angle'},\n  {'coeff': 17, 'attr': 'angle'},\n  {'coeff': 18, 'attr': 'angle'},\n  {'coeff': 19, 'attr': 'angle'},\n  {'coeff': 20, 'attr': 'angle'},\n  {'coeff': 21, 'attr': 'angle'},\n  {'coeff': 22, 'attr': 'angle'},\n  {'coeff': 23, 'attr': 'angle'},\n  {'coeff': 24, 'attr': 'angle'},\n  {'coeff': 25, 'attr': 'angle'},\n  {'coeff': 26, 'attr': 'angle'},\n  {'coeff': 27, 'attr': 'angle'},\n  {'coeff': 28, 'attr': 'angle'},\n  {'coeff': 29, 'attr': 'angle'},\n  {'coeff': 30, 'attr': 'angle'},\n  {'coeff': 31, 'attr': 'angle'},\n  {'coeff': 32, 'attr': 'angle'},\n  {'coeff': 33, 'attr': 'angle'},\n  {'coeff': 34, 'attr': 'angle'},\n  {'coeff': 35, 'attr': 'angle'},\n  {'coeff': 36, 'attr': 'angle'},\n  {'coeff': 37, 'attr': 'angle'},\n  {'coeff': 38, 'attr': 'angle'},\n  {'coeff': 39, 'attr': 'angle'},\n  {'coeff': 40, 'attr': 'angle'},\n  {'coeff': 41, 'attr': 'angle'},\n  {'coeff': 42, 'attr': 'angle'},\n  {'coeff': 43, 'attr': 'angle'},\n  {'coeff': 44, 'attr': 'angle'},\n  {'coeff': 45, 'attr': 'angle'},\n  {'coeff': 46, 'attr': 'angle'},\n  {'coeff': 47, 'attr': 'angle'},\n  {'coeff': 48, 'attr': 'angle'},\n  {'coeff': 49, 'attr': 'angle'},\n  {'coeff': 50, 'attr': 'angle'},\n  {'coeff': 51, 'attr': 'angle'},\n  {'coeff': 52, 'attr': 'angle'},\n  {'coeff': 53, 'attr': 'angle'},\n  {'coeff': 54, 'attr': 'angle'},\n  {'coeff': 55, 'attr': 'angle'},\n  {'coeff': 56, 'attr': 'angle'},\n  {'coeff': 57, 'attr': 'angle'},\n  {'coeff': 58, 'attr': 'angle'},\n  {'coeff': 59, 'attr': 'angle'},\n  {'coeff': 60, 'attr': 'angle'},\n  {'coeff': 61, 'attr': 'angle'},\n  {'coeff': 62, 'attr': 'angle'},\n  {'coeff': 63, 'attr': 'angle'},\n  {'coeff': 64, 'attr': 'angle'},\n  {'coeff': 65, 'attr': 'angle'},\n  {'coeff': 66, 'attr': 'angle'},\n  {'coeff': 67, 'attr': 'angle'},\n  {'coeff': 68, 'attr': 'angle'},\n  {'coeff': 69, 'attr': 'angle'},\n  {'coeff': 70, 'attr': 'angle'},\n  {'coeff': 71, 'attr': 'angle'},\n  {'coeff': 72, 'attr': 'angle'},\n  {'coeff': 73, 'attr': 'angle'},\n  {'coeff': 74, 'attr': 'angle'},\n  {'coeff': 75, 'attr': 'angle'},\n  {'coeff': 76, 'attr': 'angle'},\n  {'coeff': 77, 'attr': 'angle'},\n  {'coeff': 78, 'attr': 'angle'},\n  {'coeff': 79, 'attr': 'angle'},\n  {'coeff': 80, 'attr': 'angle'},\n  {'coeff': 81, 'attr': 'angle'},\n  {'coeff': 82, 'attr': 'angle'},\n  {'coeff': 83, 'attr': 'angle'},\n  {'coeff': 84, 'attr': 'angle'},\n  {'coeff': 85, 'attr': 'angle'},\n  {'coeff': 86, 'attr': 'angle'},\n  {'coeff': 87, 'attr': 'angle'},\n  {'coeff': 88, 'attr': 'angle'},\n  {'coeff': 89, 'attr': 'angle'},\n  {'coeff': 90, 'attr': 'angle'},\n  {'coeff': 91, 'attr': 'angle'},\n  {'coeff': 92, 'attr': 'angle'},\n  {'coeff': 93, 'attr': 'angle'},\n  {'coeff': 94, 'attr': 'angle'},\n  {'coeff': 95, 'attr': 'angle'},\n  {'coeff': 96, 'attr': 'angle'},\n  {'coeff': 97, 'attr': 'angle'},\n  {'coeff': 98, 'attr': 'angle'},\n  {'coeff': 99, 'attr': 'angle'}],\n 'fft_aggregated': [{'aggtype': 'centroid'},\n  {'aggtype': 'variance'},\n  {'aggtype': 'skew'},\n  {'aggtype': 'kurtosis'}],\n 'value_count': [{'value': 0}, {'value': 1}, {'value': -1}],\n 'range_count': [{'min': -1, 'max': 1},\n  {'min': 1000000000000.0, 'max': 0},\n  {'min': 0, 'max': 1000000000000.0}],\n 'approximate_entropy': [{'m': 2, 'r': 0.1},\n  {'m': 2, 'r': 0.3},\n  {'m': 2, 'r': 0.5},\n  {'m': 2, 'r': 0.7},\n  {'m': 2, 'r': 0.9}],\n 'friedrich_coefficients': [{'coeff': 0, 'm': 3, 'r': 30},\n  {'coeff': 1, 'm': 3, 'r': 30},\n  {'coeff': 2, 'm': 3, 'r': 30},\n  {'coeff': 3, 'm': 3, 'r': 30}],\n 'max_langevin_fixed_point': [{'m': 3, 'r': 30}],\n 'linear_trend': [{'attr': 'pvalue'},\n  {'attr': 'rvalue'},\n  {'attr': 'intercept'},\n  {'attr': 'slope'},\n  {'attr': 'stderr'}],\n 'agg_linear_trend': [{'attr': 'rvalue', 'chunk_len': 5, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 5, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 5, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 5, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 10, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 10, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 10, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 10, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 50, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 50, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 50, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 50, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 5, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 5, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 5, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 5, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 10, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 10, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 10, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 10, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 50, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 50, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 50, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 50, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 5, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 5, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 5, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 5, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 10, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 10, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 10, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 10, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 50, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 50, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 50, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 50, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 5, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 5, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 5, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 5, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 10, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 10, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 10, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 10, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 50, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 50, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 50, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 50, 'f_agg': 'var'}],\n 'augmented_dickey_fuller': [{'attr': 'teststat'},\n  {'attr': 'pvalue'},\n  {'attr': 'usedlag'}],\n 'number_crossing_m': [{'m': 0}, {'m': -1}, {'m': 1}],\n 'energy_ratio_by_chunks': [{'num_segments': 10, 'segment_focus': 0},\n  {'num_segments': 10, 'segment_focus': 1},\n  {'num_segments': 10, 'segment_focus': 2},\n  {'num_segments': 10, 'segment_focus': 3},\n  {'num_segments': 10, 'segment_focus': 4},\n  {'num_segments': 10, 'segment_focus': 5},\n  {'num_segments': 10, 'segment_focus': 6},\n  {'num_segments': 10, 'segment_focus': 7},\n  {'num_segments': 10, 'segment_focus': 8},\n  {'num_segments': 10, 'segment_focus': 9}],\n 'ratio_beyond_r_sigma': [{'r': 0.5},\n  {'r': 1},\n  {'r': 1.5},\n  {'r': 2},\n  {'r': 2.5},\n  {'r': 3},\n  {'r': 5},\n  {'r': 6},\n  {'r': 7},\n  {'r': 10}]}","execution_count":4,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Choose some features from the list above.\n(Remove features which take an unreasonable amount of time to calculate)**"},{"metadata":{"_kg_hide-input":true,"trusted":true},"cell_type":"code","source":"settings={\n'standard_deviation': None,\n 'variance': None,\n 'skewness': None,\n 'kurtosis': None,\n 'absolute_sum_of_changes': None,\n\n'last_location_of_maximum': None,\n 'first_location_of_maximum': None,\n 'last_location_of_minimum': None,\n'first_location_of_minimum': None,\n'count_above_mean': None,\n 'count_below_mean': None,\n 'maximum': None,\n 'minimum': None,\n\n    \n 'c3': [{'lag': 100}, {'lag': 2000}, {'lag': 3000},{'lag': 10000}],\n\n'number_peaks': [{'n': 1}, {'n': 5},{'n': 100},{'n': 1000}],\n'fft_coefficient': \n [{'coeff': 0, 'attr': 'real'},\n  {'coeff': 1, 'attr': 'real'},\n  {'coeff': 2, 'attr': 'real'},\n  {'coeff': 3, 'attr': 'real'},\n  {'coeff': 4, 'attr': 'real'},\n\n  {'coeff': 0, 'attr': 'imag'},\n  {'coeff': 1, 'attr': 'imag'},\n  {'coeff': 2, 'attr': 'imag'},\n  {'coeff': 3, 'attr': 'imag'},\n  {'coeff': 4, 'attr': 'imag'},\n  {'coeff': 5, 'attr': 'imag'},\n\n  {'coeff': 0, 'attr': 'abs'},\n  {'coeff': 1, 'attr': 'abs'},\n  {'coeff': 2, 'attr': 'abs'},\n  {'coeff': 3, 'attr': 'abs'},\n  {'coeff': 4, 'attr': 'abs'},\n  {'coeff': 5, 'attr': 'abs'},\n\n  {'coeff': 0, 'attr': 'angle'},\n  {'coeff': 1, 'attr': 'angle'},\n  {'coeff': 2, 'attr': 'angle'},\n  {'coeff': 3, 'attr': 'angle'},\n  {'coeff': 4, 'attr': 'angle'},\n  {'coeff': 5, 'attr': 'angle'},\n],\n 'agg_linear_trend': [\n     {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'var'}],\n 'index_mass_quantile': [{'q': 0.1},\n  {'q': 0.2},\n  {'q': 0.3},\n  {'q': 0.4},\n  {'q': 0.6},\n  {'q': 0.7},\n  {'q': 0.8},\n  {'q': 0.9}],\n\n 'spkt_welch_density': [{'coeff': 2}, {'coeff': 5}, {'coeff': 8}],\n 'ar_coefficient': [{'coeff': 0, 'k': 10},\n  {'coeff': 1, 'k': 10},\n  {'coeff': 2, 'k': 10},\n  {'coeff': 3, 'k': 10},\n  {'coeff': 4, 'k': 10}],\n\n 'energy_ratio_by_chunks': [{'num_segments': 10, 'segment_focus': 0},\n  {'num_segments': 10, 'segment_focus': 1},\n  {'num_segments': 10, 'segment_focus': 2},\n  {'num_segments': 10, 'segment_focus': 3},\n  {'num_segments': 10, 'segment_focus': 4},\n  {'num_segments': 10, 'segment_focus': 5},\n  {'num_segments': 10, 'segment_focus': 6},\n  {'num_segments': 10, 'segment_focus': 7},\n  {'num_segments': 10, 'segment_focus': 8},\n  {'num_segments': 10, 'segment_focus': 9}],\n 'ratio_beyond_r_sigma': [{'r': 0.5},\n  {'r': 1},\n  {'r': 1.5},\n  {'r': 2},\n  {'r': 2.5},\n  {'r': 3},\n  {'r': 5},\n  {'r': 6},\n  {'r': 7},\n  {'r': 10}],\n'max_langevin_fixed_point': [{'m': 3, 'r': 30}],\n    'change_quantiles': [{'ql': 0.0, 'qh': 0.2, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.2, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.4, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.6, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': False, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': False, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': True, 'f_agg': 'mean'},\n  {'ql': 0.0, 'qh': 0.8, 'isabs': True, 'f_agg': 'var'},\n  {'ql': 0.0, 'qh': 1.0, 'isabs': False, 'f_agg': 'mean'}]\n\n}","execution_count":5,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ntrain_t=train[:150000]\ntrain_t=pd.concat([pd.DataFrame({'id': np.ones(train_t.shape[0])}, dtype=np.int16),\n                   pd.DataFrame({'time': range(train_t.shape[0])}, dtype=np.int32),\n                   train_t.iloc[:,0]],axis=1)\n\nprint(train_t.shape)\nprint(train_t.head())","execution_count":6,"outputs":[{"output_type":"stream","text":"(150000, 3)\n   id  time  acoustic_data\n0   1     0             12\n1   1     1              6\n2   1     2              8\n3   1     3              5\n4   1     4              8\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"**Calculate relative time spent for every feature**"},{"metadata":{"trusted":true},"cell_type":"code","source":"res  = pd.DataFrame()\nn_ts = 20\nl_ts = 1000\nn_ti = 3\n\ndef tsfresh_time(sett):\n    for f, param in tqdm(sett.items()):\n        res.loc[f, \"feature\"] = f\n        res.loc[f, \"n_samp\"] = n_ts\n        res.loc[f, \"length\"] = l_ts\n\n        fc_dict = {f:param}\n\n        t = timeit.timeit(lambda : extract_features(train_t, \n                         column_id='id',\n                         column_sort='time',\n                         column_value=\"acoustic_data\",\n                         n_jobs=1, \n                         default_fc_parameters=fc_dict, \n                         disable_progressbar=True), \n                          number=n_ti)\n        n_fs = 1\n        res.loc[f, \"n_fs\"] = n_fs\n        res.loc[f, \"t_abs\"] = t * 1.0/n_fs\n        res.loc[f, \"t_1ts\"] = t*1.0/(n_ts*n_fs)\n    return res\n","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"res=pd.DataFrame()\nres=tsfresh_time(settings)\nres[\"feature\"] = res.feature.astype(str)\nres = res.sort_values(by=\"feature\")\n\nplt.figure(figsize=(6, 20))\nsns.barplot(y=\"feature\", x=\"t_abs\", data=res)\nplt.title(\"Runtime of 1 apply features for 1 time series of length 15000\")\nplt.show()","execution_count":8,"outputs":[{"output_type":"stream","text":"100%|██████████| 24/24 [00:38<00:00,  6.35s/it]\n","name":"stderr"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x1440 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"**Define features which are going to be used for the final feature extraction.**"},{"metadata":{"_kg_hide-input":true,"trusted":true},"cell_type":"code","source":"settings={\n'standard_deviation': None,\n 'variance': None,\n 'skewness': None,\n 'kurtosis': None,\n\n 'count_above_mean': None,\n 'count_below_mean': None,\n'last_location_of_maximum': None,\n 'first_location_of_maximum': None,\n 'last_location_of_minimum': None,\n'first_location_of_minimum': None,\n\n 'maximum': None,\n 'minimum': None,\n\n 'c3': [{'lag': 100}, {'lag': 2000}, {'lag': 3000},{'lag': 10000}],\n\n'number_peaks': [{'n': 1}, \n                  {'n': 3}, \n                  {'n': 5},{'n': 100},{'n': 5000}],\n'fft_coefficient': \n [{'coeff': 0, 'attr': 'real'},\n  {'coeff': 1, 'attr': 'real'},\n  {'coeff': 2, 'attr': 'real'},\n  {'coeff': 3, 'attr': 'real'},\n  {'coeff': 4, 'attr': 'real'},\n\n  {'coeff': 0, 'attr': 'imag'},\n  {'coeff': 1, 'attr': 'imag'},\n  {'coeff': 2, 'attr': 'imag'},\n  {'coeff': 3, 'attr': 'imag'},\n  {'coeff': 4, 'attr': 'imag'},\n  {'coeff': 5, 'attr': 'imag'},\n\n  {'coeff': 0, 'attr': 'abs'},\n  {'coeff': 1, 'attr': 'abs'},\n  {'coeff': 2, 'attr': 'abs'},\n  {'coeff': 3, 'attr': 'abs'},\n  {'coeff': 4, 'attr': 'abs'},\n  {'coeff': 5, 'attr': 'abs'},\n\n  {'coeff': 0, 'attr': 'angle'},\n  {'coeff': 1, 'attr': 'angle'},\n  {'coeff': 2, 'attr': 'angle'},\n  {'coeff': 3, 'attr': 'angle'},\n  {'coeff': 4, 'attr': 'angle'},\n  {'coeff': 5, 'attr': 'angle'},\n],\n 'agg_linear_trend': [\n     {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'rvalue', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'intercept', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'slope', 'chunk_len': 5000, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 500, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 1000, 'f_agg': 'var'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'max'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'min'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'mean'},\n  {'attr': 'stderr', 'chunk_len': 5000, 'f_agg': 'var'}],\n 'index_mass_quantile': [{'q': 0.1},\n  {'q': 0.2},\n  {'q': 0.3},\n  {'q': 0.4},\n  {'q': 0.6},\n  {'q': 0.7},\n  {'q': 0.8},\n  {'q': 0.9}],\n\n 'spkt_welch_density': [{'coeff': 2}, {'coeff': 5}, {'coeff': 8}],\n 'ar_coefficient': [{'coeff': 0, 'k': 10},\n  {'coeff': 1, 'k': 10},\n  {'coeff': 2, 'k': 10},\n  {'coeff': 3, 'k': 10},\n  {'coeff': 4, 'k': 10}],\n\n 'energy_ratio_by_chunks': [{'num_segments': 10, 'segment_focus': 0},\n  {'num_segments': 10, 'segment_focus': 1},\n  {'num_segments': 10, 'segment_focus': 2},\n  {'num_segments': 10, 'segment_focus': 3},\n  {'num_segments': 10, 'segment_focus': 4},\n  {'num_segments': 10, 'segment_focus': 5},\n  {'num_segments': 10, 'segment_focus': 6},\n  {'num_segments': 10, 'segment_focus': 7},\n  {'num_segments': 10, 'segment_focus': 8},\n  {'num_segments': 10, 'segment_focus': 9}],\n 'ratio_beyond_r_sigma': [{'r': 0.5},\n  {'r': 1},\n  {'r': 1.5},\n  {'r': 2},\n  {'r': 2.5},\n  {'r': 3},\n  {'r': 5},\n  {'r': 6},\n  {'r': 7},\n  {'r': 10}],\n'max_langevin_fixed_point': [{'m': 3, 'r': 30}],\n\n}\npeak={\n'number_peaks': [{'n': 1}, \n                  {'n': 3}, \n                  {'n': 5}, \n                  {'n': 10}]}\n","execution_count":11,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"res=pd.DataFrame()\nres=tsfresh_time(settings)\nres[\"feature\"] = res.feature.astype(str)\nres = res.sort_values(by=\"feature\")\n\nplt.figure(figsize=(6, 20))\nsns.barplot(y=\"feature\", x=\"t_abs\", data=res)\nplt.title(\"Runtime of 1 apply features for 1 time series of length 15000\")\nplt.show()","execution_count":13,"outputs":[{"output_type":"stream","text":"100%|██████████| 22/22 [00:19<00:00,  1.11it/s]\n","name":"stderr"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x1440 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"**Feature Extraction for segments of length 150,000. Also each segment is divided into 4 sections of 37500 in length where the ts_features(train1,settings)function is used.**"},{"metadata":{"trusted":true},"cell_type":"code","source":"start = time.time()\n\n# Create a training file with simple derived features\nn = 150000\nparts=37500\nsegments = ((len(train) + n - 1)//n)-1\nids = pd.DataFrame({'id': np.ones(n)}, dtype=np.int16)\ntimes = pd.DataFrame({'time': range(n)}, dtype=np.int32)\nX_filtered = pd.DataFrame()\ny_tr = pd.DataFrame(index=range(segments), dtype=np.float64, \n                    columns=['time_to_failure'])\n\n\ndef ts_features(train1,settings):\n    X=extract_features(train1, \n                     column_id='id',\n                     column_sort='time',\n                     column_value=\"acoustic_data\",\n                     default_fc_parameters=settings,\n                     #impute_function= impute,\n                     disable_progressbar=True,\n                     show_warnings=True)\n    return X\n\nfor i in progressbar(range(segments), \"Computing: \", 40):  \n    X1 = pd.DataFrame()\n    train1=pd.concat([ids,times,train[i * n:(i + 1) *n].reset_index(drop=True)],axis=1)\n    seg = train[i*n:(i + 1)*n]\n    y = seg['time_to_failure'].values[-1]\n    y_tr.loc[i, 'time_to_failure'] = y\n    \n    #Features in whole segment\n    X2=ts_features(train1,peak)\n    #Features per section 4x37500\n    for j in range(4):\n        \n        X=ts_features(train1[j * parts:(j + 1) *parts],settings).add_prefix('q_' +str(j))\n        X1=pd.concat([X1,X], axis=1)\n   \n    #print(X1.shape)\n    X_filtered=X_filtered.append(pd.concat([X1,X2], axis=1))\n    \n\nX_filtered=X_filtered.reset_index().drop(['id'], axis=1)\nprint(X_filtered.shape)\nprint(y_tr.shape)\ndel train\n\nend = time.time()\nprint(\"Time\",end - start)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Feature Extraction for submission**"},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id')\nstart = time.time()\nX_testfresh = pd.DataFrame()\n# Load each test data, create the feature matrix, get numeric prediction\nfor i in progressbar(range(len(submission)), \"Computing: \", 40):\n  #  print(i)\n    X1 = pd.DataFrame()\n    ids = pd.DataFrame({'id': [submission.index[i] for number in range(n)]}, dtype=np.int16)\n    seg = pd.read_csv('../input/test/' + submission.index[i] + '.csv' )\n    x = seg['acoustic_data']\n    test=pd.concat([ids,times,x],axis=1)\n    \n    #Features in whole segment\n    X2=ts_features(test,peak)\n    #Features per section 5x30000\n    for j in range(4):\n        X=ts_features(test[j * parts:(j + 1) *parts],settings).add_prefix('q_' +str(j))\n        X1=pd.concat([X1,X], axis=1)\n    #print(X1.shape)\n    X_testfresh=X_testfresh.append(pd.concat([X1,X2], axis=1))\nend = time.time()\nprint(\"Time\",end - start)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Filtering Data to remove repeating values as well as N/A values.**"},{"metadata":{"trusted":true},"cell_type":"code","source":"dfb=X_filtered.reset_index(drop=True).append(X_testfresh)\ndfb.to_csv('unfiltered.csv',index=False)\nprint(dfb.shape)\ndfb=dfb.dropna(axis='columns')\ndfb=dfb.loc[:, (dfb != dfb.iloc[0]).any()] \nprint(dfb.shape)\ndfb.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df=pd.concat([y_tr,dfb[:X_filtered.shape[0]]], axis=1)\ndf.to_csv('tsfreshFeaturestrain.csv',index=False)\ntest=dfb[-X_testfresh.shape[0]:]\ntest.to_csv('tsfreshFeaturestest.csv',index=False)\n\nX=df[df.columns.difference(['time_to_failure'])]\ny=df['time_to_failure']\n\n#Scaling train and test features at the same time\nscaler=MinMaxScaler(feature_range=(0, 1))\nscaled=scaler.fit_transform(X.append(test))\n\ntrain=pd.DataFrame(scaled[:X.shape[0]], columns=X.columns.values)\ntest=pd.DataFrame(scaled[-test.shape[0]:], columns=X.columns.values)\ntrainX, testX, trainy, testy = train_test_split(train, y, test_size=0.0,shuffle=True)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Regression with GBM and LightGBM**"},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\nmodel = GradientBoostingRegressor(learning_rate=0.009, loss='huber',max_depth=5,max_features=150,n_estimators=650)\nnum_folds = 5\ncross_validate_results = cross_validate(model, trainX, trainy, n_jobs=-1, return_estimator= True, return_train_score=True, cv=num_folds,  scoring=\"neg_mean_absolute_error\" )\n\nfor i in range(num_folds):\n    print(\"Fold: {} Training MAE: {}\".format(i,-cross_validate_results['train_score'][i]))\n    print(\"Fold: {} Validation MAE: {}\".format(i,-cross_validate_results['test_score'][i]))\nprint(-cross_validate_results['train_score'].mean(), cross_validate_results['train_score'].std())\nprint(-cross_validate_results['test_score'].mean(), cross_validate_results['test_score'].std())\n\nmodel.fit(trainX, trainy)\ndata=pd.concat([pd.DataFrame(X.columns.values,columns={'Features'}),\n           pd.DataFrame(model.feature_importances_,columns={'Importance'})*100],\n               axis=1).sort_values(by='Importance', ascending=False)\n\ndata.to_csv('FeaturesImportance.csv',index=False)\n\nplt.figure(figsize=(6, 20))\nsns.barplot(y=\"Features\", x=\"Importance\", data=data[:150])\nplt.title(\"Features\")\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import mean_absolute_error\nmae = np.array([])\npredictions1 = np.zeros(len(test))\nfeature_importance_df = pd.DataFrame()\n#run model\n\nn_fold = 5\nfolds = KFold(n_splits=n_fold, shuffle=True, random_state=42)\ntrain_columns = trainX.columns.values\n\nfor fold_, (trn_idx, val_idx) in enumerate(folds.split(trainX,trainy.values)):\n    strLog = \"fold {}\".format(fold_)\n    \n    X_tr, X_val = trainX.iloc[trn_idx], trainX.iloc[val_idx]\n    y_tr, y_val = trainy.iloc[trn_idx], trainy.iloc[val_idx]\n\n    \n    model.fit(X_tr, y_tr)\n    \n    mae = np.append(mae, mean_absolute_error(y_val, model.predict(X_val)))\n    print(\"Fold: {} Validation MAE: {}\".format(strLog,mae[fold_]))\n  \n    #predictions\n    predictions1 += model.predict(test) / folds.n_splits\nnp.mean(mae)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.time_to_failure = predictions1\nsubmission.to_csv('submissiongbm.csv',index=True)\nsubmission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\nparams={'bagging_fraction': 0.72,\n'boosting': 'gbdt',\n'feature_fraction' : 0.55,\n'lambda_l1': 4.2030167201177235,\n'lambda_l2': 2.8818379730100174,\n'learning_rate': 0.04197920600013021,\n'max_bin': 182,\n'max_depth': 13,\n'metric': 'RMSE',\n'min_data_in_bin': 106,\n'min_data_in_leaf': 83,\n'num_leaves': 1415,\n'objective': 'fair',\n'subsample': 0.5807414994404817}\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\npredictions2 = np.zeros(len(test))\nfeature_importance_df = pd.DataFrame()\n#run model\n\nn_fold = 5\nfolds = KFold(n_splits=n_fold, shuffle=True, random_state=42)\ntrain_columns = trainX.columns.values\n\nfor fold_, (trn_idx, val_idx) in enumerate(folds.split(trainX,trainy.values)):\n    strLog = \"fold {}\".format(fold_)\n    \n    X_tr, X_val = trainX.iloc[trn_idx], trainX.iloc[val_idx]\n    y_tr, y_val = trainy.iloc[trn_idx], trainy.iloc[val_idx]\n\n    print(strLog)\n    \n    model = lgb.LGBMRegressor(**params, n_estimators = 20000, n_jobs = -1)\n    model.fit(X_tr, \n              y_tr, \n              eval_set=[(X_tr, y_tr), (X_val, y_val)], \n              eval_metric='mae',\n              verbose=1000, \n              early_stopping_rounds=1000)\n    mae = np.append(mae, mean_absolute_error(y_val, model.predict(X_val)))\n    print(\"Fold: {} Validation MAE: {}\".format(strLog,mae[fold_]))\n    #predictions\n    predictions2 += model.predict(test, num_iteration=model.best_iteration_) / folds.n_splits\nnp.mean(mae)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.time_to_failure = predictions2\nsubmission.to_csv('submissionlgbm.csv',index=True)\nsubmission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"blending = predictions1*0.5 + predictions2*0.5 \nsubmission['time_to_failure']=blending\nsubmission.to_csv('submissionblend.csv',index=True)\nsubmission.head()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}