我正在使用该库scikit-learn
对单个样本执行带有权重的岭回归。这可以通过以下方式完成:esimator.fit(X, y, sample_weight=some_array)
。直观地说,我希望更大的权重意味着与相应样本的更大相关性。
但是,我在以下二维示例中测试了上述方法:
from sklearn import linear_model
import numpy
import matplotlib.pyplot as plt
#Data
x= numpy.array([[0], [1],[2]])
y= numpy.array([[0], [2],[2]])
sample_weight = numpy.array([1,1, 1])
#Ridge regression
clf = linear_model.Ridge(alpha = 0.1)
clf.fit(x, y, sample_weight = sample_weight)
#Plot
xp = numpy.linspace(-1,3)
yp=list()
for x_i in xp:
yp.append(clf.predict(x_i)[0,0])
plt.plot(xp,yp)
plt.hold(True)
x = list(x)
y = list(y)
plt.plot(x,y,'or')
我运行这段代码,然后再次运行它,使第一个样本的重量加倍:
sample_weight = numpy.array([2,1, 1])
结果线远离具有较大权重的样本。这是违反直觉的,因为我预计权重较大的样本具有更大的相关性。
我是否错误地使用了该库,还是其中有错误?