### LSTM模型在多类分类中仅分类一个类别

我编写了Python代码,使用LSTM对降雨数据集进行不平衡的多类分类,输入变量是以数值形式表示的温度、阳光和湿度,目标有四个类别:无雨、轻雨、中雨和大雨,但模型在混淆矩阵中如以下代码所示仅分类出一个类别。

我还尝试了SMOTE和类权重技术来平衡类别,但结果没有变化。

有谁能帮助我提供完整的LSTM代码用于不平衡的多类分类吗?

混淆矩阵

数据集截图

这段代码不需要翻译

回答:

我认为你的代码中有一些错误。例如,你没有解释为什么要对标签调用stats.mode(labels)。此外,我无法判断你是否正确使用了SMOTE等技术。

然而,由于你无法在StackOverflow上提供任何数据,我从Kaggle上获取了澳大利亚降雨数据集。

它看起来与你的数据集非常相似。最大的区别是我们只有两个类别用于“明天是否会下雨”:yesno。但它也相当不平衡:

yes   77%no    23%

我实现了一个简单的模型,并进行了一些非常简单的预处理(所以所有这些都可能有很大的改进空间)。然而,这应该足以让你从这个例子中学习并与你的进行比较。简单地从这里下载数据并尝试一下。

在没有任何调整和平衡的情况下,我能够在测试数据上获得大约82%的准确率。在Kaggle上我看到人们在这个数据集上获得了88%的准确率,所以我们肯定可以改进我们的模型。

你需要做的就是确保weatherAUS.csv在你的系统上可用,并且你已经安装了TensorFlow(我使用的是2.4.1版本)和其他依赖项。

之后,你应该能够修改代码以使其在你的数据集上运行。现在,先不考虑不平衡数据。一旦你的模型开始预测更合理的结果,我们可以尝试通过使用一些平衡技术来改进它。

代码(适用于weatherAUS.csv)

这段代码不需要翻译

输出

这段输出不需要翻译

针对原始问题数据的代码与结果

注意:提供的数据集非常小(约3000个样本)。

这段代码不需要翻译

enter image description here

这段输出不需要翻译

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注