【发布时间】:2020-07-14 05:18:21
【问题描述】:
我对深度学习真的很陌生。我想做一个任务:根据测试数据评估模型并计算预测混凝土强度和实际混凝土强度之间的均方误差。您可以使用 Scikit-learn 中的 mean_squared_error 函数。
这是我的代码:
import pandas as pd
from tensorflow.python.keras import Sequential
from tensorflow.python.keras.layers import Dense
from sklearn.model_selection import train_test_split
concrete_data = pd.read_csv('https://cocl.us/concrete_data')
n_cols = concrete_data.shape[1]
model = Sequential()
model.add(Dense(units=10, activation='relu', input_shape=(n_cols-1,)))
model.compile(loss='mean_squared_error',
optimizer='adam')
y = concrete_data.Cement
x = concrete_data.drop('Cement', axis=1)
xTrain, xTest, yTrain, yTest = train_test_split(x, y, test_size = 0.3)
model.fit(xTrain, yTrain, epochs=50)
现在为了评估均方误差,我写了这个:
from sklearn.metrics import mean_squared_error
predicted_y = model.predict(xTest)
mean_squared_error(yTest, predicted_y)
我得到了这个错误:
y_true and y_pred have different number of output (1!=10)
我的 predict_y 形状是:(309, 10)
我用谷歌搜索了它,我真的找不到解决这个问题的答案。我不知道我的代码有什么问题。
【问题讨论】:
-
你用的是什么型号的?
-
还有你通过
predicted_y.shape得到什么 -
@yatu 谢谢你的回复。我的模型是连续的,predicted_y 形状是 (309, 10)
-
是多标签问题吗?为什么你有 10 列
-
@yatu 不,不是。我用我写的完整代码编辑了我的问题。但也许我犯了一些错误。嗯,这是我在 ML 中的第一个任务,所以我不确定我是否做对了
标签: python machine-learning scikit-learn mse