将大量标签数据转换为浮动模型以进行训练
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"]
我正在尝试使用下面的数据训练基本模型,但不幸的是,我遇到了一个我不确定如何解决的问题。
看起来像这样的数据框:
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"]