gpt4 book ai didi

machine-learning - 核回归与线性核回归相同吗?

转载 作者:行者123 更新时间:2023-11-30 08:54:41 50 4
gpt4 key购买 nike

我想在 sklearn 中编写线性核回归代码,所以我编写了这段代码:

model = LinearRegression()
weights = rbf_kernel(X_train,X_test)

for i in range(weights.shape[1]):
model.fit(X_train,y_train,weights[:,i])
model.predict(X_test[i])

然后我发现sklearn中有KernelRidge:

model = KernelRidge(kernel='rbf')

model.fit(X_train,y_train)

pred = model.predict(X_train)

我的问题是:
1-这两个代码有什么区别?2-在 KernelRidge() 之后的 model.fit() 中,我在文档中发现我可以向 fit() 函数添加第三个参数“权重”,如果我已经将内核函数应用于型号?

最佳答案

  1. What is the difference between these two code snippets?

基本上,它们没有任何共同点。您的第一个代码片段实现了线性回归,并具有任意设置的样本权重。 (你是怎么想到以这种方式调用 rbf_kernel 的?)这仍然只是一个线性模型,仅此而已。您只需分配(有点随机)哪些样本是重要的,然后循环遍历特征(?)。这完全没有意义。一般来说:您对 rbf_kernel 所做的事情是完全错误的;这完全不是它应该如何使用(以及为什么当您尝试将其传递给 fit 方法时它会给您错误并且最终执行循环并分别传递每一列)。

将此类模型拟合到余弦数据(即平均值为 0)的示例:

lr

  1. I found in the documentation for the model.fit() function that comes after KernelRidge() that I can add a third argument, weight. Would I do that if I had already applied a kernel function to the model?

这是实际的核方法,核不是样本加权。 (人们可能会使用核函数来分配权重,但这不是“线性核回归”或一般“核方法”中核的含义。)核是一种向分类器引入非线性的方法,它来自以下事实:许多方法(包括线性回归)可以表示为向量之间的点积,可以用核函数代替,导致在不同的空间(再现希尔伯特核空间)中解决问题,这可能具有非常高的复杂性(例如无限维空间)由 RBF 核导出的连续函数)。

拟合上述相同数据的示例:

kernel

from sklearn.linear_model import LinearRegression
from sklearn.kernel_ridge import KernelRidge
import numpy as np
from matplotlib import pyplot as plt

X = np.linspace(-10, 10, 100).reshape(100, 1)
y = np.cos(X)

for model in [LinearRegression(), KernelRidge(kernel='rbf')]:

model.fit(X, y)
p = model.predict(X)

plt.figure()
plt.title(model.__class__.__name__)
plt.scatter(X[:, 0], y)
plt.plot(X, p)

plt.show()

关于machine-learning - 核回归与线性核回归相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749941/

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