将大量标签数据转换为浮动模型以进行训练

Transforming large list of label data to float for model to train

我正在尝试使用下面的数据训练基本模型,但不幸的是,我遇到了一个我不确定如何解决的问题。

看起来像这样的数据框:

index Author    Line1   Line2   Line3
0     Author1   13.8    6.16    0.75
1     Author1   14.13   6.09    0.8
2     Author1   20.5    15.91   0.8
3     Author2   12.45   6.35    0.83
4     Author2   15.91   6.09    0.81
...
100105 Author125 15.91   6.16    0.8

我已将数据帧数据和标签分开,使用以下代码进行训练和测试:

from sklearn.model_selection import train_test_split
Data_train, Data_test, Labels_train, Labels_test = train_test_split(df[["Line1", "Line2", "Line3"]], df["Author"], test_size=0.2, random_state=42, shuffle="true")

当我尝试在我的模型中使用这些数据时:

model = keras.Sequential( 
    [
        keras.layers.Dense(
            3, activation="relu", input_shape=(Data_train.shape[-1],)
        ),
        keras.layers.Dense(256, activation="relu"),
        keras.layers.Dropout(0.3),
        keras.layers.Dense(256, activation="relu"),
        keras.layers.Dropout(0.3),
        keras.layers.Dense(1, activation="sigmoid"),
    ]
)
model.compile(optimizer='adam', 
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
history = model.fit(Data_train, Labels_train, epochs=10, 
                    validation_data=(Data_test, Labels_test))

我收到错误: 节点:'Cast_1' 不支持将字符串转换为浮点数

我相信我必须以某种方式将标签作为浮点数传递,我找到了一种使用“MultiLabelBinarizer”使标签成为二进制文件的方法,但是因为我有超过 100 个标签,所以我认为它行不通,而且我我不确定我是否应该在使用 train_test_split 分离数据之前或之后这样做,如果可以,也许有人可以帮助我?

此外,如果有人对我的模型有任何建议,请随时帮助我改进它。

使用此代码,我将标签更改为数字并能够将其提供给网络:

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
df["Author"] = le.fit_transform(df["Author"])
df["Author"]