gpt4 book ai didi

SVM 整数特征

转载 作者:行者123 更新时间:2023-12-04 18:12:54 25 4
gpt4 key购买 nike

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

最佳答案

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

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

因此,应将分类特征转换为将每个特征分解为每个可能类别的几个 bool 特征(值为 0.0 或 1.0)。看看DictVectorizer class在 scikit-learn 中更好地理解我所说的分类特征。

如果有数值,只需将它们转换为 float ,并可能使用 Scaler 将它们松散地置于 [-1, 1] 范围内。如果它们跨越几个数量级(例如单词出现的计数),那么采用计数的对数可能会产生更好的结果。更多关于特征预处理的文档和文档的这一部分:http://scikit-learn.org/stable/modules/preprocessing.html

编辑:另请阅读本指南,其中包含更多有关特征表示和预处理的详细信息:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

关于SVM 整数特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com