Paper | Web | Original data
@article{RUL2025,
author = {Xue, Jingyuan and Zhao, Xiaozhen and Jiang, Dongjing and Jiao, Qingchong and EL Bouchtaoui, Redouane and Zhang, Flynnwell Jianfei},
title = {Survival Analysis with Machine Learning for Predicting Li-ion Battery Remaining Useful Life},
journal = {arXiv: 2503.13558},
year = {2025},
doi = {10.48550/arXiv.2503.13558}
}
NASA dataset: Download
Specifically, we only used the data contained in ./5.+Battery+Data+Set.zip/BatteryAgingARC-FY08Q4.zip as the experimental dataset.
Download original Toyota data:
Dataset 1: Download
Dataset 2: Download
Dataset 3: Download
Dataset 4: Download
Dataset 5: Download
Dataset 6: Download
Dataset 7: Download
Dataset 8: Download
Use battery-survival to generate our preprocessed data from the original data
- [✔] Model information reference: model
- [✔] Processed data would be requested from our website
- [✔] Dataset preprocessing-related content arrangement dependencies: Data preprocessing
- [✔] Li-ion battery data source: Toyota dataset and NASA Battery Dataset
Many thanks to Flynnwell Jianfei Zhang and Qingchong Jiao for their contributions to the code.
Many thanks to battery-survival, Support provided for lithium battery data processing.
Some amazing enhancements will also come out this year.
Some amazing enhancements are under development. We warmly welcome anyone to collaborate to improve this repository. Please send us an email if you are interested!
git clone https://github.com/OKIC-CA/RUL.git --recursive
conda create -n battery-notebook python=3.10.15
conda activate battery-notebook
# Enter the Nasa folder
# For both the NASA and Toyota folder, all installed libraries and their version information are listed in the requirements.txt file. The requirements.txt file under the NASA folder already supports running both NASA and Toyota. If any dependencies are still missing, please refer to the requirements.txt file in the Toyota folder for the required libraries and their versions.
pip install -r requirements.txt
# Enter the NASA folder
pip install jupyter
jupyter notebook
# Read sequentially
deval-discharge.ipynb
deval-valid-data.ipynb
extractfeature.ipynb
model-Cox.ipynb
model-CoxPH.ipynb
model-CoxTime.ipynb
model-DeepHit.ipynb
model-MTLR.ipynb
When using the signature path method for battery representation extraction, the procedure is the same as that used for the NASA dataset. Please refer to the ./NASA/extractfeature.ipynb file. The ./Toyota/Signature/ExtractedData directory contains the data obtained through signature-based deep feature extraction.
For the Toyota dataset, we followed the processing example from battery-survival. Similar to their approach, we used the 50th cycle in the Toyota dataset as the experimental data, consisting of a total of 362 batteries. Among them, 174 batteries experienced uncensored events and 188 experienced censored events. The processed battery data can be found in the ./Toyota/TLSTM/OriginalData directory.
For the TLSTM model architecture, we drew inspiration from the encoder–decoder based TLSTM project. When extracting TLSTM representations of battery voltage and time, you only need to run:
# Enter the Toyota/TLSTM folder
python tlstm_ae_battery_feature_extractor.py
The data extracted by TLSTM was placed in the ./Toyota/TLSTM/ExtractedData folder for remaining useful life (RUL) analysis of the batteries. It is important to note that, in order to align with the experimental data reported in the paper, we modified the batch column in the TLSTM-extracted representations to a group column. Based on the group information, the data can be partitioned for survival analysis and predictive evaluation. Please note that if you directly run the downloaded code, it corresponds to the ungrouped case. The code can be executed as follows:
# Enter the Toyota/TLSTM folder
python Cox.py
python CoxPH.py
python CoxTime.py
python DeepHit.py
python MTLR.py
| Model | Charge | Discharge | ||||
|---|---|---|---|---|---|---|
| T-AUC | C-Index | IBS | T-AUC | C-Index | IBS | |
| Cox | .909 (.027) | .820 (.030) | .031 (.006) | .932 (.018) | .859 (.020) | .048 (.008) |
| CoxTime | .919 (.024) | .832 (.033) | .028 (.006) | .929 (.018) | .853 (.021) | .051 (.009) |
| CoxPH | .889 (.006) | .798 (.015) | .035 (.001) | .896 (.037) | .826 (.020) | .056 (.012) |
| DeepHit | .730 (.076) | .823 (.044) | .085 (.012) | .866 (.059) | .816 (.046) | .076 (.020) |
| MTLR | .809 (.058) | .844 (.024) | .040 (.007) | .922 (.029) | .835 (.025) | .051 (.009) |
| Model | Discharge | ||
|---|---|---|---|
| T-AUC | C-Index | IBS | |
| Cox | .999 (.001) | .965 (.004) | .010 (.002) |
| CoxTime | .998 (.001) | .959 (.002) | .007 (.001) |
| CoxPH | .999 (.000) | .966 (.004) | .014 (.001) |
| DeepHit | .975 (.005) | .930 (.002) | .045 (.005) |
| MTLR | .982 (.009) | .955 (.013) | .048 (.000) |