【问题标题】:Ridge Regression Based on sklearn基于sklearn的岭回归
【发布时间】:2022-01-20 19:47:04
【问题描述】:

基于 Numpy,创建数据 x 并标注 y 来训练岭回归模型,然后使用另一个创建的 x 和 y 来预测回归。正确预测的百分比仅为 14/64。我不知道问题出在哪里。下面是我的代码。

import numpy as np
from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import Ridge

one_hot = OneHotEncoder(sparse=False)

x = np.random.rand(64,40) * 2 - 1
y = np.random.randint(0,5,(64,))
y = one_hot.fit_transform(y.reshape(-1,1))
clf = Ridge(alpha=1.0)
readout = clf.fit(x,y)

a = np.random.rand(64,40) * 2 - 1
b = np.random.randint(0,5,(64,))
b = one_hot.fit_transform(b.reshape(-1,1))
y_hat = readout.predict(a)
y_hat = np.argmax(y_hat,axis=1)
target = np.argmax(b,axis=1)
correct = (y_hat == target).sum()

print(correct)     # 14

【问题讨论】:

  • 回归问题几乎永远不会预测出完全正确的值。这就是分类问题的业务。你想做什么?
  • 我目前正在使用回波状态网络对心电数据进行分类,回波状态网络的权重参数需要通过岭回归法求解。

标签: python numpy scikit-learn


【解决方案1】:

为了使回归起作用,一个基本假设是,X 应该有能力预测 y

在您的情况下,Xy 都是随机生成的

x = np.random.rand(64,40) * 2 - 1
y = np.random.randint(0,5,(64,))

因此X确实有任何预测能力。在这种情况下,任何回归或更高级的机器学习模型都只能产生随机猜测,而这正是你得到的。根据y = np.random.randint(0,5,(64,))y 在区间[0, 5) 中是随机的,因此对于随机猜测,您有20% 的机会得到正确答案,而14/64=0.21875 就是这样。

【讨论】:

    猜你喜欢
    • 2018-11-17
    • 2020-02-14
    • 2012-10-07
    • 2016-10-21
    • 2020-09-21
    • 2016-06-28
    • 2019-07-13
    • 2014-06-17
    • 2019-10-11
    相关资源
    最近更新 更多