提问者:小点点

ValueError:无法将字符串转换为浮点:“observation”


我正在尝试使编码来运行我的模型。 下面是我运行的代码和错误:

我要转换两列。 (日期和国家ID)

df["ID"] = pd.get_dummies(df.CountryID, prefix='CountryID')
df["Date"] = pd.get_dummies(df.Date, prefix='Date')
y=df.IndustrialP
X=df.drop('IndustrialP', axis=1)
split = int(len(df)*0.8)
X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, y, epochs=10, batch_size=10)

并且我正在得到以下错误(DE在这里是德国的代码,它是CountryID列下的观察)

值错误:无法将字符串转换为浮点:“de”

我该怎么解决呢? 谢了。


共1个答案

匿名用户

我认为您需要从数据框架中删除countyid,以便适合模型。 您可能还希望删除date,因为您正在为此生成假体。 (date如果包含它,可能不会导致错误,因为日期可能会静默地转换为数字;但是,由于您对日期使用了假数,我想您不希望日期本身成为模型中的变量。)

我有点不明白为什么你没有从这些语句中得到错误:

df["ID"] = pd.get_dummies(df.CountryID, prefix='CountryID')
df["Date"] = pd.get_dummies(df.Date, prefix='Date')

get_dummies()生成数据帧。 将其分配到另一个数据框架的单个列中不应该起作用。 当我尝试使用简单的虚拟数据时,我得到了一个错误。

我的最佳猜测是,您使用的测试数据实际上在这些列中的每一列中只有一个值。 这将导致get_dummies()返回一个单列数据帧,在这种情况下,赋值应该有效。

如果是这种情况,那么当您使用具有更多唯一值的数据时,这种逻辑将不起作用。 我认为您希望将虚拟数据帧连接到原始数据帧上(或连接到x)。