我有以下格式的数据。我使用神经网络回归来预测三个参数:停机时间、延迟和准确性。
节点号 模型 技术 停机时间 延迟 准确性
1 Net Repartition 0.90 31368.5 0.99
2 Net Pause 0.10 21368.5 0.89
3 Mobile Repartition 0.49 41368.5 0.79
4 Net Pause 0.80 51368.5 0.98
代码
pre_norms = (predictors-predictors.mean()/predictors.std())
pre_norms.head()
predictors=data.drop(['Downtime','Latency','Accuracy'], axis = 1)
target=data[['Downtime', 'Latency', 'Accuracy']]
n_cols= pre_norms.shape[1]
def regression():
model=Sequential()
model.add(Dense(50, activation= 'relu',input_shape=(n_cols,)))
model.add(Dense(50, activation='relu'))#隐藏层
model.add(Dense(3))#输出
model.compile(optimizer='adam',loss='mean_squared_error')
return model
model=regression()
model.fit(pre_norms, target,validation_split=.3,epochs=100,verbose=1)
错误
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
回答:
我认为你漏掉了一个重要的步骤,即处理文本/分类属性。你的Model
和Technique
需要转换为数字。一种方法是
predictors_cat_converted=pd.get_dummies(predictors, prefix=['Model', 'Technique'])
现在所有的文本都已转换为数字,你可以使用这些转换后的数据运行模型。
n_cols=predictors_cat_converted.shape[1]
model=regression()
model.fit(predictors_cat_converted, target,validation_split=.3,epochs=100,verbose=1)