当前位置: 首页 > 面试题库 >

为什么scikit-learn对于不同的回归变量需要不同的数据形状?

乐正焕
2023-03-14
问题内容

在使用时,我总是发现自己在重塑数据sklearn,这很烦人并且使我的代码很难看。为什么不能使库能够处理各种数据形状并进行适当的解释?例如,要使用线性回归器,我需要

from sklearn.linear_model import LinearRegression
x = np.random.rand(10).reshape(-1,1)
y = np.random.rand(10).reshape(-1,1)
regr = LinearRegression()
regr.fit(x,y)

但是,如果我想使用支持向量回归器,则无需重塑自变量:

from sklearn.svm import SVR
x = np.random.rand(10).reshape(-1,1)
y = np.random.rand(10)
regr = SVR()
regr.fit(x,y)

我认为以这种方式设计库是有原因的。谁能照亮我?


问题答案:

当你这样做y = np.random.rand(10),y是 一个维数组
[10,]。它是行向量还是列向量都没有关系。它只是一个只有一个维度的向量。
它是“ numpy哲学 ”的一部分。而sklearn取决于numpy。

至于您的评论:

为什么sklearn无法自动理解,如果我将其传递给n_samples = n和n_features = 1的形状(n,)

sklearn 可能无法 仅基于X数据推断n_samples=n and n_features=1n_samples=1 and n_features=n)是否绕过()。如果传递了y,则可以这样做,这可以使清楚n_samples

但这意味着更改所有依赖于这种语义的代码,并且可能会破坏很多事情,因为这 严重sklearn依赖于numpy操作。

您可能还需要检查以下讨论类似问题的链接。

  • https://github.com/scikit-learn/scikit-learn/issues/4509
  • https://github.com/scikit-learn/scikit-learn/issues/4512
  • https://github.com/scikit-learn/scikit-learn/issues/4466
  • https://github.com/scikit-learn/scikit-learn/pull/5152


 类似资料:
  • 我总是发现自己在使用时会重塑我的数据,这很烦人,让我的代码变得丑陋。为什么不能使库能够处理各种数据形状并进行适当的解释?例如,要使用线性回归量,我需要做 但是如果我想使用支持向量回归器,那么我不会重塑自变量: 我想图书馆以这种方式设计是有原因的。任何人都可以照亮我吗?

  • 我正在使用Microsoft Graph Users API根据我们的ActiveDirectory验证用户名或电子邮件地址列表。名称搜索: https://graph.microsoft.com/v1.0/me/people/?$search=John.Smith 返回其他数据,如和。但如果我使用电子邮件搜索: null 我是否需要额外的权限来获取相同的数据? 更新:我按照下面的建议在https

  • C:\python27\arcgis10.1;C:\python27\arcgis10.1\scripts;C:\python27\arcgis10.1\lib\site-packages\osgeo;C:\program Files(x86)\common Files\intergraph\grid Analysis sdk\1.0\program;%systemroot%\systemroot

  • 当我用)运算符使用双引号,并与其他字符串文字值相同的结果为true...为什么会这样? 据我所知,当我们使用()操作符处理字符串时,JVM返回新的,它在堆内存中创建一个新的字符串实例,并在字符串池中创建一个引用。如果这是真的,那么它如何在一个场景中返回true,在另一个场景中返回false? 第一种情况: 第二个场景: 有人能帮我吗?

  • 二类分类问题 逻辑回归最广泛的应用就是二类分类,我们以脏话判别为例来利用逻辑回归,对一句话做脏话分析判断 输入样本如下: 是脏话:fuck you 是脏话:fuck you all 不是脏话:hello everyone 我们来预测以下两句话是否是脏话: fuck me hello boy # coding:utf-8 import sys reload(sys) sys.setdefault

  • 问题内容: 我在dos.oracle.com上找到了这个 公共静态列表syncedList(列表列表) 返回由指定列表支持的同步(线程安全)列表。为了保证串行访问,至关重要的是,对后备列表的所有访问都必须通过返回的列表来完成。当用户遍历返回列表时,必须手动对其进行同步: 我的问题是:如果应该返回已经同步的列表,为什么我必须同步列表以对其进行迭代? 我只是在两个线程中访问列表:一个线程只是添加,另一