Из моего кода MATLAB я извлекаю MAT-файлы с помощью Octave следующим образом:
dateforname = "autogenerated_m_" + datetime.datetime.now().strftime("%m_%d_%y%H_%M_%S")
saveworkspace = "save -v7 " + currentdirpath + "\\" + newfoldername + "\\" + dateforname + "_workspace.mat"
saveworkspace = saveworkspace.replace('\\', '/')
# Ideas from: https://stackoverflow.com/questions/45525233/loading-mat-and-m-files-with-loadmat-in-python
oct.eval("Generate_Data")
oct.eval(saveworkspace)
Я читаю и создаю массивы NumPy из этих файлов MAT следующим образом:
from scipy.io import loadmat
import numpy as np
D = loadmat("xxx/09_07_1913_44_15_workspace.mat")
print(D.keys())
print("------------------")
#print(D['As'])
for item in D.keys():
if not any(value in item for value in ("__header__", "__globals__","__version__")):
print(item)
print(D[item])
print("-----")
matrix = D[item]
print(matrix.flatten()) #We can also use the Flatten method to convert a matrix to 1-d array
# Alternative to flatten: Reshape
# print(matrix.reshape(9,1))#Here -1 says as many columns as needed and 1 row
# print(matrix.reshape(1,-1))#If we provide only 1 value Reshape would return a 1-d array of that length
Здесь я заблудился.У меня есть эта уплощенная структура, и я хотел бы передать ее для прогнозирования модели.Как я могу это сделать?
Другими словами, каждый MAT-файл будет строкой, содержащей несколько объектов, а каждый объект является «сложным» объектом (массив NumPy).Эти функции будут не только числовыми, но вместо этого, это должна быть сплющенная структура, извлеченная из MAT-файла.Есть ли способ сделать это?
Это то, что я пытался:
#X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)
X = D["as"],D["Ff0"],D["Ff1"]
y = D["ans"] # This is a feature from my .mat
scalar = MinMaxScaler()
scalar.fit(X)
X = scalar.transform(X)
# define and fit the final model
model = Sequential()
model.add(Dense(4, input_dim=2, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(X, y, epochs=200, verbose=0)
Имеет ли смысл передавать подобные функции?