我将数据集拆分为X_train
,Y_train
,X_test
和Y_test
,然后使用了symbolicRegressor ...
我已经将Dataframe中的字符串值转换为浮点值。
但是应用symbolicRegressor
会出现此错误:
ValueError:无法将字符串转换为float:'d'
'd'是Y中的值。
由于我在Y_train
和Y_test
中的所有值都是字母字符,因为它们是“标签”,所以我不明白为什么symbolicRegressor
试图获取浮点数.. < / p>
有什么主意吗?
答案 0 :(得分:0)
根据https://gplearn.readthedocs.io/en/stable/index.html
-“符号回归是一种旨在识别最能描述关系的基础数学表达式的机器学习技术”。注意mathematical
。我对问题的话题不太擅长,gplearn
的描述也没有明确定义适用范围/限制范围。
但是,根据源代码https://gplearn.readthedocs.io/en/stable/_modules/gplearn/genetic.html
,fit()
类的方法BaseSymbolic
包含行X, y = check_X_y(X, y, y_numeric=True)
,其中check_X_y()
是sklearn.utils.validation.check_X_y()
。参数y_numeris
的意思是:“是否确保y具有数字类型。如果y的dtype是对象,则将其转换为float64。应仅用于回归算法。”
因此y
的值必须是数字。
答案 1 :(得分:0)
很抱歉重播。 gplearn
支持使用SymbolicRegressor
估计量进行回归(数字y),而对于新发布的gplearn 0.4.0
,我们也支持使用SymbolicClassifier
进行二进制分类(y中的两个标签)。不过从事态发展来看,您遇到了gplearn
当前不支持的多标签问题。这可能是我们将来希望支持的事情。