我正在尝试创建一个模型来预测下面的结果列:
Date Open High Close Result1/22/2010 25.95 31.29 30.89 0.1761042/19/2010 23.98 24.22 23.60 -0.3437603/19/2010 21.46 23.16 22.50 0.1249944/23/2010 21.32 21.77 21.06 -0.7656015/21/2010 55.41 55.85 49.06 0.302556
我使用的代码是:
但我得到了一个错误:
ValueError: Unknown label type: 'continuous'
也欢迎提出使用其他算法的建议。
回答:
在机器学习中,第一步需要考虑问题的性质非常重要。这是回归还是分类问题?你是否有目标数据(监督学习),还是这是一个没有目标且想要了解数据内在结构的问题(如无监督学习)。然后,考虑在你的数据处理流程中需要采取哪些步骤来准备数据(预处理)。
在这种情况下,你将浮点数传递给了分类器(DecisionTreeClassifier)。这样做的问题在于,分类器通常用于区分不同的类别,因此这个分类器期望一个string
或integer
类型来区分不同的类别(这被称为“目标”)。你可以在分类器的介绍中阅读更多相关内容。
你试图解决的问题是确定一个连续的数值输出,Result
。这被称为回归问题,因此你需要使用回归算法(如DecisionTreeRegressor)。一旦你让这个简单的算法工作起来,你可以尝试其他回归算法,这是一个很好的起点,因为它相当简单易懂,透明度高,速度快,易于实现——因此决策树是一个很好的起点!
进一步来说,考虑对数据进行预处理是很重要的。你已经通过将目标数据与输入数据分离开来做了一些预处理:
X = dataset.drop(columns=['Date','Result'])y = dataset.drop(columns=['Date', 'Open', 'High', 'Close'])
然而,你可能希望进一步研究预处理,特别是标准化你的数据。这通常是实现的任何机器学习算法能够解释你的数据所需的一个步骤。有一句谚语说:“垃圾输入,垃圾输出”。
预处理有时需要更改给定列的数据类型。你在问题中发布的错误,从表面上看,让人认为手头的问题是你需要更改数据类型。但正如解释的那样,在你的问题情况下,这样做没有帮助,因为你寻求使用回归来确定一个连续的输出。