python - ValueError:未知标签类型:DecisionTreeClassifier() 中的“连续”
问题描述
我正在尝试创建一个模型来预测下面的结果列:
Date Open High Close Result
1/22/2010 25.95 31.29 30.89 0.176104
2/19/2010 23.98 24.22 23.60 -0.343760
3/19/2010 21.46 23.16 22.50 0.124994
4/23/2010 21.32 21.77 21.06 -0.765601
5/21/2010 55.41 55.85 49.06 0.302556
我正在使用的代码是:
import pandas
from sklearn.tree import DecisionTreeClassifier
dataset = pandas.read_csv('data.csv')
X = dataset.drop(columns=['Date','Result'])
y = dataset.drop(columns=['Date', 'Open', 'High', 'Close'])
model = DecisionTreeClassifier()
model.fit(X, y)
但我收到一个错误:
ValueError: Unknown label type: 'continuous'
也欢迎使用其他算法的建议。
解决方案
在 ML 中,首先要考虑问题的性质,这一点很重要。是回归问题还是分类问题?您是否有目标数据(监督学习),或者这是您没有目标并想更多地了解数据的固有结构(例如无监督学习)的问题。然后,考虑您需要在管道中采取哪些步骤来准备数据(预处理)。
在这种情况下,您将浮点数(浮点数)传递给分类器(DecisionTreeClassifier)。这样做的问题是分类器通常将不同的类分开,因此这个分类器期望一个string
或一个integer
类型来区分不同的类(这被称为“目标”)。您可以在分类器简介中了解更多相关信息。
您要解决的问题是确定一个连续的数值输出,Result
. 这被称为回归问题,因此您需要使用回归算法(例如DecisionTreeRegressor)。一旦你有了这个简单的回归算法,你就可以尝试其他回归算法,这是一个很好的起点,因为它是一个相当简单易懂的算法,它相当透明,速度快,易于实现 - 所以决策树是起点的绝佳选择!
作为进一步说明,考虑预处理数据很重要。您只需将目标与输入数据分开即可完成其中的一些操作:
X = dataset.drop(columns=['Date','Result'])
y = dataset.drop(columns=['Date', 'Open', 'High', 'Close'])
但是,您可能希望进一步研究预处理,特别是数据的标准化。这通常是您实施的任何 ML 算法都必须执行的步骤,以便能够解释您的数据。有句话叫:“垃圾进,垃圾出”。
预处理的一部分有时需要您更改给定列的数据类型。从表面上看,您的问题中发布的错误导致人们认为手头的问题是您需要更改数据类型。但是,正如所解释的,就您的问题而言,这样做无济于事,因为您寻求使用回归来确定连续输出。
推荐阅读
- angular - 如何使 matTooltip 以角度滚动
- python - 在python中自动访问列表元素
- pandas - 为什么在 Python 中通过 CSS 选择器定位元素仅在某些情况下有效?
- resources - Colab Pro 资源窗口不断出现
- c++ - cpp 尝试加载图像但没有响应的错误
- c# - 无法在 RaycastHit2D 上执行 If 语句,除了最上面的语句
- python - 如何将 2x2 的 matplotlib 网格的 y 值设置为共享常数?
- r - 为什么函数 svyCreateTableOne 有效,但我无法打印连续结果?
- import - 我们可以从 PowerBI 导入一个表两次吗
- azure-functions - Azure Functions - ObjectResult 呈现 JSON,但如何配置?