Battery Testing.ipynb - Colab

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

19/05/2024, 13:33 Battery Testing.

ipynb - Colab

import scipy.io as io
import pandas as pd
import numpy as np

Start coding or generate with AI.

from google.colab import drive


drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remoun

mat_data = io.loadmat('/content/drive/MyDrive/Battery Health Management System/5. Battery Data Se


mat_data1 = io.loadmat('/content/drive/MyDrive/Battery Health Management System/5. Battery Data S
mat_data2 = io.loadmat('/content/drive/MyDrive/Battery Health Management System/5. Battery Data S
test_data = io.loadmat('/content/drive/MyDrive/Battery Health Management System/5. Battery Data S

type(mat_data)

dict

mat_data.keys()

dict_keys(['__header__', '__version__', '__globals__', 'B0005'])

type(data:=mat_data['B0005'])
type(data1:=mat_data1['B0006'])
type(data2:=mat_data2['B0007'])
type(test:=test_data['B0018'])

numpy.ndarray

Start coding or generate with AI.

data.shape
data1.shape
data2.shape
test.shape

(1, 1)

data.dtype
data1.dtype
data2.dtype
test.dtype

dtype([('cycle', 'O')])

type(data[0,0])
numpy.void

data.dtype.names

('cycle',)

test.dtype.names

('cycle',)

data['cycle'][0,0].dtype.names

('type', 'ambient_temperature', 'time', 'data')

data1['cycle'][0,0].dtype.names
('type', 'ambient_temperature', 'time', 'data')

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 1/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab

test['cycle'][0,0].dtype.names
('type', 'ambient_temperature', 'time', 'data')

data_ = data['cycle'][0,0]
d = data_['data']
d.shape

(1, 616)

data1_ = data1['cycle'][0,0]
d1 = data1_['data']
d1.shape

(1, 616)

data2_ = data2['cycle'][0,0]
d2 = data2_['data']
d2.shape

(1, 616)

test_ = test['cycle'][0,0]
t = test_['data']
t.shape

(1, 319)

type(t)

numpy.ndarray

#t[0,2]

#d[0,0]

sum=0
p=0

for i in (data['cycle'][0,0]['type']):
for j in i:
p+=1

if(j==np.array(['discharge'])):

sum+=1

print(sum)
print(p)

168
616

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 2/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
sum=0
p=0

for i in (test['cycle'][0,0]['type']):
for j in i:
p+=1

if(j==np.array(['discharge'])):

sum+=1

print(sum)
print(p)

132
319

c=0
l=[]
for i in (data['cycle'][0,0]['type']):
for j in i:
c+=1
#print(c,j)
if(j==np.array(['discharge'])):
l.append(c)
print(l)
len(l)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 25, 27, 29, 31, 33, 35, 37, 39, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86,
168

c=0
l=[]
for i in (data1['cycle'][0,0]['type']):
for j in i:
c+=1
#print(c,j)
if(j==np.array(['discharge'])):
l.append(c)
print(l)
len(l)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 25, 27, 29, 31, 33, 35, 37, 39, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86,
168

c=0
l=[]
for i in (data2['cycle'][0,0]['type']):
for j in i:
c+=1
#print(c,j)
if(j==np.array(['discharge'])):
l.append(c)
print(l)
len(l)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 25, 27, 29, 31, 33, 35, 37, 39, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86,
168

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 3/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
c=0
l1=[]
for i in (test['cycle'][0,0]['type']):
for j in i:
c+=1
#print(c,j)
if(j==np.array(['discharge'])):
l1.append(c)
print(l1)
len(l1)

[3, 7, 11, 15, 18, 20, 22, 24, 27, 30, 32, 34, 36, 39, 42, 44, 46, 48, 51, 54, 56, 58, 60, 63, 66, 68, 70, 72, 75, 78, 8
132

y=[]
x=[]
p=0
for k in range(167):
cols = d[0,(l[k]-1)].dtype.names
cols = list(cols)

cols.pop()
print(cols)
y.append(d[0,l[k]-1]['Capacity'])

tb = np.array(data_['type'])
types = np.unique(tb)

if(tb[0,1]==types[1]):
print(1)

discharged={}
for col in cols:
discharged[col] = list(d[0,l[k]-1][col][0,0][0])

for i in range(2, d.shape[1]):


if(tb[0,i] == types[1]):
for col in cols:
discharged[col].append(list(d[0,i][col][0,0][0]))
m=len(discharged[col])
for key, value in discharged.items():
for i in range(0,m-1):
if(type(discharged[key][i])==list):
discharged[key][i]= discharged[key][i][0]

print(key, ':', len(discharged[key]))

x.append(discharged)
p+=1
print(p)

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 4/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
Voltage_load : 465
Time : 465
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 465
Current_measured : 465
Temperature_measured : 465
Current_load : 465
Voltage_load : 465
Time : 465
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 465
Current_measured : 465
Temperature_measured : 465
Current_load : 465
Voltage_load : 465
Time : 465
167

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 5/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
y1=[]
x1=[]
p=0
for k in range(167):
cols = d1[0,(l[k]-1)].dtype.names
cols = list(cols)

cols.pop()
print(cols)
y1.append(d1[0,(l[k]-1)]['Capacity'])

tb = np.array(data1_['type'])
types = np.unique(tb)

if(tb[0,1]==types[1]):
print(1)

discharged={}
for col in cols:
discharged[col] = list(d1[0,l[k]-1][col][0,0][0])

for i in range(2, d1.shape[1]):


if(tb[0,i] == types[1]):
for col in cols:
discharged[col].append(list(d1[0,i][col][0,0][0]))
m=len(discharged[col])
for key, value in discharged.items():
for i in range(0,m-1):
if(type(discharged[key][i])==list):
discharged[key][i]= discharged[key][i][0]

print(key, ':', len(discharged[key]))

x1.append(discharged)
p+=1
print(p)

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 6/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
Voltage_load : 352
Time : 352
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 351
Current_measured : 351
Temperature_measured : 351
Current_load : 351
Voltage_load : 351
Time : 351
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 350
Current_measured : 350
Temperature_measured : 350
Current_load : 350
Voltage_load : 350
Time : 350
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 349
Current measured : 349

y2=[]
x2=[]
p=0
for k in range(167):
cols = d2[0,(l[k]-1)].dtype.names
cols = list(cols)

cols.pop()
print(cols)
y2.append(d2[0,(l[k]-1)]['Capacity'])

tb = np.array(data2_['type'])
types = np.unique(tb)

if(tb[0,1]==types[1]):
print(1)

discharged={}
for col in cols:
discharged[col] = list(d2[0,l[k]-1][col][0,0][0])

for i in range(2, d2.shape[1]):


if(tb[0,i] == types[1]):
for col in cols:
discharged[col].append(list(d2[0,i][col][0,0][0]))
m=len(discharged[col])
for key, value in discharged.items():
for i in range(0,m-1):
if(type(discharged[key][i])==list):
discharged[key][i]= discharged[key][i][0]

print(key, ':', len(discharged[key]))

x2.append(discharged)
p+=1
print(p)

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 7/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
Temperature_measured : 465
Current_load : 465
Voltage_load : 465
Time : 465
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 465
Current_measured : 465
Temperature_measured : 465
Current_load : 465
Voltage_load : 465
Time : 465
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 464
Current_measured : 464
Temperature_measured : 464
Current_load : 464
Voltage_load : 464
Time : 464
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
1
Voltage_measured : 465
Current_measured : 465
Temperature_measured : 465
Current_load : 465
Voltage_load : 465
Time : 465
167

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 8/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
y3=[]
x3=[]
p=0
for k in range(131):
cols = t[0,(l1[k]-1)].dtype.names
cols = list(cols)

cols.pop()
print(cols)
y3.append(t[0,(l1[k]-1)]['Capacity'])
tb = np.array(test_['type'])
types = np.unique(tb)

if(tb[0,1]==types[1]):
print(1)

discharged={}
for col in cols:
discharged[col] = list(t[0,l1[k]-1][col][0,0][0])

for i in range(2, t.shape[1]):


if(tb[0,i] == types[1]):
for col in cols:
discharged[col].append(list(t[0,i][col][0,0][0]))
m=len(discharged[col])
for key, value in discharged.items():
for i in range(0,m-1):
if(type(discharged[key][i])==list):
discharged[key][i]= discharged[key][i][0]

print(key, ':', len(discharged[key]))

x3.append(discharged)
p+=1
print(p)

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 9/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
[ Voltage_measured , Current_measured , Temperature_measured , Current_load , Voltage_load , Time ]
Voltage_measured : 336
Current_measured : 336
Temperature_measured : 336
Current_load : 336
Voltage_load : 336
Time : 336
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
Voltage_measured : 336
Current_measured : 336
Temperature_measured : 336
Current_load : 336
Voltage_load : 336
Time : 336
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
Voltage_measured : 334
Current_measured : 334
Temperature_measured : 334
Current_load : 334
Voltage_load : 334
Time : 334
['Voltage_measured', 'Current_measured', 'Temperature_measured', 'Current_load', 'Voltage_load', 'Time']
Voltage_measured : 333
Current_measured : 333
Temperature_measured : 333
Current_load : 333
Voltage_load : 333
Time : 333
131

# prompt: Write a code to extract only the values of y in a normal numpy array
y_train=[]
for i in range(0,167):
y_train.append(y[i][0][0][0][0])

y1_train=[]
for i in range(0,167):
y1_train.append(y1[i][0][0][0][0])

y2_train=[]
for i in range(0,167):
y2_train.append(y2[i][0][0][0][0])

y_test=[]
for i in range(0,131):
y_test.append(y3[i][0][0][0][0])

len(y_test)
131

yf_train=[]
for i in range(0,167):
yf_train.append(y_train[i])

for i in range(0,167):
yf_train.append(y1_train[i])
for i in range(0,167):
yf_train.append(y2_train[i])

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 10/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
xf_train=[]
for i in range(0,167):
xf_train.append(x[i])

for i in range(0,167):
xf_train.append(x1[i])
for i in range(0,167):
xf_train.append(x2[i])

yf_train[0]
1.8564874208181574

import matplotlib.pyplot as plt

plt.scatter(list(range(167)), y_train, label='#5', color='red', marker='o')


plt.scatter(list(range(167)), y1_train, label='#6', color='green', marker='s')
plt.scatter(list(range(167)), y2_train, label='#7', color='blue', marker='^')
plt.xlabel('Cycle Index')
plt.ylabel('Discharge Capacity')
plt.legend()
plt.show()

dataframes_list = [pd.DataFrame(cycles) for cycles in x]


total_data={'cycles': dataframes_list,'discharge capacity':y_train}

df = pd.DataFrame({'cycles': dataframes_list})

type(df)

pandas.core.frame.DataFrame
def __init__(data=None, index: Axes | None=None, columns: Axes |
None=None, dtype: Dtype | None=None, copy: bool | None=None) -> None
Notes
-----
Please reference the :ref:`User Guide <basics.dataframe>` for more informati

Examples
--------
Constructing DataFrame from a dictionary.

dataframes_list1 = [pd.DataFrame(cycles) for cycles in x1]


df1 = pd.DataFrame({'cycles': dataframes_list1})

dataframes_list2 = [pd.DataFrame(cycles) for cycles in x2]


df2 = pd.DataFrame({'cycles': dataframes_list2})

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 11/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab

dataframes_listf = [pd.DataFrame(cycles) for cycles in xf_train]


dff = pd.DataFrame({'cycles': dataframes_listf})

dataframes_test = [pd.DataFrame(cycles) for cycles in x3]


dtest = pd.DataFrame({'cycles': dataframes_test})

df1['cycles'][0]

Voltage_measured Current_measured Temperature_measured Current_loa

0 4.1798 -0.002366 24.277568 -0.000

1 4.179823 0.000434 24.277073 -0.000

2 3.966528 -2.014242 24.366226 -1.99

3 3.945886 -2.00873 24.515123 -1.99

4 3.930354 -2.013381 24.676053 -1.99

... ... ... ... .

359 4.169704 -0.00085 23.70734 0.000

360 4.180284 0.002022 23.79146 0.000

361 4.181158 -0.004386 23.802897 0.000

362 4.157545 -0.002482 24.698598 0.000

[0.0008
[4.188511527828155, [-0.0012281447149011, [24.907725860706154,
0.0006, 1.9992
363 4.188177365628273, -0.0014391927665203057, 24.922469391509193,
1.9992, 1.9992
3.93245... ... 24.96...
1.999.

364 rows × 6 columns

#dff['cycles'][500]
len(df['cycles'][0])

364

#y_train

for i in df['cycles']:
i.drop(len(i)-1, inplace=True)
for i in df1['cycles']:
i.drop(len(i)-1, inplace=True)
for i in df2['cycles']:
i.drop(len(i)-1, inplace=True)
for i in dff['cycles']:
i.drop(len(i)-1, inplace=True)
for i in dtest['cycles']:
i.drop(len(i)-1, inplace=True)

def remove_last_column(df):

if not isinstance(df, pd.DataFrame):


raise ValueError("The input must be a pandas DataFrame")

# Remove the last column


return df.iloc[:, :-1]

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 12/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
def split(df):

chunks=[]
chunk_means=[]
for data in df['cycles']:

chunks.append([data[i:i + len(data) // 100] for i in range(0, len(data), len(data) // 100)])


l=[]
lt=[]
for i in range(0,len(df)):
for j in range(0,100):
lt.append(np.array(chunks[i][j]).mean(axis=0))
l.append(lt)
lt=[]
for i in l:
dl1= pd.DataFrame(i)
dl1 = dl1.rename(columns=dict(zip(dl1.columns, cols)))
dl1 = remove_last_column(dl1)
chunk_means.append(dl1)

return chunk_means

type(df)

pandas.core.frame.DataFrame
def __init__(data=None, index: Axes | None=None, columns: Axes |
None=None, dtype: Dtype | None=None, copy: bool | None=None) -> None

/usr/local/lib/python3.10/dist-packages/pandas/core/frame.py
Two-dimensional, size-mutable, potentially heterogeneous tabular data.

Data structure also contains labeled axes (rows and columns).


Arithmetic operations align on both row and column labels. Can be
thought of as a dict-like container for Series objects. The primary
d d t t t

df=split(df)
df1=split(df1)
df2=split(df2)
dfn=split(dff)
dt1=split(dtest)

df2[166]

Voltage_measured Current_measured Temperature_measured Current_load Vol

0 4.078607 -0.995419 24.511859 1.00025

1 3.924468 -1.991078 24.791732 2.00000

2 3.886700 -1.989149 25.206262 2.00000

3 3.859946 -1.989558 25.628378 2.00000

4 3.839046 -1.990091 26.049137 2.00000

... ... ... ... ...

95 4.201718 -0.001581 23.659625 0.00060

96 4.209892 -0.000639 24.081931 0.00055

97 4.201357 -0.003516 24.152745 0.00060

98 4.201477 -0.002180 23.973743 0.00055

99 4.199962 -0.002466 24.024514 0.00055

100 rows × 5 columns

dfn[500]

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 13/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab

Voltage_measured Current_measured Temperature_measured Current_load Vol

0 4.078607 -0.995419 24.511859 1.00025

1 3.924468 -1.991078 24.791732 2.00000

2 3.886700 -1.989149 25.206262 2.00000

3 3.859946 -1.989558 25.628378 2.00000

4 3.839046 -1.990091 26.049137 2.00000

... ... ... ... ...

95 4.201718 -0.001581 23.659625 0.00060

96 4.209892 -0.000639 24.081931 0.00055

97 4.201357 -0.003516 24.152745 0.00060

98 4.201477 -0.002180 23.973743 0.00055

99 4.199962 -0.002466 24.024514 0.00055

100 rows × 5 columns

fdf1 = pd.DataFrame({'cycles': df})

fdf1 = pd.DataFrame({'cycles': df1})

fdf2 = pd.DataFrame({'cycles': df2})

fdft = pd.DataFrame({'cycles': dt1})

#dff= [dataset[:, :-1] for dataset in dfn]


fdff = pd.DataFrame({'cycles': dfn})

len(yf_train )
501

Start coding or generate with AI.

X_train=np.array(dfn)

X_train.shape
(501, 100, 5)

type(X_train)

numpy.ndarray

X_test=np.array(dt1)

X_test[0]

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 14/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
[ 3.56298243e+00, -2.00747109e+00, 3.13948306e+01,
1.99895000e+00, 2.65625000e+00],
[ 3.55673169e+00, -2.00855276e+00, 3.14973565e+01,
1.99900000e+00, 2.65000000e+00],
[ 3.55078555e+00, -2.00829963e+00, 3.15940281e+01,
1.99900000e+00, 2.64375000e+00],
[ 3.54491913e+00, -2.01057744e+00, 3.16874308e+01,
1.99900000e+00, 2.63825000e+00],
[ 3.53915834e+00, -2.00893226e+00, 3.17872453e+01,
1.99900000e+00, 2.63225000e+00],
[ 3.53362231e+00, -2.00936815e+00, 3.18821073e+01,
1.99900000e+00, 2.62700000e+00],
[ 3.52831221e+00, -2.00960217e+00, 3.19837165e+01,
1.99900000e+00, 2.62150000e+00],
[ 3.52288688e+00, -2.00982288e+00, 3.20639115e+01,
1.99895000e+00, 2.61625000e+00],
[ 3.51780441e+00, -2.00934881e+00, 3.21505987e+01,
1.99895000e+00, 2.61150000e+00],
[ 3.51290172e+00, -2.00816981e+00, 3.22386571e+01,
1.99900000e+00, 2.60625000e+00],
[ 3.50813575e+00, -2.00935244e+00, 3.23334687e+01,
1.99900000e+00, 2.60175000e+00],
[ 3.50355164e+00, -2.00734780e+00, 3.24204669e+01,
1.99895000e+00, 2.59725000e+00],
[ 3.49925194e+00, -2.00959895e+00, 3.24863435e+01,
1.99900000e+00, 2.59250000e+00],
[ 3.49473919e+00, -2.00940184e+00, 3.25799077e+01,
1.99900000e+00, 2.58850000e+00],
[ 3.49050524e+00, -2.00829734e+00, 3.26664288e+01,
1.99900000e+00, 2.58450000e+00],
[ 3.48632667e+00, -2.00836778e+00, 3.27457241e+01,
1.99900000e+00, 2.58050000e+00],
[ 3.48222907e+00, -2.00867335e+00, 3.28417958e+01,
1.99900000e+00, 2.57600000e+00],
[ 3.47828498e+00, -2.00854115e+00, 3.29252465e+01,
1.99900000e+00, 2.57200000e+00],
[ 3.47417488e+00, -2.00853497e+00, 3.30118966e+01,
1.99900000e+00, 2.56825000e+00],
[ 3.47000822e+00, -2.00870502e+00, 3.31027715e+01,
1.99900000e+00, 2.56400000e+00],
[ 3.46602159e+00, -2.00905150e+00, 3.31956657e+01,
1.99900000e+00, 2.56000000e+00],
[ 3.46185653e+00, -2.00961427e+00, 3.32896139e+01,
1.99900000e+00, 2.55625000e+00],
[ 3.45788679e+00, -2.00913054e+00, 3.33843842e+01,
1.99900000e+00, 2.55200000e+00],
[ 3.45359155e+00, -2.00907545e+00, 3.34894361e+01,
1.99900000e+00, 2.54775000e+00],
[ 3.44937283e+00, -2.00901339e+00, 3.35847975e+01,
1 99900000 00 2 54375000 00]

Y_train=np.array(yf_train).reshape(501,1)

Y_test=np.array(y_test).reshape(131,1)

X=[]
for i in X_train:
X.append((i.T))

Xt=np.array(X)

Xt[0]

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 15/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
6.00000000e-04, 6.66666667e-04, 6.00000000e-04,
6.00000000e-04],
[ 2.42266667e+00, 3.01066667e+00, 2.96766667e+00,
2.94300000e+00, 2.92666667e+00, 2.91300000e+00,
2.89700000e+00, 2.88200000e+00, 2.86733333e+00,
2.85333333e+00, 2.84000000e+00, 2.82700000e+00,
2.81466667e+00, 2.80300000e+00, 2.79100000e+00,
2.77900000e+00, 2.76833333e+00, 2.75700000e+00,
2.74600000e+00, 2.73533333e+00, 2.72533333e+00,
2.71533333e+00, 2.70533333e+00, 2.69600000e+00,
2.68600000e+00, 2.67633333e+00, 2.66733333e+00,
2.65800000e+00, 2.64900000e+00, 2.64033333e+00,
2.63200000e+00, 2.62366667e+00, 2.61566667e+00,
2.60800000e+00, 2.60033333e+00, 2.59366667e+00,
2.58700000e+00, 2.58100000e+00, 2.57500000e+00,
2.56900000e+00, 2.56300000e+00, 2.55700000e+00,
2.55100000e+00, 2.54466667e+00, 2.53800000e+00,
2.53100000e+00, 2.52366667e+00, 2.51566667e+00,
2.50700000e+00, 2.49766667e+00, 2.48700000e+00,
2.47466667e+00, 2.46000000e+00, 2.44133333e+00,
2.41566667e+00, 2.37933333e+00, 2.32533333e+00,
2.24566667e+00, 2.12200000e+00, 1.89533333e+00,
3.33333333e-04, 3.33333333e-04, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00]])

Start coding or generate with AI.

X_reshaped = np.vstack(X)

Y=[]
for i in Y_train:
Y.append(np.array(i).T)
Yt=np.array(Y).reshape(501,1)

Yt
array([[1.85648742],
[1.84632725],
[1.83534919],
[1.83526253],
[1.83464551],
[1.83566166],
[1.83514614],
[1.82575679],
[1.82477385],
[1.82461327],
[1.82461955],
[1.81420194],
[1.81375216],
[1.81344049],
[1.802598 ],
[1.8021069 ],
[1.8025795 ],
[1.80306831],
[1.80277762],
[1.84702599],
[1.84741731],
[1.83617742],
[1.82578075],
[1.82511364],
[1.8255815 ],
[1.81403113],
[1.81476919],
[1.81396939],
[1.80276567],
[1.80407704],
[1.85180255],
[1.83070385],
[1.81990411],
[1.80930796],
[1.8046099 ],
[1.79937707],

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 16/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
[1.78844323],
[1.78292305],
[1.77303372],
[1.77303776],
[1.76787211],
[1.76231507],
[1.76761729],
[1.76266836],
[1.75173049],
[1.7418496 ],
[1.73609135],
[1.79362401],
[1.78318902],
[1.76736421],
[1.75701779],
[1.74687062],
[1.74171725],
[1.73642251],
[1.72632172],
[1.71580654],
[1.71053335],
[1.7060145 ],

Yt.shape
(501, 1)

np.array(X)[0].shape
(5, 100)

Xtt=[]
for i in X_test:
Xtt.append((i.T))
Xtt=np.array(Xtt)

Xtt[0]

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 17/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
2.51575000e+00, 2.51100000e+00, 2.50500000e+00,
2.49950000e+00, 2.49325000e+00, 2.48650000e+00,
2.47900000e+00, 2.47100000e+00, 2.46150000e+00,
2.45050000e+00, 2.43775000e+00, 2.42125000e+00,
2.40100000e+00, 2.37575000e+00, 2.34300000e+00,
2.30050000e+00, 2.24425000e+00, 2.16850000e+00,
2.06100000e+00, 1.88300000e+00, 8.29250000e-01,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00]])

import tensorflow as tf

#from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

print(np.isnan(Xt).any(), np.isnan(Xtt).any(), np.isnan(Y_train).any(), np.isnan(Y_test).any())


print(np.isinf(Xt).any(), np.isinf(Xtt).any(), np.isinf(Y_train).any(), np.isinf(Y_test).any())

False False False False


False False False False

#model.compile(optimizer='adam', loss='mean_squared_error')

#model.summary()

#model.fit(X_reshaped, Y_train, epochs=10, batch_size=32, validation_split=0.2)

#loss = model.evaluate(X_test, Y_test)

from tensorflow.keras.layers import Conv1D,MaxPooling1D,Conv2D, MaxPooling2D, Flatten, Dense, Dro


from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, ReLU, Add, GlobalAveragePo
from tensorflow.keras.models import Sequential
from keras.optimizers import Adam
from tensorflow.keras.losses import MeanSquaredError
from tensorflow.keras import regularizers

'''model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='tanh', padding='same', input_shape=(25, 5,1
model.add(MaxPooling2D(pool_size=(2, 2)))
model..add(Conv2D(32, kernel_size=(3, 3), activation='tanh', padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, kernel_size=(3, 3), activation='tanh', padding='same'))


model.add(Conv2D(64, kernel_size=(3, 3), activation='tanh', padding='same'))
model.add(MaxPooling2D(pool_size=(1, 1)))

model.add(Conv2D(128, kernel_size=(3, 3), activation='tanh', padding='same'))


model.add(Conv2D(128, kernel_size=(3, 3), activation='tanh', padding='same'))
model.add(MaxPooling2D(pool_size=(1, 1)))

model.add(Flatten())
model.add(Dense(128, activation='tanh'))
model.add(Dense(128, activation='tanh'))
model.add(Dense(100, activation='softmax'))

model.add(Dense(1, activation='linear'))'''

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 18/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
model = Sequential()
model.add(Conv1D(32, kernel_size=3, activation='relu', padding='same', input_shape=(100, 5),kerne
model.add(Dropout(0.2))
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(32, kernel_size=3, activation='relu', padding='same',kernel_regularizer=regular
model.add(Dropout(0.2))
model.add(MaxPooling1D(pool_size=2))

model.add(Conv1D(64, kernel_size=3, activation='relu', padding='same',kernel_regularizer=regular


model.add(Dropout(0.2))
model.add(Conv1D(64, kernel_size=3, activation='relu', padding='same',kernel_regularizer=regular
model.add(Dropout(0.2))
model.add(MaxPooling1D(pool_size=1))

model.add(Conv1D(128, kernel_size=3, activation='relu', padding='same',kernel_regularizer=regula


model.add(Dropout(0.2))
model.add(Conv1D(128, kernel_size=3, activation='relu', padding='same',kernel_regularizer=regula
model.add(Dropout(0.2))
model.add(MaxPooling1D(pool_size=1))

model.add(Flatten())
model.add(Dense(128, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model.add(Dropout(0.2))
model.add(Dense(100, activation='softmax',kernel_regularizer=regularizers.l2(0.01)))
model.add(Dropout(0.2))

model.add(Dense(1, activation='linear',kernel_regularizer=regularizers.l2(0.01)))

'''def basic_block(x, filters, kernel_size=3, stride=1):


# Basic building block for ResNet
y = Conv2D(filters, kernel_size=kernel_size, strides=stride, padding='same')(x)
y = BatchNormalization()(y)
y = ReLU()(y)

y = Conv2D(filters, kernel_size=kernel_size, padding='same')(y)


y = BatchNormalization()(y)

# Shortcut connection
if stride != 1 or x.shape[-1] != filters:
x = Conv2D(filters, kernel_size=1, strides=stride, padding='same')(x)
x = BatchNormalization()(x)

y = Add()([x, y])
y = ReLU()(y)
return y'''

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 19/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
'''def resnet(input_shape):
inputs = Input(shape=input_shape)

# Reshape the input data to be compatible with Conv2D


x = Reshape((25, 5, 1))(inputs)

# Initial Convolutional Layer


x = Conv2D(64, kernel_size=(3, 3), strides=(2, 2), padding='same')(x)
x = BatchNormalization()(x)
x = ReLU()(x)

# Residual Blocks
x = basic_block(x, filters=64, stride=1)
x = basic_block(x, filters=64, stride=1)
x = basic_block(x, filters=128, stride=2)
x = basic_block(x, filters=128, stride=1)
x = basic_block(x, filters=256, stride=2)
x = basic_block(x, filters=256, stride=1)

# Global Average Pooling


x = GlobalAveragePooling2D()(x)

# Fully Connected Layer


x = Dense(256, activation='relu')(x) # Adjust the size as needed
outputs = Dense(1, activation='linear')(x) # Regression output

model = tf.keras.Model(inputs=inputs, outputs=outputs)


return model'''

'''input_shape = (25, 5)
model = resnet(input_shape)'''

Start coding or generate with AI.


array([[[4.11903726, 3.93537588, 3.89747194, 3.87115142, 3.850172 ],
[3.83201356, 3.81589641, 3.80108405, 3.78671217, 3.77250639],
[3.75865134, 3.74526769, 3.7325117 , 3.72053109, 3.70867041],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]],

[[4.11927043, 3.94102454, 3.90428461, 3.87830997, 3.85718369],


[3.83884717, 3.82253869, 3.80735503, 3.79253888, 3.77778389],
[3.76345203, 3.75003472, 3.73717536, 3.72499977, 3.71317701],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]],

[[4.11846 , 3.94259378, 3.90618184, 3.88060861, 3.85971875],


[3.84126583, 3.82494487, 3.80970827, 3.79467144, 3.77986914],
[3.76529523, 3.75179209, 3.73894331, 3.72679423, 3.7148011 ],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]],

...,

[[4.0863614 , 3.92731149, 3.88741234, 3.85911425, 3.83733055],


[3.81951693, 3.80387667, 3.78951105, 3.77550779, 3.76109082],
[3.74614356, 3.73029101, 3.71429401, 3.69880699, 3.68424194],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]],

[[4.08584262, 3.92675795, 3.88664647, 3.85835848, 3.83651502],


[3.81859274, 3.80309856, 3.78880447, 3.77476973, 3.76036922],
[3.74528405, 3.729482 , 3.7134214 , 3.6981044 , 3.68357444],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]],

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 20/21
19/05/2024, 13:33 Battery Testing.ipynb - Colab
[[4.07860744, 3.92446779, 3.88670002, 3.85994589, 3.83904581],
[3.82191752, 3.80702784, 3.7933225 , 3.77968257, 3.76557471],
[3.75047555, 3.73469816, 3.7187435 , 3.70362934, 3.6894134 ],
...,
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]]])

model.compile(optimizer=Adam(), loss=MeanSquaredError(), metrics=['mae'])

history=model.fit(Xt.reshape(-1, 100, 5), Y_train, epochs=100, batch_size=10, validation_split=0.3

Epoch 72/100
35/35 - 0s - loss: 0.1013 - mae: 0.2448 - val_loss: 0.0544 - val_mae: 0.1606 - 261ms/epoch - 7ms/step
Epoch 73/100
35/35 - 0s - loss: 0.0958 - mae: 0.2408 - val_loss: 0.0511 - val_mae: 0.1548 - 278ms/epoch - 8ms/step
Epoch 74/100
35/35 - 0s - loss: 0.1059 - mae: 0.2553 - val_loss: 0.0540 - val_mae: 0.1600 - 253ms/epoch - 7ms/step
Epoch 75/100
35/35 - 0s - loss: 0.0949 - mae: 0.2356 - val_loss: 0.0606 - val_mae: 0.1745 - 242ms/epoch - 7ms/step
Epoch 76/100
35/35 - 0s - loss: 0.0948 - mae: 0.2411 - val_loss: 0.0505 - val_mae: 0.1544 - 292ms/epoch - 8ms/step
Epoch 77/100
35/35 - 0s - loss: 0.0957 - mae: 0.2431 - val_loss: 0.0630 - val_mae: 0.1794 - 252ms/epoch - 7ms/step
Epoch 78/100
35/35 - 0s - loss: 0.0905 - mae: 0.2389 - val_loss: 0.0519 - val_mae: 0.1577 - 270ms/epoch - 8ms/step
Epoch 79/100
35/35 - 0s - loss: 0.0917 - mae: 0.2387 - val_loss: 0.0487 - val_mae: 0.1517 - 269ms/epoch - 8ms/step
Epoch 80/100
35/35 - 0s - loss: 0.0929 - mae: 0.2370 - val_loss: 0.0465 - val_mae: 0.1466 - 271ms/epoch - 8ms/step
Epoch 81/100
35/35 - 0s - loss: 0.0849 - mae: 0.2276 - val_loss: 0.0456 - val_mae: 0.1464 - 273ms/epoch - 8ms/step
Epoch 82/100
35/35 - 0s - loss: 0.0880 - mae: 0.2309 - val_loss: 0.0454 - val_mae: 0.1457 - 243ms/epoch - 7ms/step
Epoch 83/100
35/35 - 0s - loss: 0.0872 - mae: 0.2314 - val_loss: 0.0492 - val_mae: 0.1534 - 278ms/epoch - 8ms/step
Epoch 84/100
35/35 - 0s - loss: 0.0795 - mae: 0.2200 - val_loss: 0.0440 - val_mae: 0.1448 - 274ms/epoch - 8ms/step
Epoch 85/100
35/35 - 0s - loss: 0.0803 - mae: 0.2246 - val_loss: 0.0462 - val_mae: 0.1496 - 259ms/epoch - 7ms/step
Epoch 86/100
35/35 - 0s - loss: 0.0794 - mae: 0.2214 - val_loss: 0.0419 - val_mae: 0.1410 - 248ms/epoch - 7ms/step
Epoch 87/100
35/35 - 0s - loss: 0.0767 - mae: 0.2159 - val_loss: 0.0466 - val_mae: 0.1508 - 266ms/epoch - 8ms/step
Epoch 88/100
35/35 - 0s - loss: 0.0809 - mae: 0.2263 - val_loss: 0.0422 - val_mae: 0.1422 - 284ms/epoch - 8ms/step
Epoch 89/100
35/35 - 0s - loss: 0.0720 - mae: 0.2130 - val_loss: 0.0409 - val_mae: 0.1409 - 253ms/epoch - 7ms/step
Epoch 90/100
35/35 - 0s - loss: 0.0694 - mae: 0.2037 - val_loss: 0.0398 - val_mae: 0.1396 - 265ms/epoch - 8ms/step
Epoch 91/100
35/35 - 0s - loss: 0.0692 - mae: 0.2093 - val_loss: 0.0425 - val_mae: 0.1454 - 261ms/epoch - 7ms/step
Epoch 92/100
35/35 - 0s - loss: 0.0701 - mae: 0.2143 - val_loss: 0.0384 - val_mae: 0.1382 - 277ms/epoch - 8ms/step
Epoch 93/100
35/35 - 0s - loss: 0.0659 - mae: 0.2062 - val_loss: 0.0379 - val_mae: 0.1379 - 245ms/epoch - 7ms/step
Epoch 94/100
35/35 - 0s - loss: 0.0706 - mae: 0.2128 - val loss: 0.0377 - val mae: 0.1376 - 268ms/epoch - 8ms/step

https://colab.research.google.com/drive/1v5NJbIb5Ktptxca0re-WLwuWAE7cphxE#scrollTo=a3wV1Vxx3fYG&printMode=true 21/21

You might also like