Ich versuche, eine Klasse zu erstellen, die eine Klasse von sklearn erbtPython Vererbung Änderung type-Attribut
class my_lasso(linear_model.Lasso):
def __init__(self, alpha=1.0, fit_intercept=True, normalize=False,
precompute=False, copy_X=True, max_iter=1000, tol=1e-4,
warm_start=False, positive=False, random_state=None,
selection='cyclic'):
super(my_lasso, self).__init__(
alpha=alpha, fit_intercept=fit_intercept,
normalize=normalize, precompute=precompute, copy_X=copy_X,
max_iter=max_iter, tol=tol, warm_start=warm_start,
positive=positive, random_state=random_state,
selection=selection)
def fit(self, x, y):
super(my_lasso, self).fit(x, y)
self.x = x
self.y = y
self.residus = self.y - self.predict(self.x)
self.r2 = self.score(self.x, self.y)
self.error = np.linalg.norm(self.residus) ** 2
self.support = np.zeros(x.shape[1])
self.support[self.coef_ != 0] = 1
Was ich nicht verstehe, das ist, wenn ich meine Klasse testen es das Attribut intercept_
auf ein Array ändert
In [5]: testlasso.intercept_
Out[5]: array([ 23.44591837])
gleich, wenn ich versuche, von LinearRegression zu erben. Meine coefs sind jetzt doppelt Arrays
In [7]: testls.coef_
Out[7]:
array([[-0.56194996, 0.80247616, -0.0150445 , -5.76399971, 0.23495704,
2.77166415]])
Irgendwelche Hinweise?
Vielen Dank!
Thx! war y als 2D-Matrize, jetzt funktioniert es gut. was meinst du mit "Wenn Sie den Konstruktor nicht überschreiben, dann brauchen Sie den Block nicht." – nyounes
Vielen Dank. Ich wollte sagen, dass Sie die Methode "__init__" verlieren können, da Sie sie nicht außer Kraft setzen. –