Ich sehe nicht, was mit meinem Code für regulierte lineare Regression falsch ist. Unreglementierten ich einfach diese, die ich ziemlich sicher bin, ist richtig:Numpy lineare Regression mit Regularisierung
import numpy as np
def get_model(features, labels):
return np.linalg.pinv(features).dot(labels)
Hier für eine gesetzlich geregelte Lösung mein Code ist, wo ich sehen, ich nicht, was es falsch ist:
def get_model(features, labels, lamb=0.0):
n_cols = features.shape[1]
return linalg.inv(features.transpose().dot(features) + lamb * np.identity(n_cols))\
.dot(features.transpose()).dot(labels)
Mit der Standardwert von 0.0 für lamm, meine Absicht ist, dass es das gleiche Ergebnis wie die (korrekte) nicht regulierte Version geben sollte, aber der Unterschied ist tatsächlich ziemlich groß.
Kann jemand sehen, was das Problem ist?
tun Regularisierung Ich fange an, und würde eine lineare Regressionslinie eine Kurve erzeugen Regularisierung? – duldi
Nein. Sie erhalten immer noch lineare Koeffizienten. Die Regularisierung ändert nur die Steigung. –