将 float64 数据类型与 scikit-learn ML 算法一起使用是不是合适?

Posted

技术标签:

【中文标题】将 float64 数据类型与 scikit-learn ML 算法一起使用是不是合适?【英文标题】:is it proper to use float64 data type with scikit-learn ML algorithms?将 float64 数据类型与 scikit-learn ML 算法一起使用是否合适? 【发布时间】:2015-04-26 17:05:00 【问题描述】:

我正在尝试使用 scikit-learn 为给定 here 的数据集执行决策树和 SVM。我的目的是比较这两种算法,以便我对这两种算法都使用 KFold 交叉验证方法并显示差异。但是我正在使用的数据集包含实数,例如 0.00057。我得到的准确性可以说没有过度拟合,但我不确定实数是否会影响结果。

给scikit-learn内置分类函数实数有问题吗?如果是,我应该怎么做才能得到更好的结果?

PS:当我在 python 中检查单个数据的类型时,我发现它是 float64。

【问题讨论】:

实数是什么意思? float64 的精度比 0.00057 高得多,当您获得结果时,您要么要求对预测类别进行分类,要么要求进行一些其他评估,例如概率似然或置信度,所有这些都将在 float64 中计算 我的意思是实数的高精度数字。当我将数据集加载到二维数组中时,python 将数组的类型设置为 float64。我想知道在执行分类拟合或预测函数时使用其他数据类型是否更好。 您的数据将被转换为 sklearn 支持的兼容 dtypes,因此除非您的数据的精度高于 float64,否则应该不是问题 因此在执行算法时无需担心数据类型。谢谢! 我担心你的数字范围。通常,standardize 您的数据会有所帮助,也就是说,使其具有零均值和单位变化。 【参考方案1】:

DecisionTreeClassifier 和 SVC 在内部使用 float32 来表示特征。他们会将任何输入数据转换为这种格式。对于机器学习任务,这通常是绰绰有余的。

【讨论】:

以上是关于将 float64 数据类型与 scikit-learn ML 算法一起使用是不是合适?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据类型更改为 float64 以便 sklearn 可以处理数据大于 np.float32 的数据帧

在Julia时间将数据类型UInt64更改为Float

将 numpy 数组类型和值从 Float64 转换为 Float32

Java的基本数据类型与运算符

Kotlin基本数据类型

将 float64 类型的 np.array 转换为 uint8 类型的缩放值