Zufallsstichprobenkonsens: Robuste Schätzung in der Computer Vision
Von Fouad Sabry
()
Über dieses E-Book
Was ist Zufallsstichprobenkonsens?
Random Sample Consensus, auch RANSAC genannt, ist eine iterative Methode, die zur Schätzung der Parameter eines mathematischen Modells basierend auf einer Sammlung verwendet wird der beobachteten Daten, die Ausreißer enthalten. Diese Methode wird in Situationen verwendet, in denen die Ausreißer keinen Einfluss auf die Werte der Schätzungen haben dürfen. Die Schlussfolgerung ist, dass es auch als Werkzeug zur Erkennung von Ausreißern angesehen werden kann. Ein Algorithmus gilt als nicht deterministisch, wenn er nur mit einer bestimmten Wahrscheinlichkeit ein geeignetes Ergebnis erzeugen kann und diese Wahrscheinlichkeit umso größer ist, je mehr Iterationen die Methode zulässt. Im Jahr 1981 waren Fischler und Bolles, die bei SRI International arbeiteten, diejenigen, die den Algorithmus erstmals veröffentlichten. Um das Location Determination Problem (LDP) zu lösen, bei dem es darum geht, die Punkte im Raum zu finden, die auf ein Bild projiziert werden, und diese Punkte dann in eine Reihe von Orientierungspunkten mit bekannten Positionen umzuwandeln, verwendeten sie RANSAC.
Wie Sie davon profitieren werden
(I) Einblicke und Validierungen zu den folgenden Themen:
Kapitel 1: Konsens bei zufälligen Stichproben
Kapitel 2: Schätzer
Kapitel 3: Kleinste Quadrate
Kapitel 4: Ausreißer
Kapitel 5: Kreuzvalidierung (Statistik)
Kapitel 6: Fehler und Residuen
Kapitel 7: Mischungsmodell
Kapitel 8: Robuste Statistiken
Kapitel 9: Bildzusammenfügung
Kapitel 10: Resampling (Statistik)
(II) Beantwortung der häufigsten öffentlichen Fragen zum Zufallsstichprobenkonsens.
(III) Beispiele aus der Praxis für die Verwendung von Zufallsstichprobenkonsens in vielen Bereichen.
Für wen dieses Buch gedacht ist
Profis, Studenten und Doktoranden, Enthusiasten, Hobbyisten und diejenigen, die es wollen über grundlegende Kenntnisse oder Informationen für jede Art von Zufallsstichprobenkonsens hinausgehen.
Mehr von Fouad Sabry lesen
Ähnlich wie Zufallsstichprobenkonsens
Titel in dieser Serie (100)
Histogrammausgleich: Verbesserung des Bildkontrasts für eine verbesserte visuelle Wahrnehmung Bewertung: 0 von 5 Sternen0 BewertungenComputer Vision: Erkundung der Tiefen des Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenLärmminderung: Verbesserung der Klarheit, fortschrittliche Techniken zur Rauschunterdrückung in der Bildverarbeitung Bewertung: 0 von 5 Sternen0 BewertungenRadon-Transformation: Aufdecken verborgener Muster in visuellen Daten Bewertung: 0 von 5 Sternen0 BewertungenTonzuordnung: Tone Mapping: Erhellende Perspektiven in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenAnisotrope Diffusion: Verbesserung der Bildanalyse durch anisotrope Diffusion Bewertung: 0 von 5 Sternen0 BewertungenRetinex: Enthüllen Sie die Geheimnisse des computergestützten Sehens mit Retinex Bewertung: 0 von 5 Sternen0 BewertungenHough-Transformation: Enthüllung der Magie der Hough-Transformation in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenFarberscheinungsmodell: Wahrnehmung und Darstellung in Computer Vision verstehen Bewertung: 0 von 5 Sternen0 BewertungenUnterwasser-Computervision: Erkundung der Tiefen der Computer Vision unter den Wellen Bewertung: 0 von 5 Sternen0 BewertungenGamma-Korrektur: Verbesserung der visuellen Klarheit in der Computer Vision: Die Gammakorrekturtechnik Bewertung: 0 von 5 Sternen0 BewertungenFarbraum: Erkundung des Spektrums von Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenHomographie: Homographie: Transformationen in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenComputer-Stereo-Vision: Erforschung der Tiefenwahrnehmung in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenPartikelfilter: Erforschung von Partikelfiltern in der Bildverarbeitung Bewertung: 0 von 5 Sternen0 BewertungenGemeinsame Fotoexpertengruppe: Erschließen Sie das Potenzial visueller Daten mit dem JPEG-Standard Bewertung: 0 von 5 Sternen0 BewertungenModell des menschlichen visuellen Systems: Wahrnehmung und Verarbeitung verstehen Bewertung: 0 von 5 Sternen0 BewertungenInpainting: Überbrückung von Lücken in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenBildhistogramm: Visuelle Einblicke enthüllen und die Tiefen von Bildhistogrammen in der Computer Vision erkunden Bewertung: 0 von 5 Sternen0 BewertungenOrientiertes Gradienten-Histogramm: Enthüllung des visuellen Bereichs: Erkundung des Histogramms mit orientierten Farbverläufen in der Bildverarbeitung Bewertung: 0 von 5 Sternen0 BewertungenBlob-Erkennung: Aufdecken von Mustern in visuellen Daten Bewertung: 0 von 5 Sternen0 BewertungenFarbzuordnung: Erforschung der visuellen Wahrnehmung und Analyse in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenFarbanpassungsfunktion: Spektrale Empfindlichkeit in Computer Vision verstehen Bewertung: 0 von 5 Sternen0 BewertungenBündelanpassung: Optimieren visueller Daten für eine präzise Rekonstruktion Bewertung: 0 von 5 Sternen0 BewertungenFarbmanagementsystem: Optimierung der visuellen Wahrnehmung in digitalen Umgebungen Bewertung: 0 von 5 Sternen0 BewertungenKantenerkennung: Grenzen in der Computer Vision erkunden Bewertung: 0 von 5 Sternen0 BewertungenAktive Kontur: Weiterentwicklung der Computer Vision mit aktiven Konturtechniken Bewertung: 0 von 5 Sternen0 BewertungenBildkompression: Effiziente Techniken zur visuellen Datenoptimierung Bewertung: 0 von 5 Sternen0 BewertungenFarbmodell: Das Spektrum des Computer Vision verstehen: Farbmodelle erkunden Bewertung: 0 von 5 Sternen0 BewertungenAffine Transformation: Visuelle Perspektiven freischalten: Erforschung der affinen Transformation in der Computer Vision Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
Bündelanpassung: Optimieren visueller Daten für eine präzise Rekonstruktion Bewertung: 0 von 5 Sternen0 BewertungenClusterbasierte Datenanalyse auf Grundlage genetischer Algorithmen in SAP-BI: Ein Verfahren zur selbständigen Ermittlung der optimalen Anzahl Cluster Bewertung: 0 von 5 Sternen0 BewertungenComputer-Vision-Grafikschnitte: Erforschung von Graphschnitten in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenMultiple lineare Regression & High Performance Computing: Methodik und Software-Implementation komplexer Analysemodelle Bewertung: 0 von 5 Sternen0 BewertungenStrichzeichnungsalgorithmus: Beherrschen von Techniken zur präzisen Bildwiedergabe Bewertung: 0 von 5 Sternen0 BewertungenApproximation der Lösungen von Differentialgleichungen mit Wavelets und Einstellung der Parameter Bewertung: 0 von 5 Sternen0 BewertungenNeues verkehrswissenschaftliches Journal NVJ - Ausgabe 9: Entwicklung eines Algorithmus für die Kalibrierung von Modellen zur Betriebssimulation in spurgeführten Verkehrssystemen unter Berücksichtigung stochastischer Bedingungen DFG-Forschungsprojekt (MA 2326/9-1) Bewertung: 0 von 5 Sternen0 BewertungenKontextuelle Bildklassifizierung: Visuelle Daten für eine effektive Klassifizierung verstehen Bewertung: 0 von 5 Sternen0 BewertungenNumerische Grundlagen der Simulation: Kompendium Simulation und Regelung technischer Prozesse, Teil 5 Bewertung: 0 von 5 Sternen0 BewertungenMultivariate Analysemethoden: Multivariate Statistik und Datenanalyse mit SPSS einfach erklärt Bewertung: 0 von 5 Sternen0 BewertungenAktives Erscheinungsmodell: Erschließung der Leistungsfähigkeit aktiver Darstellungsmodelle in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenAutomatische Zielerkennung: Fortschritte in Computer-Vision-Techniken zur Zielerkennung Bewertung: 0 von 5 Sternen0 BewertungenBresenham-Linien-Algorithmus: Effiziente pixelgenaue Linienwiedergabe für Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenRastergrafiken: Die Grundlagen der Rastergrafik in der Computer Vision verstehen Bewertung: 0 von 5 Sternen0 BewertungenTrifokaler Tensor: Erforschung von Tiefe, Bewegung und Struktur in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenEigenface: Erkunden Sie die Tiefen der visuellen Erkennung mit Eigenface Bewertung: 0 von 5 Sternen0 BewertungenJava 8 Streams Bewertung: 0 von 5 Sternen0 BewertungenDirekte lineare Transformation: Praktische Anwendungen und Techniken in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenAlgorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenÜbungen zur Numerischen Analysis Bewertung: 0 von 5 Sternen0 BewertungenRaytracing-Grafiken: Erforschung des fotorealistischen Renderings in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenMesh-Generierung: Fortschritte und Anwendungen bei der Computer Vision Mesh Generation Bewertung: 0 von 5 Sternen0 BewertungenHough-Transformation: Enthüllung der Magie der Hough-Transformation in der Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenQuantitatives Methoden-Brevier SPSS: Eine problemorientierte Referenz für Marktforscher Bewertung: 0 von 5 Sternen0 BewertungenFrequenzverhalten linearer Systeme: Kompendium Simulation und Regelung technischer Prozesse, Teil 7 Bewertung: 0 von 5 Sternen0 BewertungenRastergrafik-Editor: Visuelle Realitäten transformieren: Rastergrafik-Editoren in Computer Vision beherrschen Bewertung: 0 von 5 Sternen0 BewertungenLeast Squares: Optimierungstechniken für Computer Vision: Methoden der kleinsten Quadrate Bewertung: 0 von 5 Sternen0 BewertungenComputergeometrie: Erforschung geometrischer Erkenntnisse für Computer Vision Bewertung: 0 von 5 Sternen0 BewertungenMerkmalskonstruktion für Machine Learning: Prinzipien und Techniken der Datenaufbereitung Bewertung: 0 von 5 Sternen0 Bewertungen
Künstliche Intelligenz (KI) & Semantik für Sie
Chatbotische Landingpages: Wie du deine Konkurrenz in den digitalen Staub schicken Bewertung: 0 von 5 Sternen0 BewertungenChatbotische Medien-Gestaltung leicht gemacht: Von der Idee zum viralen Hit Bewertung: 0 von 5 Sternen0 BewertungenKI-Innovationen: Wie die Technologie die Grenzen verschiebt Künstliche Intelligenz verstehen und nutzen: Ein AI-Buch Bewertung: 0 von 5 Sternen0 BewertungenRoboter im Alltag: Maschinen (beinahe) wie Menschen Bewertung: 0 von 5 Sternen0 BewertungenChatGPT: Epische Reise des Erfolgs - 'Steigern Sie Ihren Reichtum': Mit Screenshots aus dem echten Leben - Erreichen Sie finanzielle Höhen Bewertung: 0 von 5 Sternen0 BewertungenDie KI Bibel, mit künstlicher Intelligenz Geld verdienen: Echte Fallbeispiele und Anleitungen zum Umsetzen Bewertung: 1 von 5 Sternen1/5ChatGPT – Für Einsteiger: Schreibprofi mit KI, Zeit und Geld sparen ohne peinliche Fehler Bewertung: 0 von 5 Sternen0 BewertungenDie Zukunft der Arbeit: Digitalisierung, Automatisierung, KI Bewertung: 0 von 5 Sternen0 BewertungenWissen statt Glauben!: Das Weltbild des neuen Humanismus Bewertung: 0 von 5 Sternen0 BewertungenMenschlicher Geist und Künstliche Intelligenz: Die Entwicklung des Humanen inmitten einer digitalen Welt Bewertung: 0 von 5 Sternen0 BewertungenPsychologie des Sozialismus Bewertung: 0 von 5 Sternen0 BewertungenMeistern von ChatGPT: Entriegeln Sie die Kraft der KI für verbesserte Kommunikation und Beziehungen: German Bewertung: 0 von 5 Sternen0 BewertungenAufstieg der Roboter: Wie unsere Arbeitswelt gerade auf den Kopf gestellt wird - und wie wir darauf reagieren müssen Bewertung: 0 von 5 Sternen0 BewertungenChatGPT: Begegnung mit einer neuen Welt: Lernen Sie Künstliche Intelligenz mit der Gratisversion ChatGPT 3.5 Bewertung: 0 von 5 Sternen0 BewertungenEinstieg ins Machine Learning: Grundlagen, Prinzipien, erste Schritte Bewertung: 0 von 5 Sternen0 BewertungenKünstliche Intelligenz: Die vierte industrielle Revolution Bewertung: 0 von 5 Sternen0 BewertungenDigitalotopia: Sind wir bereit für die (R)Evolution der Wirklichkeit? Bewertung: 0 von 5 Sternen0 BewertungenKünstliche Intelligenz in Sozialen Medien Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Zufallsstichprobenkonsens
0 Bewertungen0 Rezensionen
Buchvorschau
Zufallsstichprobenkonsens - Fouad Sabry
Kapitel 1: Konsens bei Zufallsstichproben
Um die Parameter eines mathematischen Modells aus einem Satz von beobachteten Daten zu schätzen, die Ausreißer enthalten, kann der iterative Prozess verwendet werden, der als Zufallsstichprobenkonsens (RANSAC) bekannt ist. Als solches kann es auch als eine Technik zur Identifizierung von Ausreißern angesehen werden. Dieser Algorithmus ist nicht deterministisch, da er nur mit einer bestimmten Wahrscheinlichkeit ein geeignetes Ergebnis generiert, die mit der Anzahl der zulässigen Iterationen steigt. 1981 stellten Fischler und Bolles von SRI International den Algorithmus zum ersten Mal der Öffentlichkeit vor. Mit RANSAC konnten sie das Location Determination Problem (LDP) lösen, bei dem es darum geht, die Punkte im Raum zu finden, die auf einem Bild als Sammlung von Landmarken mit festen Koordinaten abgebildet werden.
RANSAC ist eine Methode, bei der viele Male zufällige Teilstichproben verwendet werden. Ausreißer sind Daten, deren Verteilung durch eine Reihe von Modellparametern erklärt werden kann, wenn auch mit erheblichem Rauschen, während Ausreißer Daten sind, die gemäß einer grundlegenden Annahme über die Daten nicht mit dem Modell übereinstimmen. Beispiele für Quellen von Ausreißern sind zu hohe Werte des Rauschens, fehlerhafte Messungen und falsch interpretierte Daten. RANSAC impliziert auch die Existenz eines Prozesses, der die Parameter eines Modells schätzen kann, das diese Daten ideal erklärt oder anpasst, wenn eine (oft begrenzte) Menge von Ausreißern vorhanden ist.
Die zweidimensionale Linienanpassung ist eine einfache Veranschaulichung dieses Prinzips. Wenn diese Sammlung sowohl Ausreißer (Punkte, die grob an eine Linie angepasst werden können) als auch Ausreißer (Punkte, die nicht an diese Linie angepasst werden können) enthält, führt die Methode der kleinsten Quadrate zum Anpassen von Linien wahrscheinlich zu einer Linie, die schlecht an die Daten angepasst ist. Das Modell ist optimal auf alle Datenpunkte abgestimmt, auch auf die extremen. RANSAC versucht jedoch, ein lineares Modell zu finden, das die Ausreißer nicht berücksichtigt und stattdessen nur die Ausreißer in seine Berechnungen einbezieht. Um dies zu erreichen, werden viele zufällige Stichproben der Daten verwendet, um lineare Modelle anzupassen, und das Modell, das die größte Anpassung an einen Teil der Daten bietet, wird dann zurückgegeben. Eine zufällige Teilmenge, die vollständig aus Ausreißern besteht, hat die beste Modellanpassung, da Ausreißer mit größerer Wahrscheinlichkeit linear verbunden sind als eine zufällige Mischung aus Ausreißern und Ausreißern. Die Wahrscheinlichkeit, dass der Algorithmus erfolgreich ist, hängt vom Prozentsatz der Ausreißer in den Daten und der Auswahl zahlreicher Algorithmusparameter ab, und tatsächlich gibt es keine Garantie dafür, dass eine Teilmenge von Ausreißern zufällig ausgewählt wird.
Ein Dataset mit mehreren Ausreißern, für das eine lineare Regressionsanalyse erforderlich ist.
RANSAC-Regression; Ausreißer haben keinen Einfluss auf den Mittelwert.
Der RANSAC-Algorithmus ist eine datengetriebene Lernmethode zur Schätzung von Modellparametern aus Beobachtungsstichproben. RANSAC verwendet die Abstimmungsmethode, um das am besten passende Ergebnis für einen bestimmten Datensatz zu erhalten, dessen Datenelemente sowohl Ausreißer als auch Ausreißer enthalten. Die Datenpunkte des Datasets werden als Stimmzettel für ein oder mehrere Modelle verwendet. Diese Abstimmungstechnik wird unter zwei Annahmen implementiert: (a) Es gibt genügend Merkmale, um sich auf ein anständiges Modell zu einigen, und (b) die verrauschten Merkmale stimmen nicht konsistent für ein einzelnes Modell (wenige Ausreißer) (wenige fehlende Daten). Der RANSAC-Algorithmus besteht im Wesentlichen aus zwei Phasen, die beide iterativ ausgeführt werden:
In der ersten Phase wird eine zufällige Teilmenge des Eingabedatensatzes ausgewählt, die als Stichprobe dient. Die Elemente dieser Teilstichprobe werden verwendet, um ein Anpassungsmodell mit Modellparametern zu berechnen. Die Modellparameter können nur mit den Daten aus der Kardinalität der Teilstichprobe berechnet werden.
In der zweiten Phase des Prozesses wird überprüft, welche Teile des vollständigen Datensatzes mit dem Modell übereinstimmen, das durch die geschätzten Modellparameter instanziiert wird. Wenn eine Information innerhalb einer vorgegebenen Fehlerspanne nicht mit dem Modell übereinstimmt, wird sie als Ausreißer klassifiziert. (Die Datenpunkte außerhalb dieses Bereichs werden als Ausreißer betrachtet.)
Die Gruppe von Ausreißern, die zur Kalibrierung des Modells verwendet werden, wird als Konsensmenge bezeichnet. Bis ein Konsenssatz mit einer ausreichenden Anzahl von Ausreißern gebildet ist, wiederholt der RANSAC-Algorithmus iterativ die beiden vorhergehenden Schritte.
Beobachtete Datenwerte, ein Modell, das zu diesen Beobachtungen passt, und Konfidenzparameter, die auf Ausreißer hinweisen, sind die Eingaben für den RANSAC-Algorithmus. Der RANSAC-Algorithmus erreicht sein Ziel, indem er iterativ die folgenden Schritte ausführt, auf die im Folgenden eingegangen wird:
Wählen Sie nach dem Zufallsprinzip eine Stichprobe der Originaldaten aus. Sie können sich diese Gruppe als fiktive Ausreißer vorstellen.
Die Menge potenzieller Ausreißer wird als Eingabe für eine Modellierungsprozedur verwendet.
Es folgt eine Verifizierung aller Daten mit dem eingebauten Modell. Die Konsensmenge ist die Teilmenge der ursprünglichen Datenpunkte, die die Verlustfunktion für das geschätzte Modell minimiert (d. h. die Menge der Ausreißer für das Modell).
Wenn ein ausreichend großer Anteil der Beobachtungen in den Konsenssatz passt, kann das geschätzte Modell als von angemessener Qualität angesehen werden.
Es ist möglich, dass eine Neuschätzung des Modells mit Daten aus dem gesamten Konsenssatz zu besseren Ergebnissen führen würde. Die Schärfung der Modellanpassung im Laufe der Zeit erfolgt mit Hilfe der Anpassungsqualität, einem Maß dafür, wie gut das Modell zum Konsenssatz passt (z. B. indem dieses Maß bei der nächsten Iteration als Anpassungsqualitätskriterium festgelegt wird).
Jede Iteration dieses Prozesses führt entweder zur Ablehnung eines Modells, weil zu wenige Punkte Teil des Konsenssatzes sind, oder zu einem überarbeiteten Modell mit einer größeren Konsenssatzgröße als die vorherige Iteration. Dieser Vorgang wird so lange wiederholt, bis ein ausreichend guter Modellparametersatz gefunden ist.
Ausreißer und Ausreißer in RANSAC. Dieses Beispiel für eine lineare Punkt-für-Punkt-Anpassung enthält 7 Ausreißer (Datenpunkte, die unter bestimmten Kriterien gut mit dem Modell übereinstimmen). Da sich die meisten Datenpunkte um eine lineare Linie gruppieren, ist die Anpassung schlecht (d. h. mehr Ausreißer).
Hier ist etwas Pseudocode, der den grundlegenden RANSAC-Algorithmus implementiert:
Gegeben:
data – Eine Reihe von Beobachtungen.
model – Ein Modell zur Erklärung der beobachteten Datenpunkte.
n – Die Mindestanzahl von Datenpunkten, die für die Schätzung der Modellparameter erforderlich sind.
k – Die maximale Anzahl von Iterationen, die im Algorithmus zulässig sind.
t – Ein Schwellenwert zum Bestimmen von Datenpunkten, die gut an das Modell angepasst sind (Inlier).
d – Die Anzahl der nahen Datenpunkte (Inliers), die erforderlich sind, um zu bestätigen, dass das Modell gut zu den Daten passt.
Rückgabe:
bestFit – Die Modellparameter, die am besten zu den Daten passen (oder null, wenn kein gutes Modell gefunden wird).
Iterationen = 0
bestFit = null
bestErr = something really large // Dieser Parameter wird verwendet, um die Modellparameter im Laufe der Iterationen auf die beste Datenanpassung zu bringen.
während Iterationen < k
maybeInliers := n zufällig ausgewählte Werte aus Daten
maybeModel := Modellparameter, die an maybeInliers angepasst sind
confirmedInliers := leerer Satz
für jeden Punkt in den Daten
if point fits maybeModel mit einem Fehler kleiner als t then
Punkt zu confirmedInliers hinzufügen
Ende, wenn
Ende für
Wenn die Anzahl der Elemente in confirmedInliers > d ist , dann
Dies impliziert, dass wir möglicherweise ein gutes Modell gefunden haben.
Testen Sie nun, wie gut es ist.
betterModel := Modellparameter, die an alle Punkte in confirmedInliers angepasst sind
thisErr := ein Maß dafür, wie gut betterModel diese Punkte erfüllt
wenn thisErr < bestErr dann
bestFit := betterModel
bestErr := thisErr
Ende, wenn
Ende, wenn
Iterationen inkrementieren
beenden, während
return bestFit
Der Pseudocode, gespiegelt in Python. Darüber hinaus adressieren diese auf der kleinsten Quadrate basierende LinearRegressor-Definition, die RANSAC-Anwendung und die resultierende grafische Darstellung ein 2D-Regressionsproblem:
Von Kopieren Importieren Kopieren
numpy als NP importieren
aus numpy.random importieren default_rng
rng = default_rng()
Klasse RANSAC:
def __init__(self, n=10, k=100, t=0.05, d=10, model=None, loss=None, metric=None):
Selbst.n = n # 'n': Minimale Anzahl von Datenpunkten zur Schätzung von Parametern
Selbst.k = k # 'k': Maximal zulässige Iterationen
Selbst.t = t # 't': Schwellenwert, um festzustellen, ob die Punkte gut passen
Selbst.d = d # 'd': Anzahl der engen Datenpunkte, die erforderlich sind, um zu bestätigen, dass das Modell gut passt
Selbst.model = model # 'model': Klasse, die 'fit' und 'predict' implementiert
Selbst.loss = loss # 'loss': Funktion von 'y_true' und 'y_pred', die einen Vektor zurückgibt
Selbst.metric = metric # 'metric': Funktion von 'y_true' und 'y_pred' und gibt eine Gleitkommazahl zurück
Selbst.best_fit = Keine
Selbst.best_error = np.Inf
def fit(self, X, y):
for _ in range(self.k):
IDs = RNG.permutation(X.shape0])
maybe_inliers = ids[: self.n
maybe_model = copy(self.Modell).fit(Xmaybe_inliers], ymaybe_inliers])
Schwellenwert = (
Selbst.Verlust(YIDS][Selbst.n :], maybe_model.predict(Xids][self.n :]))
< selbst.t
)
inlier_ids = idsself.n :][np.flatNonzero(thresholded).flatten()]
Wenn inlier_ids.Größe > selbst.D:
inlier_points = np.hstack([maybe_inliers, inlier_ids])
better_model = copy(self.Modell).fit(Xinlier_points], yinlier_points])
this_error = Selbst.metrik(
yinlier_points], better_model.predict(Xinlier_points])
)
wenn this_error < selbst.best_error:
Selbst.best_error = this_error
Selbst.best_fit = maybe_model
Kehren Sie selbst zurück
def predict(self, X):
Kehren Sie selbst zurück.best_fit.vorhersagen(X)
def square_error_loss(y_true, y_pred):
Hin- und Rückflug (y_true - y_pred) ** 2
def mean_square_error(y_true, y_pred):
return np.sum(square_error_loss(y_true, y_pred)) / y_true.Formen0
Klasse LinearRegressor:
def __init__(self):
Selbst.params = Keine
def fit(self, X: np.ndarray, y: np.ndarray):
r, _ = X.Form
X = np.hstack([np.ones((r,