{"id":3345,"date":"2021-03-07T20:18:03","date_gmt":"2021-03-07T20:18:03","guid":{"rendered":"https:\/\/cloudxlab.com\/blog\/?p=3345"},"modified":"2021-04-19T06:37:07","modified_gmt":"2021-04-19T06:37:07","slug":"predicting-remaining-useful-life-of-a-machine","status":"publish","type":"post","link":"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/","title":{"rendered":"Predicting Remaining Useful Life of a Machine"},"content":{"rendered":"\n<p><strong>1.1 INTRODUCTION<\/strong><\/p>\n\n\n\n<p>The remaining useful life (RUL) is the length of time a machine is likely to operate before it requires repair or replacement. By taking RUL into account, engineers can schedule maintenance, optimize operating efficiency, and avoid unplanned downtime. For this reason, estimating RUL is a top priority in predictive maintenance programs.<\/p>\n\n\n\n<p><img src=\"https:\/\/lh6.googleusercontent.com\/Yh2lI0ELrK4QC_pKVjsbZpsZfNVLkWD0Vm6z6xEXxgybzd_hMNccogxNUINaEV2fb1z83F1lJ8j7UVN78DXTEX_0mvMce58Qe8vmY8N7uwCMbOvyzqK6jqYjKmA2OWcLfcKEU04\" width=\"516\" height=\"329\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Three are modeling solutions used for predicting the RUL which are mentioned below:<\/p>\n\n\n\n<ol><li><strong>Regression<\/strong>: Predict the Remaining Useful Life (RUL), or Time to Failure (TTF).<\/li><li>Binary classification: Predict if an asset will fail within a certain time frame (e.g., Hours).<\/li><li><strong>Multi-class classification<\/strong>: Predict if an asset will fail in different time windows: E.g., fails in window [1, w0] days; fails in the window [w0+1, w1] days; not fail within w1 days.<\/li><\/ol>\n\n\n\n<p>In this blog, I have covered binary classification and multi-class classification in the below sections.&nbsp;<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>1.2 DATASET&nbsp;<\/strong><\/p>\n\n\n\n<p>The dataset is taken from the actual turbine used in the ship, it consists of many features like sensor values, working hours, machine id, the actual life of the machine received from manufactures.<\/p>\n\n\n\n<p><strong>1.3 GENERAL<\/strong><\/p>\n\n\n\n<p>I am sharing my algorithm here. Even though this algorithm may not be of much use to you but it would give an idea of how to implement your own models for finding the remaining useful life of the machine.<\/p>\n\n\n\n<p>Some of my learning are:<\/p>\n\n\n\n<ol><li>No firm provides the data of fault condition.<\/li><li>Figuring out how to customize LSTM is hard because the main documentation is messy.<\/li><li>Theory and Practical are two different things. The more hands-on you are, the higher are your chances of trying out an idea and thus iterating faster.<\/li><\/ol>\n\n\n\n<p>I applied Long Short-Term Memory (LSTM) because LSTM is used for time series problems. Since the dataset we have is time-dependent thus LSTM is the better model which can be used for prediction and it is a recurrent neural network that promises me to learn the long sequences of instances. It seems a perfect match for time series forecasting. In this project, you will see how to implement the LSTM forecast model for a one-step univariate time series forecasting problem.&nbsp;<\/p>\n\n\n\n<p>In this blog we will go through the procedure to find the remaining useful life of the machine, it might help you to understand the process or procedure to complete your project.<\/p>\n\n\n\n<p><strong>2 PROCEDURE FOR PREDICTION<\/strong><\/p>\n\n\n\n<p>The procedure for finding the remaining useful life are given below:<\/p>\n\n\n\n<p>Step 1: Import the dataset.<\/p>\n\n\n\n<p>Step 2: Visualisation of dataset<\/p>\n\n\n\n<p>Step 3: Co-relation between the features<\/p>\n\n\n\n<p>Step 4: Labelling of training data by setting window length<\/p>\n\n\n\n<p>Step 5: Normalization of data&nbsp;<\/p>\n\n\n\n<p>Step 6: Labelling of test data based on the RUL<\/p>\n\n\n\n<p>Step 7: Sequencing of data<\/p>\n\n\n\n<p>Step 8: Preparation of model<\/p>\n\n\n\n<p>Step 9: Fitting of model<\/p>\n\n\n\n<p>Step 10: Validation of Model<\/p>\n\n\n\n<p>Step 11: Prediction on test data<\/p>\n\n\n\n<p>Step 12: Masking of test data<\/p>\n\n\n\n<p>Step 13: Prediction on test data<\/p>\n\n\n\n<p><strong>2.1 Importing the dataset<\/strong><\/p>\n\n\n\n<p>The dataset taken for training and testing is taken from the data logger which is placed near to the machine on which prediction is to be made.<\/p>\n\n\n\n<p>The sensors are installed on various assemblies and sub-assemblies of the turbine, the recorded sensor value is stored on a datalogger. The desired values are getting stored in a CSV file based on conditions and coding.<\/p>\n\n\n\n<p>The dataset is imported by using the command as given below:<\/p>\n\n\n\n<p><img width=\"516\" height=\"42\" src=\"https:\/\/lh5.googleusercontent.com\/xFyWSV8a1n3FT_h27NxrtSWNstUMYT7UnYkyfHSP1vzRtNmVPAjAnZfs2qkPP7SOErH4GkWcXOnCbGoT_Sf6fUOubXR07uQSGTVtSRuZcB8_rMcjgrjO_zWS9nnNo8mhi3D42XM\"><\/p>\n\n\n\n<p>By the above code, data gets imported and the top 5 rows appear on the screen as shown below:<\/p>\n\n\n\n<p><img width=\"602\" height=\"135\" src=\"https:\/\/lh3.googleusercontent.com\/4_oQyatEhAvrk7TO0egstt1A4PZWgqNfDjsPsjwf9SB0Ds1PJ_n0ckphXACWjFrc0uv4Z0DChgd1zRYws9zQGTLIq0enJJPknZNs1XmC6vIZtJhYRXyKirxPgA-1ysoG7wVtqVA\"><\/p>\n\n\n\n<p>The number of rows that get displays on the screen can be changed by placing the desired value in the parathesis e.g. head(10).<\/p>\n\n\n\n<p><strong>2.2 Visualization of data<\/strong><\/p>\n\n\n\n<p>In this blog, I have visualized the data to see the variation of sensor values at a different instance. There are two ways in which variation may occur that are mentioned below:&nbsp;<\/p>\n\n\n\n<p>1 If the rate of change in the sensor value is the same with respect to time then we see a linear line. In this case, the maintainer can find time to failure by taking multiplying factor hence don\u2019t require any sort of predictions. But this case doesn\u2019t happen in machines.<\/p>\n\n\n\n<p>2. If the rate of change in the sensor values is different with respect to time then we get a non-linear line. In this case, predictive maintenance is applied which is explained in this blog.<\/p>\n\n\n\n<p><strong><img width=\"646\" height=\"568.0380220413208\" src=\"https:\/\/lh5.googleusercontent.com\/--TdUTXFiopIJlUOCy_ia0GYGhKPAaeU3VDBbLzbrnq0uwZa3wKf66_prOq9X36jiCwOIScxLgW73D_dE4R2DjP569aEJiC5yOcn4zL9V3X9C2hEEdS8YkulnKqwjz1w01GlQLs\"><\/strong><\/p>\n\n\n\n<p><strong>2.3 Co-relation between the features<\/strong><\/p>\n\n\n\n<p>In this blog, I co-related the values received from sensors for identifying which all sensors are showing critical changes.\u00a0<\/p>\n\n\n\n<p><img width=\"602\" height=\"224\" src=\"https:\/\/lh4.googleusercontent.com\/iBLejybeTOzr2PPoUOEoEZzKeZWs9sSIIRWVvChBX_-FU8Y1w-JWZp4Z3Svvvymk81yCd_a2uGqPU6Fr1RgA63-Vyh6GOSFHxsaqxfHNzdcIH_wQX2XNVMdr5JI15Jup4yWXCbg\"><\/p>\n\n\n\n<p><strong>2.4 Labelling of training data by setting window length<\/strong><\/p>\n\n\n\n<p>In this blog, we have labelled the RUL data since I am doing the classification of machine condition based on the values of RUL.<\/p>\n\n\n\n<p><img width=\"503\" height=\"104\" src=\"https:\/\/lh3.googleusercontent.com\/5xQ7HiJO1zZTXBfd2ENisp9Cnj7Jf6sxw0BBjuJJKojXCxw0dX9NGGoRBpjBb6olNc8D0G19vmE8LJdOt_vQng1Uud-IpWTYqSXLeuo90n0bH0nKcpTsyk7syLb6fMlQ4alWfro\"><\/p>\n\n\n\n<p>In the above image I have calculated the RUL of the machine then used that RUL for identifying the stage of the machine by defining the window length, I have set w1 as 450 and w0 as 300 based on normal condition, warning condition and critical condition values.<\/p>\n\n\n\n<p><img width=\"420\" height=\"104\" src=\"https:\/\/lh5.googleusercontent.com\/ktow1QWFaeWIVEeYNYAIm92PihOS78bEy4a5yahXD8guvyQAyUxpiLhPNMNiTTW0tG9SLvp6XrIRUaXIrQ37nQssVPdZhtn-EdiNsjEMOpJL8_KVndI6VI3KVkE53LgNen8c_7E\"><\/p>\n\n\n\n<p>If RUL&gt;w1 then the label will have value 1, if w1&gt;RUL&gt;300 then the label will be 2 and if RUL&lt;w0 then the label will be 0.<\/p>\n\n\n\n<p><strong>2.5 Normalization of data<\/strong><\/p>\n\n\n\n<p>In this blog, after labelling of training dataset I have normalized the data using MinMaxScalar. This is generally done we eliminate the change of losing the outliers and making all the values of sensors in a range of 0 to 1.\u00a0<\/p>\n\n\n\n<p><img width=\"596\" height=\"156\" src=\"https:\/\/lh4.googleusercontent.com\/Zpdl44jtndaErMXwDZQU-u_DAythdT8X7XiYzXIVD70ZyTup8EcKzlF1_GQXTuCQCjTh7PI-j2wXQX1rEpsQOM_52oGlZs8b23Mvzbw57Te23Mf9j5j_VLQobeKvRwAWojGwD-Y\"><\/p>\n\n\n\n<p><strong>2.6 Labelling of testing data by setting window length<\/strong><\/p>\n\n\n\n<p>The same steps are to be followed as that of the training dataset only the difference will be of the dataset i.e. test dataset which is used for predictions.<\/p>\n\n\n\n<p><strong>2.7: Sequencing of data<\/strong><\/p>\n\n\n\n<p>In this blog, I have applied predictions on time series forecasting thus sensor value will be read one by one, thus the dataset to be set in the proper sequence as it received one more use of sequencing is adding only those values which meet the window length considering no padding. I have taken a new matrix and then stored the value of test data into it.<\/p>\n\n\n\n<p><img width=\"638\" height=\"213\" src=\"https:\/\/lh4.googleusercontent.com\/oseyiAHgFSLaqgsFpBYqajaxCZJ7YrCJ-KT8RjG1xMQC3Z_kgKtCPUa0SBoh6PdoD_pOX9OQYfk5knvjirZQTIAbiQ8WXOlGrReae7yjeCF-7E4Um74EnR7-03cuYD5-ufnQxdE\"><\/p>\n\n\n\n<p><strong>2.8 Preparation of model<\/strong><\/p>\n\n\n\n<p>In this blog, I have taken 2 LSTM layers, 2 dropouts of 0.2 for eliminating overfitting, activation function as sigmoid as here we want where the machine is in running condition or is in faulty condition, optimizer as adam with binary crossentropy as the loss function.\u00a0<\/p>\n\n\n\n<p><img width=\"541\" height=\"231\" src=\"https:\/\/lh6.googleusercontent.com\/8PLNdQEjIE0dtZRW0UR8Lnw4cMNBKFvZSKfmPgJRti6fBrf_eP8F51v3LyiflD22bP9FCmi6l0RUeGOZx31EiZ-8i6HBwDweBvwH4c7Jl7PibZlngplxitSCCdnpKX8fpj5D4UY\"><\/p>\n\n\n\n<p><strong>2.9 Fitting of model<\/strong><\/p>\n\n\n\n<p>In this log, I have run the prepared model for 10 epochs with a batch size of 200 for better accuracy and validated the model by taking 5% of the dataset set for validation. I have also used callback for early stopping. Generally, we use callbacks for stopping the model training if validation loss increasing.\u00a0<\/p>\n\n\n\n<p><strong><img width=\"625\" height=\"219\" src=\"https:\/\/lh3.googleusercontent.com\/t-wf_V8f5e3SOOp-5KD2JR8HmyIN27hUWrmQcql9aqlAc8lg4K6FBj92sdg3CA6P7CW41qS3rQklm5kmjGbqQdInaw0h7yAnXfAB89u11Qq-169ltHZXg9kdSqkLQhBoCeFfsig\"><\/strong><\/p>\n\n\n\n<p><strong>2.10 Validation of Model<\/strong><\/p>\n\n\n\n<p>In this blog, I have evaluated the model by calculating the score on a batch size of 200.\u00a0<\/p>\n\n\n\n<p><img width=\"602\" height=\"84\" src=\"https:\/\/lh3.googleusercontent.com\/-YyUWpqA11hNyiNQPCTDRyGgPzmxtRvDIxj0afpJ59PM0ggBG6VT96VCq6K9EbXPcyA4sJ7rXMEu5XgAmjWpVFS3CyLROerv8JxeqI1eGA6kESE-KzJ2mLzaVqLjimAx8wmvx-8\"><\/p>\n\n\n\n<p>I got an accuracy of 98% which was sufficient for the model that can be used for prediction. It is observed that if we increase the batch size then accuracy increases but computation time also increases.<\/p>\n\n\n\n<p><strong>2.11 Prediction on test data<\/strong><\/p>\n\n\n\n<p>In this blog, I have taken the dataset of another day for testing the result. I have calculated the score, computed the confusion matrix. Using the confusion matrix I have calculated the precision, recall, F1- Score, accuracy which is shown below.<\/p>\n\n\n\n<p><img width=\"410\" height=\"30\" src=\"https:\/\/lh4.googleusercontent.com\/OA-mfYSJNLpp-pSNGbpfTTxCPP3OFv0Bf3i8QhGRcWXs4wyHnmEM0R8uHfFwvO8JjEPCtWarSZWRk0nZgYo50IPlAmIsOJE9fqo8psgB5g1J1kDX-rnYtY_rhncp4OvsKzpQjds\"><\/p>\n\n\n\n<p><img width=\"625\" height=\"113\" src=\"https:\/\/lh5.googleusercontent.com\/DZ-vqiZUgvbdaFEjL2ibfUSA7MbITdQ-tlMSfA_xqEnxgkWg30s3YtmfjS42LQnOuc80Bd6YNRN5uLmuNUrsl_D-1ky6onuetSMNd3qFzdrTlBL1j5UvpSNzaJQ6AKnd6jSRp8s\"><\/p>\n\n\n\n<p>Referring above image, I figured out that there is some abrupt behaviour in predictions. There may be various reasons for the same. In my project, the dataset I used was of the running machine. I analysed the dataset and came to a conclusion that many values recorded in the datalogger were taken during the off condition of the machine where all the sensor values were at their default position giving no running status.&nbsp;<\/p>\n\n\n\n<p>Thus, to resolve this problem I used masking technique which is described in the next section of this blog.<\/p>\n\n\n\n<p><strong>2.12 Masking of test data<\/strong><\/p>\n\n\n\n<p>In this blog, I have explained the masking technique in which I have masked the values of sensors which was recorded during the off condition of the machine. The limit for masking is taken as less than sequence length which fulfils our masking task.<\/p>\n\n\n\n<p><img width=\"631\" height=\"74\" src=\"https:\/\/lh4.googleusercontent.com\/WKSqrqHV611E6yq4BMyxJYfWqWGbYA6pracxUmBh9ggM3Z_hmrO9Tfdt6yMr3sdb__-Chw_kwo8q9OhIh10HG2OLF43IeE-41S2ag6aHuWLYPaAlyFl9XFdRzEVj4B6eMOorAEU\"><\/p>\n\n\n\n<p><img width=\"602\" height=\"23\" src=\"https:\/\/lh4.googleusercontent.com\/RzRYmlx4ltBhY5sg-yHne0bJ2VrWexgEP7Rz6pj5ui_Ctlh_4qLQrYenFVcjrRhpU5IRa6O7Ie2u5rSX4bvY_qIHtcpEDz30uv7prnmzMzo-V7M46AAqflWWUtzZMfqKzO5gxSU\"><\/p>\n\n\n\n<p><img width=\"602\" height=\"45\" src=\"https:\/\/lh4.googleusercontent.com\/5ZepiVTd2T1tFU7OI7HmRvp9NLlTqKrOEBOD8JtH2Gdul256M4eqccGRMP9Mvcd61x37EjiPzFHvUoO-hzbnxnHwaThd2PwHbSbe3jDiFSZUcup7rzHqp19rNfxFH8dEFWS3XSw\"><\/p>\n\n\n\n<p><strong>2.13 Prediction of test data<\/strong><\/p>\n\n\n\n<p>After masking the test dataset, I have again run the model, computed the confusion matrix. Using the confusion matrix I have calculated the precision, recall, F1- Score, accuracy.<\/p>\n\n\n\n<p>The comparison between LSTM model without masking and with masking of the test dataset is shown below.<\/p>\n\n\n\n<p><img width=\"590\" height=\"214\" src=\"https:\/\/lh4.googleusercontent.com\/4NAlc-1YG5vFVITvwBXT4DPupR9esKd_l0mal8dPdVXceTKfKL0vZpEkcKtnEaP0Z4XpmfhUvV99MGx82AvJztFG6REJox7Xi7qf-yDXAiyx333okLNWWjCeBwwz7cRCbX1v4EY\"><\/p>\n\n\n\n<p><strong>3 FURTHER SCOPE<\/strong><\/p>\n\n\n\n<p>Finding of point 1 of section 1.1, using SAE algorithm and another related algorithm. Running the model by taking the dataset of various machine.<\/p>\n\n\n\n<p><strong>4 REFERENCES<\/strong><\/p>\n\n\n\n<ol><li><a href=\"https:\/\/github.com\/PacktPublishing\/Hands-On-Artificial-Intelligence-for-IoT\/blob\/master\/Chapter10\/Electrical_Load_Forecasting.ipynb\">https:\/\/github.com\/PacktPublishing\/Hands-On-Artificial-Intelligence-for-IoT\/blob\/master\/Chapter10\/Electrical_Load_Forecasting.ipynb<\/a><\/li><\/ol>\n\n\n\n<ol start=\"2\"><li><a href=\"https:\/\/gallery.azure.ai\/Experiment\/Predictive-Maintenance-Step-2A-of-3-train-and-evaluate-regression-models-2\">https:\/\/gallery.azure.ai\/Experiment\/Predictive-Maintenance-Step-2A-of-3-train-and-evaluate-regression-models-2<\/a><\/li><\/ol>\n\n\n\n<ol start=\"3\"><li><a href=\"http:\/\/cic.tju.edu.cn\/faculty\/liuruonan\/publications\/Simultaneous_Bearing_Fault_Recognition_and_Remaining_Useful_Life_Prediction_Using_Joint_Loss_Convolutional_Neural_Network.pdf\">http:\/\/cic.tju.edu.cn\/faculty\/liuruonan\/publications\/Simultaneous_Bearing_Fault_Recognition_and_Remaining_Useful_Life_Prediction_Using_Joint_Loss_Convolutional_Neural_Network.pdf<\/a><\/li><\/ol>\n\n\n\n<ol start=\"4\"><li><a href=\"http:\/\/diposit.ub.edu\/dspace\/bitstream\/2445\/134691\/3\/memoria.pdf\">http:\/\/diposit.ub.edu\/dspace\/bitstream\/2445\/134691\/3\/memoria.pdf<\/a><\/li><\/ol>\n\n\n\n<ol start=\"5\"><li><a href=\"https:\/\/www.mathworks.com\/content\/dam\/mathworks\/ebook\/estimating-remaining-useful-life-ebook.pdf\">https:\/\/www.mathworks.com\/content\/dam\/mathworks\/ebook\/estimating-remaining-useful-life-ebook.pdf<\/a><\/li><\/ol>\n\n\n\n<ol start=\"6\"><li><a href=\"https:\/\/www.mathworks.com\/help\/predmaint\/ug\/models-for-predicting-remaining-useful-life.html\">https:\/\/www.mathworks.com\/help\/predmaint\/ug\/models-for-predicting-remaining-useful-life.html<\/a><\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>1.1 INTRODUCTION The remaining useful life (RUL) is the length of time a machine is likely to operate before it requires repair or replacement. By taking RUL into account, engineers can schedule maintenance, optimize operating efficiency, and avoid unplanned downtime. For this reason, estimating RUL is a top priority in predictive maintenance programs. Three are &hellip; <a href=\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Predicting Remaining Useful Life of a Machine&#8221;<\/span><\/a><\/p>\n","protected":false},"author":31,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[67,29,28],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Predicting Remaining Useful Life of a Machine | CloudxLab Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Predicting Remaining Useful Life of a Machine | CloudxLab Blog\" \/>\n<meta property=\"og:description\" content=\"1.1 INTRODUCTION The remaining useful life (RUL) is the length of time a machine is likely to operate before it requires repair or replacement. By taking RUL into account, engineers can schedule maintenance, optimize operating efficiency, and avoid unplanned downtime. For this reason, estimating RUL is a top priority in predictive maintenance programs. Three are &hellip; Continue reading &quot;Predicting Remaining Useful Life of a Machine&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudxLab Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cloudxlab\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-07T20:18:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-19T06:37:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh6.googleusercontent.com\/Yh2lI0ELrK4QC_pKVjsbZpsZfNVLkWD0Vm6z6xEXxgybzd_hMNccogxNUINaEV2fb1z83F1lJ8j7UVN78DXTEX_0mvMce58Qe8vmY8N7uwCMbOvyzqK6jqYjKmA2OWcLfcKEU04\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CloudxLab\" \/>\n<meta name=\"twitter:site\" content=\"@CloudxLab\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"7 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#website\",\"url\":\"https:\/\/cloudxlab.com\/blog\/\",\"name\":\"CloudxLab Blog\",\"description\":\"Learn AI, Machine Learning, Deep Learning, Devops &amp; Big Data\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/cloudxlab.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/lh6.googleusercontent.com\/Yh2lI0ELrK4QC_pKVjsbZpsZfNVLkWD0Vm6z6xEXxgybzd_hMNccogxNUINaEV2fb1z83F1lJ8j7UVN78DXTEX_0mvMce58Qe8vmY8N7uwCMbOvyzqK6jqYjKmA2OWcLfcKEU04\",\"contentUrl\":\"https:\/\/lh6.googleusercontent.com\/Yh2lI0ELrK4QC_pKVjsbZpsZfNVLkWD0Vm6z6xEXxgybzd_hMNccogxNUINaEV2fb1z83F1lJ8j7UVN78DXTEX_0mvMce58Qe8vmY8N7uwCMbOvyzqK6jqYjKmA2OWcLfcKEU04\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#webpage\",\"url\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/\",\"name\":\"Predicting Remaining Useful Life of a Machine | CloudxLab Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#primaryimage\"},\"datePublished\":\"2021-03-07T20:18:03+00:00\",\"dateModified\":\"2021-04-19T06:37:07+00:00\",\"author\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/#\/schema\/person\/aae35ee7acd33be31c8adca3f1ac2217\"},\"breadcrumb\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/\",\"url\":\"https:\/\/cloudxlab.com\/blog\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/predicting-remaining-useful-life-of-a-machine\/#webpage\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#\/schema\/person\/aae35ee7acd33be31c8adca3f1ac2217\",\"name\":\"Avinash Saraswat\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0527688d03d9902d27edd40845cd8f56?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0527688d03d9902d27edd40845cd8f56?s=96&d=mm&r=g\",\"caption\":\"Avinash Saraswat\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/3345"}],"collection":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/comments?post=3345"}],"version-history":[{"count":19,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/3345\/revisions"}],"predecessor-version":[{"id":3416,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/3345\/revisions\/3416"}],"wp:attachment":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/media?parent=3345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/categories?post=3345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/tags?post=3345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}