python - 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)
解决方案
你应该做这样的事情 -
history = model.fit(...)
根据 Keras 文档,该model.fit
方法返回一个 History 回调,该回调具有一个 history 属性,其中包含连续损失和其他指标的列表。
history
没有称为“评估”的属性,您应该这样做以获得验证准确性。evaluate
是model
对象的一个属性。
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()
输出的准确性。
推荐阅读
- javascript - 我可以使用函数触发器来调度函数吗?
- apache-kafka - Kafka Connect with Mysql 使用 Kafka 版本 2.12-2.4.1
- webdav - 最新版本的 Microsoft Office 块 MS-OFBA 请求
- c# - 依赖注入 Blazor 版本
- python - 列表索引超出范围给了我
- android - 如何将字符串(给定格式的)与当前日期进行比较?
- javascript - 2D 数组查询 - 尽管使用了 join(),但输出中出现了意外的逗号;
- flutter - 单击链接时填写表单 - Flutter
- excel - 在 Excel VBA 中使用 Dos Dir 命令时的磁盘大小问题
- ios - IOS App中,页面跳转时页面布局由UIRectEdgeNone变为UIRectEdgeAll