====== std.ml ====== Maschinelles Lernen als native Lyx-Bibliothek ohne externe Abhängigkeiten. Implementiert: Lineare Regression (Gradient Descent, MSE-Loss), Logistische Regression (Sigmoid, Kreuzentropie), k-Nearest-Neighbours (euklidische und Manhattan-Distanz), K-Means-Clustering, Entscheidungsbäume (Gini-Impurity, Entropy, MSE-Kriterium) und Naive Bayes für Textklassifikation. Normalisierung: MinMax und Z-Score. Metriken: MSE, MAE, R², Accuracy. Einsatzbereiche: Vorhersagemodelle (Preise, Nachfrage), Anomalieerkennung, Textklassifikation, Kundensegmentierung, Empfehlungssysteme — als eingebettete ML-Engine ohne externe Python-Abhängigkeit. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''PROT_RW'' | ''int64'' | ''3'' | priv | | ''MAP_ANON'' | ''int64'' | ''34'' | priv | | ''FD_NONE'' | ''int64'' | ''-1'' | priv | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SquareF64(x: f64): f64'' | pub | Quadriert einen Float64-Wert | | ''AbsF64(x: f64): f64'' | pub | Betrag eines Float64-Werts | | ''SqrtF64(x: f64): f64'' | pub | Quadratwurzel für Float64 | | ''ExpF64(x: f64): f64'' | pub | Exponentialfunktion e hoch x | | ''SigmoidF64(z: f64): f64'' | pub | Sigmoid-Aktivierungsfunktion | | ''LogF64(x: f64): f64'' | pub | Natürlicher Logarithmus | | ''NBLog(x: f64): f64'' | pub | Logarithmus für Naive-Bayes | | ''LinearRegressionInit(): void'' | pub | Initialisiert lineare Regression | | ''LinearRegressionWeight(): f64 { return lr_weight; }'' | pub | Liest aktuelles Modellgewicht | | ''LinearRegressionBias(): f64 { return lr_bias; }'' | pub | Liest aktuellen Bias-Wert | | ''LinearRegressionLoss(): f64 { return lr_loss; }'' | pub | Liest letzten MSE-Verlust | | ''LinearRegressionEpochs(): int64 { return lr_epochs; }'' | pub | Liest Anzahl Trainings-Epochen | | ''LinearRegressionFit1('' | pub | Trainiert mit einem Datenpunkt | | ''LinearRegressionFit2('' | pub | Trainiert mit zwei Datenpunkten | | ''LinearRegressionFit('' | pub | Trainiert mit Datenpunkten | | ''LinearRegressionFit8('' | pub | Trainiert mit acht Datenpunkten | | ''LinearRegressionFitArrays(xData: int64, yData: int64, n: int64): void'' | pub | Trainiert mit Array-Datensatz | | ''LinearRegressionPredict(x: f64): f64'' | pub | Sagt Wert für x vorher | | ''LogisticRegressionInit(): void'' | pub | Initialisiert logistische Regression | | ''LogisticRegressionWeight(): f64 { return logr_weight; }'' | pub | Liest aktuelles Modellgewicht | | ''LogisticRegressionBias(): f64 { return logr_bias; }'' | pub | Liest aktuellen Bias-Wert | | ''LogisticRegressionLoss(): f64 { return logr_loss; }'' | pub | Liest letzten Kreuzentropie-Verlust | | ''LogisticRegressionAccuracy(): f64 { return logr_accuracy; }'' | pub | Liest Klassifikationsgenauigkeit | | ''LogisticRegressionEpochs(): int64 { return logr_epochs; }'' | pub | Liest Anzahl Trainings-Epochen | | ''LogisticRegressionFit1('' | pub | Trainiert mit einem Datenpunkt | | ''LogisticRegressionFit('' | pub | Trainiert mit Datenpunkten | | ''LogisticRegressionFit8('' | pub | Trainiert mit acht Datenpunkten | | ''LogisticRegressionFitArrays(xData: int64, yData: int64, n: int64, learningRate: f64, epochs: int64): void'' | pub | Trainiert mit Array-Datensatz | | ''LogisticRegressionPredictProb(x: f64): f64'' | pub | Gibt Klassenwahrscheinlichkeit zurück | | ''LogisticRegressionPredict(x: f64): int64'' | pub | Klassifiziert Eingabewert binär | | ''EuclideanDistance(x1: f64, y1: f64, x2: f64, y2: f64): f64'' | pub | Euklidischer Abstand zweier Punkte | | ''Mean2(a: f64, b: f64): f64 { return (a + b) * 0.5; }'' | pub | Arithmetisches Mittel zweier Werte | | ''Variance2(a: f64, b: f64): f64'' | pub | Varianz zweier Werte | | ''StdDev2(a: f64, b: f64): f64 { return SqrtF64(Variance2(a, b)); }'' | pub | Standardabweichung zweier Werte | | ''MSE2(y_true0: f64, y_true1: f64, y_pred0: f64, y_pred1: f64): f64'' | pub | MSE-Fehler für zwei Vorhersagen | | ''MAE2(y_true0: f64, y_true1: f64, y_pred0: f64, y_pred1: f64): f64'' | pub | MAE-Fehler für zwei Vorhersagen | | ''R2Score2(y_true0: f64, y_true1: f64, y_pred0: f64, y_pred1: f64): f64'' | pub | R²-Score für zwei Vorhersagen | | ''KNNInit2(k: int64, x0: f64, x1: f64, y0: f64, y1: f64): void'' | pub | Initialisiert KNN mit zwei Punkten | | ''KNNPredict2(x: f64): int64'' | pub | KNN-Vorhersage für zwei Klassen | | ''KNNInit(k: int64): void'' | pub | Initialisiert KNN-Klassifikator | | ''KNNGetK(): int64 { return knn_k; }'' | pub | Liest aktuellen K-Wert | | ''KNNGetNSamples(): int64 { return knn_n; }'' | pub | Liest Anzahl Trainings-Samples | | ''KNNFit(features: int64, labels: int64, n: int64, nFeatures: int64): void'' | pub | Trainiert KNN mit Datensatz | | ''KNNDistance(a: int64, b: int64, n: int64): f64'' | pub | Euklidische Distanz zweier Vektoren | | ''KNNManhattanDistance(a: int64, b: int64, n: int64): f64'' | pub | Manhattan-Distanz zweier Vektoren | | ''KNNFindNeighbors(query: int64, k: int64): int64'' | pub | Findet k nächste Nachbarn | | ''KNNMajorityVote(neighborIndices: int64, k: int64): int64'' | pub | Bestimmt Klasse per Mehrheitswahl | | ''KNNPredict(query: int64): int64'' | pub | Klassifiziert einen Eingabevektor | | ''KNNScore(features: int64, labels: int64, n: int64): f64'' | pub | Berechnet KNN-Genauigkeit auf Datensatz | | ''KMeansInit2(c0: f64, c1: f64): void'' | pub | Initialisiert K-Means mit zwei Zentroiden | | ''KMeansFit2(x0: f64, x1: f64, iterations: int64): void'' | pub | Trainiert K-Means mit zwei Punkten | | ''KMeansPredict(x: f64): int64'' | pub | Weist Punkt einem Cluster zu | | ''KMeansCentroid0(): f64 { return km_centroid0; }'' | pub | Liest Position von Zentroid 0 | | ''KMeansCentroid1(): f64 { return km_centroid1; }'' | pub | Liest Position von Zentroid 1 | | ''KMeansInit(k: int64): void'' | pub | Initialisiert K-Means-Clustering | | ''KMeansGetK(): int64 { return km_k; }'' | pub | Liest Anzahl der Cluster | | ''KMeansGetIter(): int64 { return km_iter; }'' | pub | Liest Anzahl der Iterationen | | ''KMeansGetInertia(): f64 { return km_inertia; }'' | pub | Liest Inertia der Clusterung | | ''KMeansInitCentroids(features: int64, n: int64, nFeatures: int64, k: int64): void'' | pub | Setzt initiale Zentroiden-Positionen | | ''KMeansFit(features: int64, n: int64, nFeatures: int64, k: int64): void'' | pub | Führt K-Means-Clustering durch | | ''KMeansPredictCluster(point: int64): int64'' | pub | Weist Vektor einem Cluster zu | | ''KMeansGetAssignments(): int64 { return km_assignments; }'' | pub | Liest Cluster-Zuweisungen zurück | | ''KMeansGetCentroids(): int64 { return km_centroids; }'' | pub | Liest alle Zentroiden-Positionen | | ''KMeansGetClusterSize(clusterIdx: int64): int64'' | pub | Gibt Anzahl Punkte im Cluster | | ''KMeansGetCentroid(idx: int64, featureIdx: int64): f64'' | pub | Liest Feature-Wert eines Zentroiden | | ''MinMaxNorm(x: f64, min: f64, max: f64): f64'' | pub | MinMax-Normalisierung auf [0,1] | | ''MinMaxDenorm(x_norm: f64, min: f64, max: f64): f64'' | pub | Denormalisiert MinMax-Wert | | ''ZScoreNorm(x: f64, mean: f64, stddev: f64): f64'' | pub | Z-Score-Normalisierung | | ''TrainTestSplit(index: int64): int64'' | pub | Teilt Index in Train/Test-Gruppen | | ''NaiveBayesInit(nClasses: int64, vocabSize: int64): void'' | pub | Initialisiert Naive-Bayes-Klassifikator | | ''NaiveBayesFit(documents: int64, docLengths: int64, labels: int64, n: int64): void'' | pub | Trainiert Naive-Bayes mit Texten | | ''NaiveBayesPredict(docWords: int64, docLen: int64): int64'' | pub | Klassifiziert ein Dokument | | ''NaiveBayesGetWordCount(classIdx: int64, wordIdx: int64): f64'' | pub | Liest Wortzähler je Klasse | | ''NaiveBayesGetClassCount(classIdx: int64): int64'' | pub | Liest Dokumentanzahl je Klasse | | ''NaiveBayesScore(documents: int64, docLengths: int64, labels: int64, n: int64): f64'' | pub | Berechnet Klassifikationsgenauigkeit | ---- ===== Typen ===== ==== DecisionTreeNode (struct) ==== ^ Feld ^ Typ ^ | ''featureIdx'' | ''int64'' | | ''threshold'' | ''f64'' | | ''left'' | ''int64'' | | ''right'' | ''int64'' | | ''classLabel'' | ''int64'' | | ''nSamples'' | ''int64'' | | ''impurity'' | ''f64'' | | ''DT_GINI'' | ''int64'' | ''0'' | pub | | ''DT_ENTROPY'' | ''int64'' | ''1'' | pub | | ''DT_MSE'' | ''int64'' | ''2'' | pub | ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''DecisionTreeInit(maxDepth: int64, criterion: int64): void'' | pub | Initialisiert Entscheidungsbaum | | ''DTGiniImpurity(labels: int64, n: int64): f64'' | pub | Berechnet Gini-Unreinheit | | ''DTEntropyImpurity(labels: int64, n: int64): f64'' | pub | Berechnet Entropie-Unreinheit | | ''DecisionTreeFit(features: int64, labels: int64, n: int64, nFeatures: int64, nClasses: int64): void'' | pub | Trainiert Entscheidungsbaum | | ''DecisionTreePredict(featureVector: int64): int64'' | pub | Klassifiziert einen Merkmalsvektor | | ''AccuracyScore(y_true: int64, y_pred: int64, n: int64): f64'' | pub | Berechnet Klassifikationsgenauigkeit | | ''MeanSquaredError(y_true: int64, y_pred: int64, n: int64): f64'' | pub | Berechnet mittleren quadratischen Fehler | | ''MeanAbsoluteError(y_true: int64, y_pred: int64, n: int64): f64'' | pub | Berechnet mittleren absoluten Fehler | | ''R2Score(y_true: int64, y_pred: int64, n: int64): f64'' | pub | Berechnet R²-Bestimmtheitsmaß |