如何在普通最小二乘回归图中使用 OneHotEncoder 输出

Posted

技术标签:

【中文标题】如何在普通最小二乘回归图中使用 OneHotEncoder 输出【英文标题】:How to use OneHotEncoder output in ordinary least squares regression plot 【发布时间】:2014-07-31 23:46:34 【问题描述】:

我一直在尝试使用 scikit-learn 库执行普通最小二乘回归,但遇到了另一块石头。

我使用 OneHotEncoder 对我的(独立)虚拟/分类特征进行二值化,并且我有一个像这样的数组:

x = [[ 1.  0.  0. ...,  0.  0.  0.]
     [ 1.  0.  0. ...,  0.  0.  0.]
     [ 0.  1.  0. ...,  0.  0.  0.]
     ..., 
     [ 0.  0.  0. ...,  0.  0.  0.]
     [ 0.  0.  1. ...,  0.  0.  0.]
     [ 1.  0.  0. ...,  0.  0.  0.]]

因变量 (Y) 存储在一维数组中。一切都很棒,除了现在我绘制这些值时出现错误:

# Plot outputs
pl.scatter(x_test, y_test, color='black')

ValueError: x and y must be the same size

当我分别在 X 和 Y 上使用 numpy.size 时,很明显这是一个合理的错误:

>>> print np.size(x)
5096
>>> print np.size(y)
98

有趣的是,这两组数据都被fit方法接受了。

我的问题是如何转换 OneHotEncoder 的输出以用于我的回归?

【问题讨论】:

您需要一个x_test.shape[1] + y_test.shape[1] 维散点图来可视化您的数据……我认为这不会发生。如果y 也是分类的,请尝试使用类似于mosaicplot 的内容从R 进行可视化。我不明白为什么不能散点图你的数据会阻止你对它进行回归。 感谢您回复我。仍然坚持这一点。由于 x 数组中的每个子列表都代表一个特征 - 我可以为 x 使用某种虚拟变量吗?只是不确定如何将系数映射到新变量并在图中使用它们。有任何想法吗?也是的,你是对的,回归当然有效——我的意思是说“在我的情节中使用”。谢谢。 【参考方案1】:

如果我理解正确,您的 X 矩阵作为 [mxn] 矩阵的输入和 [nx 1] 的一些输出 Y,其中 m = 特征数,n = 数据点数。

首先,线性回归拟合函数不会关心 X 的维度是 [m x n] 和 Y 的维度是 [n x 1],因为它会简单地使用维度 [1 x m] 的参数,即,

Y = theta * X

不幸的是,正如 eickenberg 所指出的,您无法像使用 matplotlibs scatter 调用那样根据 Y 值绘制所有 X 特征,因此您会收到尺寸不兼容的错误消息,它想要绘制 nxn 而不是 (nxm) x n.

要解决您的问题,请尝试一次查看一个功能:

pl.scatter(x_test[:,0], y_test, color='black')

假设您已将数据标准化(减去平均值并除以平均值),一种快速而肮脏的查看趋势的方法是将所有数据绘制在一个轴上:

fig = plt.figure(0)
ax = fig.add_subplot(111)

n, m = x_test.size
for i in range(m):
   ax.scatter(x_test[:,m], y_test)

plt.show()

要在独立图形上一次性可视化所有图形(取决于特征的数量),请查看 subplot2grid 例程或其他 python 模块(如 pandas)。

【讨论】:

以上是关于如何在普通最小二乘回归图中使用 OneHotEncoder 输出的主要内容,如果未能解决你的问题,请参考以下文章

R语言普通最小二乘(OLS)回归说明以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)Independence(独立性)Linearity(线性度)方差齐性)

最小二乘回归,岭回归,Lasso回归,弹性网络

spss 怎么用最小二乘估计求回归方程

r语言如何最小二乘线性回归分析

拓端tecdat|R语言编程指导用线性模型进行臭氧预测: 加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值

R语言中的偏最小二乘回归PLS-DA