использование LSTM для предсказания - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь предсказать, будет ли у пациента остановка сердца c с помощью LSTM. набор данных представляет собой файл CSV, который имеет 7 функций (столбец) в качестве входных данных, а последний столбец - это метка

    col_names=['gender', 'age', 'HR', 'BP','RR','TempC','Spo2','subject_id','hadm_id','icu_id','CA'] 
    myinput=pd.read_csv('muinput.csv', names=col_names)
    myinput.isnull().any()
    myinput=myinput.fillna(method='ffill')
    #print (myinput.head(10))
    #print (myinput.columns.values)
     cols=[7,8,9,10]
     X = myinput.drop(myinput.columns[cols],axis=1)
    le=LabelEncoder()
    X['gender']=le.fit_transform(X['gender'].astype('str'))
    cols=[0,1,2,3,4,5,6,7,8,9]
    Y=myinput.drop(myinput.columns[cols],axis=1)
    ohe = OneHotEncoder()
    y = ohe.fit_transform(Y).toarray()
    # split into train and test sets
    X=X.values
    X=X.astype('float32')
    trainx_size = int(len(X) * 0.67)
   testx_size = len(X) - trainx_size
   trainX, testX = X[0:trainx_size,:], X[trainx_size:len(X),:]
   print(len(trainX), len(testX))
   trainy_size = int(len(y) * 0.67)
   testy_size = len(y) - trainy_size
   trainy, testy = y[0:trainy_size,:],y[trainy_size:len(y),:]
  print(len(trainy), len(testy))
  # reshape input to be [samples, time steps, features]
  # columns in my 2D data become features with one timestep
   trainX = np.reshape(trainX[0],1,trainX[1])
  testX = np.reshape(testX[0],1, testX[1])
 #create model
  model = Sequential()
  model.add(LSTM(4, input_shape=(1, 7)))
  model.add(Dense(1, activation='sigmoid'))
  model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
  print(model.summary())
  model.fit(trainX, trainy, validation_data=(testx, testy), epochs=50, batch_size=64)
  # Final evaluation of the model
 scores = model.evaluate(X, y, verbose=0)
 print("Accuracy: %.2f%%" % (scores[1]*100))

Предыдущий код дает странную ошибку: ошибка значения: значение истинности массива с более чем один элемент неоднозначен. Используйте a.any () или a.all () ', хотя я не сравниваю массивы

1 Ответ

0 голосов
/ 05 мая 2020
ValueError                                Traceback (most recent call last)
<ipython-input-38-f55a164a952e> in <module>
     51 # reshape input to be [samples, time steps, features]
     52 # columns in my 2D data become features with one timestep
---> 53 trainX = np.reshape(trainX[0],1,trainX[1])
     54 testX = np.reshape(testX[0],1, testX[1])
     55 

~\Anaconda3\envs\first tutorial\lib\site-packages\numpy\core\fromnumeric.py in reshape(a, newshape, order)
    290            [5, 6]])
    291     """
--> 292     return _wrapfunc(a, 'reshape', newshape, order=order)
    293 
    294 

~\Anaconda3\envs\first tutorial\lib\site-packages\numpy\core\fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
     54 def _wrapfunc(obj, method, *args, **kwds):
     55     try:
---> 56         return getattr(obj, method)(*args, **kwds)
     57 
     58     # An AttributeError occurs if the object does not have

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

1
​```
...