问题描述:

使用 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)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐