朴素贝叶斯高斯抛出 ValueError:无法将字符串转换为浮点数:'M'

Posted

技术标签:

【中文标题】朴素贝叶斯高斯抛出 ValueError:无法将字符串转换为浮点数:\'M\'【英文标题】:Naive Bayes Gaussian throwing ValueError: could not convert string to float: 'M'朴素贝叶斯高斯抛出 ValueError:无法将字符串转换为浮点数:'M' 【发布时间】:2020-02-01 09:18:54 【问题描述】:

将某些特征的值从整数替换为字符串后,在 fit() 命令后出现错误:

错误 - ValueError:无法将字符串转换为浮点数:'M'

replace_val_sex = 0:'F', 1:'M'
df = df.replace("Sex": replace_val_sex)
.
.
.
GNB = GaussianNB().fit(x_train, y_train)
<ERROR>

注意:当我没有替换这些值时,这并没有发生。

【问题讨论】:

模型不只需要数值作为输入吗?为什么要发送字符串? 模型需要数字,而不是字符串。 Sklearn 甚至有 LabelEncoder 将字符串转换为数字,然后再将数字转换为字符串。 顺便说一句:教程Naive Bayes Classification using Scikit-learn 展示了如何将LabelEncoderGaussianNB 一起使用 【参考方案1】:

据我了解,您对朴素贝叶斯算法和高斯朴素贝叶斯算法感到困惑。让我们在遇到问题的上下文中一一查看,

朴素贝叶斯: 朴素贝叶斯或朴素贝叶斯分类器算法是关于计算具有条件独立性的事件的概率。因此,概率是使用特征中的类数来计算的。功能的此输入取决于您使用的工具。

高斯朴素贝叶斯: 该算法的基本假设是所有特征都是连续的。术语“高斯”是连续的同义词。在这个算法中,我们试图用其他连续输出特征来预测一个连续输出特征。因此,无论我们使用何种软件(或)工具,特征都被限制为数值(或)连续的。

由于您使用的是 GaussianNB(预计这是来自 ScikitLearn),因此输入特征应该是数值的

【讨论】:

哦,明白了。非常感谢您花时间和解释。 如果您觉得我有用,请提供您的查询已解决并点赞...谢谢.. 我想但我不能,因为我没有足够的声望来投票。对不起。如果您可以投票支持我的问题,我将获得一位代表。很快,一旦我获得 15 次代表,我就会支持它。谢谢 如果可能的话,请为我的答案投票,我已经投票赞成你的问题 非常感谢,我只落后 1 个代表来支持答案。你去吧。我也为你的回答做了。

以上是关于朴素贝叶斯高斯抛出 ValueError:无法将字符串转换为浮点数:'M'的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯:朴素贝叶斯定义朴素贝叶斯公式分解朴素贝叶斯分类流程高斯型朴素贝叶斯多项式朴素贝叶斯伯努利型朴素贝叶斯朴素贝叶斯预测概率校准朴素贝叶斯优缺点

高斯朴素贝叶斯分类

三种常用的朴素贝叶斯实现算法——高斯朴素贝叶斯伯努利朴素贝叶斯多项式朴素贝叶斯

sklearn 高斯朴素贝叶斯 - 为啥是“高斯”?

贝叶斯方法—高斯,多项式,伯努利朴素贝叶斯分类

机器学习:贝叶斯分类器——高斯朴素贝叶斯分类器代码实现