Svm 支持向量机整数特征

Svm 支持向量机整数特征,svm,scikit-learn,Svm,Scikit Learn,我正在python的机器学习scikit学习包中使用SVM分类器。 我的特征是整数。当我调用fit函数时,我得到用户警告“Scaler假设浮点值作为输入,得到int32”,SVM返回其预测,我计算混淆矩阵(我有2个类)和预测精度。 我试图避免用户警告,所以我将这些功能保存为浮动。的确,警告消失了,但我得到了一个完全不同的混淆矩阵和预测准确度(令人惊讶的是,准确度要低得多) 有人知道为什么会这样吗?更可取的是,我应该以浮点或整数的形式发送特征吗? 谢谢 您应该将它们转换为浮点数,但转换方式取决于整

我正在python的机器学习scikit学习包中使用SVM分类器。 我的特征是整数。当我调用fit函数时,我得到用户警告“Scaler假设浮点值作为输入,得到int32”,SVM返回其预测,我计算混淆矩阵(我有2个类)和预测精度。 我试图避免用户警告,所以我将这些功能保存为浮动。的确,警告消失了,但我得到了一个完全不同的混淆矩阵和预测准确度(令人惊讶的是,准确度要低得多) 有人知道为什么会这样吗?更可取的是,我应该以浮点或整数的形式发送特征吗?
谢谢

您应该将它们转换为浮点数,但转换方式取决于整数特征实际表示的内容

你的整数是什么意思?它们是类别成员指标(例如:1==体育,2==商业,3==媒体,4==人…)还是具有顺序关系的数字度量(3大于2,反过来又大于1)。例如,你不能说“人”比“媒体”大。这是毫无意义的,如果给它这个假设,会混淆机器学习算法

因此,应转换分类特征,将每个特征分解为每个可能类别的几个布尔特征(值为0.0或1.0)。看一看scikit中的,以更好地理解我所说的分类功能的含义

如果有数值,只需将其转换为浮点数,并可能使用定标器使其松散地位于范围[-1,1]内。如果它们跨越几个数量级(例如单词出现次数),则取计数的对数可能会产生更好的结果。有关功能预处理的更多文档和示例,请参见本节文档:


编辑:也请阅读本指南,其中包含有关功能表示和预处理的更多详细信息:

首选浮点,因为整数将被复制/转换为浮点数组,因此会浪费内存。但奇怪的是,你会得到不同的结果。谢谢!我的功能是具有订单关系的数字度量,范围为0-9。我刚刚用浮子铸造法把浮子转换成了浮子。奇怪的是,它给了我不同的结果。你能用一个最低限度的复制案例(python脚本+数据子集)来填写一份bug报告吗?它在上展示了问题,在上展示了新问题的链接?