【问题标题】:ValueError in DecisionTreeClassifier决策树分类器中的 ValueError
【发布时间】:2021-09-23 11:22:00
【问题描述】:

这是我使用的决策树实现的链接。 https://www.geeksforgeeks.org/decision-tree-implementation-python/

我的数据框仅由“A”和“B”组成,每个都有 512 个值。

data

    1   2   ...      509     510    511    512
A   0.005190    0.00173 ... 0.001730    0.000577    0.002884    0.000577
A   0.000597    0.006567 ... 0.000597   0.000597    0.001194    0.001194
B   0.000582    0.010477 ... 0.001746   0.001164    0.001243    0.003108
A   0.009323    0.001865 ... 0.001865   0.001243    0.003108    0.000622
A   0.000531    0.003186 ... 0.003186   0.001593    0.002124    0.001062

...
X = data.values[:, 1:5]
Y = data.values[:, 0]

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.3, random_state = 100)

clf_gini = DecisionTreeClassifier(criterion = "gini", random_state = 100,max_depth=3, min_samples_leaf=5)
clf_gini.fit(X_train, y_train)

但是,当我调用 fit 函数时,它在最后一行代码中遇到了 valueerror。即使我更改了参数的值,它也不起作用。

ValueError                                Traceback (most recent call last)
<ipython-input-19-484db0a3d479> in <module>
      1 # Train with gini
      2 clf_gini = DecisionTreeClassifier(criterion = "gini", random_state = 100,max_depth=3, min_samples_leaf=5)
----> 3 clf_gini.fit(X_train, y_train)

~\anaconda3\envs\myenv\lib\site-packages\sklearn\tree\_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
    901         """
    902 
--> 903         super().fit(
    904             X, y,
    905             sample_weight=sample_weight,

~\anaconda3\envs\myenv\lib\site-packages\sklearn\tree\_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
    189 
    190         if is_classification:
--> 191             check_classification_targets(y)
    192             y = np.copy(y)
    193 

~\anaconda3\envs\myenv\lib\site-packages\sklearn\utils\multiclass.py in check_classification_targets(y)
    181     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    182                       'multilabel-indicator', 'multilabel-sequences']:
--> 183         raise ValueError("Unknown label type: %r" % y_type)
    184 
    185 

ValueError: Unknown label type: 'continuous'

我真的很困惑。有人可以帮我解决这个问题吗?欣赏它。

【问题讨论】:

    标签: scikit-learn decision-tree valueerror


    【解决方案1】:

    您的y 标签有问题。如果您的模型应该预测样本是否属于 AB 类,您应该根据您的数据集使用索引作为标签 y,如下所示,因为它包含类 ['A', 'B']

    X = data.values
    y = data.index.values
    

    data.values 将返回所有列值,而data.index.values 将索引作为 numpy 数组返回。

    【讨论】:

    • 哦,我明白了。我误解了y value。非常感谢。
    猜你喜欢
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2019-04-20
    • 2011-03-15
    • 2018-04-11
    • 2018-04-22
    • 2018-08-18
    相关资源
    最近更新 更多