问题描述
我有以下格式的数据。我正在使用神经网络通过神经网络回归预测三个参数停机时间、延迟和准确性。
Node No Model Technique Downtime Latency Accuracy
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','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'))#hidden layer
model.add(Dense(3))#output
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).
解决方法
我无法运行您的代码,因此我创建了类似的代码,当 pre_norms
的值为 NaN
时,我收到此错误。
我得到 pre_norms
和 NaN
因为 predictors
有列 No_Model
,Technique
有字符串和 predictors-predictors.mean()/predictors.std())
将它们转换为 {{1 }}
解决方案可能是删除列 NaN
但这会创建空数据 - 所以它没用。
我不知道您的完整代码,但您应该检查变量中的内容,如果您有 No_Model,Technique
,那么您的计算有误。
我认为您错过了一个重要步骤,即处理文本/分类属性。您的 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)