Python scikit learn中的机器学习算法是否必须将pandas dataframe转换为numpy数组

Python scikit learn中的机器学习算法是否必须将pandas dataframe转换为numpy数组,python,pandas,numpy,scikit-learn,Python,Pandas,Numpy,Scikit Learn,scikit learn中的机器学习算法是否必须将pandas dataframe转换为numpy数组 我知道to_numpy()函数进行转换。这意味着我也必须为dataframe中的分类列手动创建一个虚拟矩阵 如果我只是使用pandas dataframe作为scikit learn中的输入,会发生什么?如果我将pandas dataframe转换为numpy数组,那么这是否意味着我的列名不再保留在机器学习算法中?当涉及到模型诊断时,需要采取额外的步骤来协调列名与numpy数组?提供浮动数组是

scikit learn中的机器学习算法是否必须将pandas dataframe转换为numpy数组

我知道
to_numpy()
函数进行转换。这意味着我也必须为dataframe中的分类列手动创建一个虚拟矩阵


如果我只是使用pandas dataframe作为scikit learn中的输入,会发生什么?如果我将pandas dataframe转换为numpy数组,那么这是否意味着我的列名不再保留在机器学习算法中?当涉及到模型诊断时,需要采取额外的步骤来协调列名与numpy数组?

提供浮动数组是一种安全的选择,但不是必须的。您提供的任何内容都将尝试在内部转换为numpy数组。如果它不是类似于(见下文)的数组,则会引发异常

如果你举个例子,你会发现在
sklearn
中,他们有一个类似
数组的概念。有关以下内容,请参见docstring示例:

形状的X{类数组,稀疏矩阵}(n_样本,n_特征) 训练输入样本。在内部,其dtype将转换为dtype=np.float32。如果提供稀疏矩阵,它将转换为稀疏csc_矩阵

通过阅读以下内容,您可以进一步了解什么是类似于
数组的

类似于数组的
Scikit学习估计器和函数输入的最常见的数据格式,类似于数组,是任何类型的对象,numpy.asarray将为其生成适当形状(通常为1或2维)的适当数据类型(通常为数字)的数组

这包括:

  • numpy数组

  • 数字表

  • 长度为k的列表某些固定长度k的数字列表

  • 具有所有数值列的pandas.DataFrame

  • 一个数字系列

它不包括:

  • 稀疏矩阵

  • 迭代器

  • 发电机

如果您查看,您会发现您提供给方法的数据将通过
self.\u validate\u data
进行转换


您总是可以事先检查您的数据是否被接受,但这没有太多实际意义,因为当您将数据提供给方法时,无论如何都会为您进行检查。

如果函数说它需要一个数据帧。。。。但是如果它说
array
,它可以使用
np.asarray
来确保它是这样的。您可以阅读代码以确定。检查它的作用。它可以将操作委托给
给\u numpy
。阅读文档,如果不清楚,请阅读[来源]。谢谢您的回答。如果我提供numpy数组,则不会保留列名,并且在模型拟合后,我必须将列名与numpy数组协调。我说的对吗?如果你需要的话,可以。没有别的。