Machine learning 第一次运行机器学习项目

Machine learning 第一次运行机器学习项目,machine-learning,keras,Machine Learning,Keras,我正在尝试运行我的第一个机器学习项目,使用Keras。我无法摆脱这个错误: TypeError: If class_mode="categorical", y_col="Label" column values must be type string, list or tuple. 我的代码如下所示: # Load train images in batches from directory and apply augmentations train_data_generato

我正在尝试运行我的第一个机器学习项目,使用Keras。我无法摆脱这个错误:

TypeError: If class_mode="categorical", y_col="Label" column values must be type string, list or tuple.
我的代码如下所示:

# Load train images in batches from directory and apply augmentations
        train_data_generator = train_data_generator.flow_from_dataframe(
            train_dataframe,
            IMG_DIRECTORY,
            x_col="Filename",
            y_col="Label",
            target_size=RAW_IMG_SIZE,
            batch_size=BATCH_SIZE,
            classes=CLASSES,
            class_mode="categorical")
        # Load validation images in batches from directory and apply rescaling
        val_data_generator = val_data_generator.flow_from_dataframe(
            val_dataframe,
            IMG_DIRECTORY,
            x_col="Filename",
            y_col="Label",
            target_size=RAW_IMG_SIZE,
            batch_size=BATCH_SIZE,
            classes=CLASSES,
            class_mode="categorical")
        # Load test images in batches from directory and apply rescaling
        test_data_generator = test_data_generator.flow_from_dataframe(
            test_dataframe,
            IMG_DIRECTORY,
            x_col="Filename",
            y_col="Label",
            target_size=IMG_SIZE,
            batch_size=BATCH_SIZE,
            shuffle=False,
            classes=CLASSES,
            class_mode="categorical")
这是我使用y_col的仅有3个地方,我看不出导致该错误的问题是什么。

您可以使用以下命令更改列标签的数据类型:

dataframe.Label=dataframe.Label.astype(str)
您可以使用以下命令更改列标签的数据类型:

dataframe.Label=dataframe.Label.astype(str)

但如果它还不是一个字符串,这可能是一个很好的理由。这可能是整数或浮点数,然后将其转换为字符串将是不好的。它可能会阻止崩溃,但预测能力将是垃圾。@user12不,它(很可能)不会。我只是不再得到那个错误了。老实说,我不知道现在是否合适,我对这方面真的是新手。在user12:一些关于实际标签的上下文在这里会很有帮助。然后我们可能会在您的整体设置方面提供更多帮助@Keldorn请更详细地解释为什么这里的预测能力是垃圾。我认为问题在于图像分类,在这种分类中,转换为字符串可能不会带来任何问题。想想MNIST数字分类与图像。在这里我不明白,为什么字符串代表“1”、“2”。。。这将是一个问题。这就是说:我认为用数字来代替字符串表示没有任何意义。对,我不应该说将整数转换成字符串一定不好。对于MNIST来说,这是正确的做法。但在其他情况下可能会很糟糕。从最初的问题我们不知道,这里没有足够的信息告诉我们这是正确的做法。但是如果它还不是一个字符串,这可能是一个很好的理由。这可能是整数或浮点数,然后将其转换为字符串将是不好的。它可能会阻止崩溃,但预测能力将是垃圾。@user12不,它(很可能)不会。我只是不再得到那个错误了。老实说,我不知道现在是否合适,我对这方面真的是新手。在user12:一些关于实际标签的上下文在这里会很有帮助。然后我们可能会在您的整体设置方面提供更多帮助@Keldorn请更详细地解释为什么这里的预测能力是垃圾。我认为问题在于图像分类,在这种分类中,转换为字符串可能不会带来任何问题。想想MNIST数字分类与图像。在这里我不明白,为什么字符串代表“1”、“2”。。。这将是一个问题。这就是说:我认为用数字来代替字符串表示没有任何意义。对,我不应该说将整数转换成字符串一定不好。对于MNIST来说,这是正确的做法。但在其他情况下可能会很糟糕。从最初的问题我们不知道,这里没有足够的信息告诉我们这是正确的做法。