Использование MAT-файлов в качестве функций для моделей прогнозирования - PullRequest
0 голосов
/ 19 сентября 2019

Из моего кода 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)

Имеет ли смысл передавать подобные функции?

...