分类指标无法处理precision_score中连续目标和二进制目标的混合

问题描述 投票:0回答:1

我正在从boston_Housing学习神经网络,但收到一个我不知道这意味着什么的错误。

from keras.datasets import boston_housing
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD

(x_train, y_train), (x_test, y_test) = boston_housing.load_data()


neural_model = Sequential([
    Dense(2, input_shape=(13,), activation="relu"),
    Dense(1, activation="sigmoid")
])

neural_model.summary()

neural_model.compile(SGD(lr = .003), "binary_crossentropy", \
                     metrics=["accuracy"])

np.random.seed(0)
run_hist_1 = neural_model.fit(x_train, y_train, epochs=40,\
                              validation_data=(x_test, y_test), \
                              verbose=True, shuffle=False)

print("Training neural network...\n")

print('Accuracy over training data is ', \
      accuracy_score(y_train, neural_model.predict_classes(x_train))

print('Accuracy over testing data is ', \
      accuracy_score(y_test, neural_model.predict_classes(x_test)))

conf_matrix = confusion_matrix(y_test, neural_model.predict_classes(x_test))
print(conf_matrix)

我收到此错误:

Classification metrics can't handle a mix of continuous and binary targets at
this point print('Accuracy over testing data is ', \
---> 29       accuracy_score(y_test, neural_model.predict_classes(x_test)))

有人可以帮我吗?

python tensorflow keras neural-network
1个回答
1
投票

您正在尝试对适合回归的数据集/任务进行classification。您的目标(y_train和y_test)是连续值,而不是离散类别。完整的方法需要更正。

  1. 最终致密层激活应从sigmoid更改为linearrelu
  2. compile功能中,loss应为mse
  3. 度量可以保留为空或再次设置为maemse
  4. 精度和混淆矩阵不能用于评估

您应该查看机器学习和神经网络的一些基本主题,特别是逻辑回归和线性回归之间的区别。

© www.soinside.com 2019 - 2024. All rights reserved.