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