ValueError: 无法将字符串转换为浮点数: ‘ ‘. 排列重要性是否仅适用于数值特征?

我有一个包含类别型、浮点型和整数型数据类型的DataFrame。
X – 包含所有三种给定数据类型的特征,而y是整数。
我创建了一个如下所示的管道。

get_imputer():    填补函数get_encoder():    某种编码函数#模型管道 = Pipeline(steps=[        ('imputer', get_imputer()),        ('encoder', get_encoder()),        ('regressor', RandomForestRegressor())    ])

我需要找出模型的排列重要性。以下是相应的代码。

import eli5from eli5.sklearn import PermutationImportanceperm = PermutationImportance(pipeline.steps[2][1], random_state=1).fit(X, y)eli5.show_weights(perm)

但这段代码抛出了如下错误:

ValueError: could not convert string to float: ''

回答:

让我们简要了解一下PermutationImportance的工作原理。

在您使用所有特征训练模型后,PermutationImportance会打乱列/列的值,并检查对损失函数的影响。

例如:

有5个特征(列)和n行:

f1 f2 f3 f4 f5

v1 v2 v3 v4 v5v6 v7 v8 v9 v10…vt . . . .

现在,要确定f3列是否重要,它会打乱f3列中的值。例如,将x行中的f3值与y行中的f3值交换,然后检查对损失函数的影响。因此,确定特征在模型中的重要性。

现在,为了回答这个问题,我会说任何模型在训练时,所有特征都应该是数值的(因为机器学习模型无法直接理解文本)。所以,在您的PermutationImportance参数中,您需要提供数值列。因为您在将类别/文本转换为数字后训练了一个模型,您需要对新的输入应用相同的转换策略。

因此,PermutationImportance应该仅在您的数据经过预处理且DataFrame中的所有数据都是数值时使用。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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