‘Sequential‘ object has no attribute ‘predict_classes‘
'Sequential' object has no attribute 'predict_classes'
·
问题描述:
使用 keras 训练 MLP 模型完成二分类任务对训练数据集作预测时出现'Sequential' object has no attribute 'predict_classes',如下:
# make prediction and calculate the accuracy
y_train_predict = mlp.predict_classes(X_train)
from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train,y_train_predict)
print(accuracy_train)
因为在Tensorflow2.6之前的版本中拥有predict_class属性,在结果预测时可以自动将结果变成0 1分布,而我的Tensorflow版本是2.9.1并没有predict_class属性,所以报错。
解决办法:
1、先使用predict属性对训练数据集进行预测,查看预测结果的维度
2、使用numpy的ones()方法创建一个同纬度的数组
3、生成一列0.5加入到第0列,再用np.argmax按行索引判断最大值的位置,如果0.5是最大的就返回0,如果0.5是最小的就返回1,再转化为二维数组格式
# make prediction and calculate the prediction
y_train_predict = mlp.predict(X_train)
a = np.ones(275)
b = a / 2
c = np.insert(y_train_predict, 0, b, axis=1)
y_train_predict = np.argmax(c, axis=1)
y_train_predict = y_train_predict.reshape(275, 1)
from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train, y_train_predict)
print(accuracy_train)
问题解决!
参考链接: 'Sequential' object has no attribute 'predict_classes' Code Example (codegrepper.com)
更多推荐
已为社区贡献4条内容
所有评论(0)