scikit-learn,线性回归中的分类(但数字)特征

Posted

技术标签:

【中文标题】scikit-learn,线性回归中的分类(但数字)特征【英文标题】:scikit-learn, categorical (but numerical) features in Linear Regression 【发布时间】:2020-08-08 03:15:40 【问题描述】:

我在 scikit-learn 中使用线性回归,我的数据集包含一些分类但数字特征。 我的意思是有一些特征,比如房子所在地区的价值,用1到7之间的整数表示:这个数字越大,房子越值钱。 我是否应该在使用 OneHotEncoder 等编码器进行线性回归之前使用数字预处理表示类别(城市区域)的特征?还是仅当类别用字符表示时才强制? 提前谢谢你..

【问题讨论】:

考虑如果你做one-hot编码,你的维度会增加,它会引入其他问题。解决分类变量问题的一种技术是将它们分组并计算每个组的目标变量的平均值对它们进行排序并用其在排序中的排名替换每个类别。 @HamedAlipour 感谢您的回复。您建议的方法似乎很有趣。你知道我在哪里可以找到这样的例子来更好地理解它吗? 不客气,我找不到描述这种方法的博客,但请查看brendanhasz.github.io/2019/03/04/target-encoding.html 并搜索“平均编码” 【参考方案1】:

如果我理解正确,您不需要对它们进行一次热编码,因为它们是序数,即顺序有意义。例如,如果数字是产品代码,并且没有感觉 7 是“优于”或“超过”4,那么您可能希望对这些变量进行一次性编码,但在这种情况下,您将丢失信息通过 one-hot 编码。

【讨论】:

即使这些值是有序的,它们也应该是 one-hot-encoded,因为关系可能不是线性的。例如,类别 1-2 之间的差异可能远大于类别 5-6 之间的差异。 我想这可能是真的,但似乎它们可能只是房屋价值或类似东西的垃圾箱,在这种情况下,关系会更简单。你是对的,如果不是这种情况,那么 one-hot 编码会更有效。 感谢大家有趣的回复和cmets

以上是关于scikit-learn,线性回归中的分类(但数字)特征的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn的线性回归模型

scikit-learn学习基础知识一

机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归多项式回归与多元线性回归

scikit-learn 中的线性回归

如何修复我在 scikit-learn 中的线性回归中遇到的错误

在多元线性回归 Python 中处理分类变量和数值变量