首页 > 解决方案 > AttributeError:“历史”对象没有属性“评估”

问题描述

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
import numpy as np

frames=[singleteamone_tweets,singleteamtwo_tweets,twoteam_tweets]
All_data = pd.concat(frames)

#creating a bag of words model
from sklearn.feature_extraction.text import CountVectorizer
cv= CountVectorizer()
X=cv.fit_transform(All_data.iloc[:,0]).toarray()  #.iloc[:,0]
Y=All_data.iloc[:,1].values


#training and test dataset

from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.25,random_state=0)

#Reshape 
#X_train = np.random.rand(3, 4)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))





classifier=Sequential()
#LSTM layers and Dropout regularization
classifier.add(LSTM(units=30,return_sequences=True,input_shape=(X_train.shape[1],1)))
classifier.add(Dropout(0.2))

classifier.add(LSTM(units=30,return_sequences=True))
classifier.add(Dropout(0.2))

classifier.add(LSTM(units=30,return_sequences=True))
classifier.add(Dropout(0.2))

classifier.add(LSTM(units=30))
classifier.add(Dropout(0.2))

#output layer
classifier.add(Dense(units=1, init='uniform', activation='sigmoid'))

在检查其显示属性错误的准确性时出现错误:- 历史对象没有属性“评估”。我试图解决这个问题。AttributeError:'History' object has no attribute 'evaluate'

#编译RNN分类器.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

model=classifier.fit(X_train,Y_train,epochs=30,batch_size=15)



# Final evaluation of the model

test_loss, test_acc = model.evaluate(X_test)

标签: pythonmachine-learningdeep-learningartificial-intelligenceopennlp

解决方案


你应该做这样的事情 -

history = model.fit(...)

根据 Keras 文档,该model.fit方法返回一个 History 回调,该回调具有一个 history 属性,其中包含连续损失和其他指标的列表。

history没有称为“评估”的属性,您应该这样做以获得验证准确性。evaluatemodel对象的一个​​属性。

history.history['accuracy']

这将为您返回一个时代明智的训练精度列表。

要找到最终测试的准确性,您应该使用对象evaluate上的属性-model

您还需要在y_test尝试计算准确性时给出它。

model.evaluate(X_test, y_test)

# This could also be a generator instead
# model.evaluate(test_generator)

上面这段代码

引用自evaluate()方法文档

退货

标量测试损失(如果模型有单个输出并且没有指标)或标量列表(如果模型有多个输出和/或指标)。属性 model.metrics_names 将为您提供标量输出的显示标签。

因此,您可以使用metrics_names模型的属性来找出每个值对应的内容。例如,如果你写:

print(model.metrics_names)

这为您提供了所有指标的名称。因为accuracy如果你编译模型需要 -

metrics=["accuracy"]

您还将收到model.evaluate()输出的准确性。


推荐阅读