SwiftAI
Machine Learning in reinem Swift: Modelle auf dem Gerät trainieren, auswerten und speichern.
Lizenz: MIT
SwiftAI ist ein Swift-Package für klassisches Machine Learning auf Apple-Plattformen: Klassifikation, Regression, Clustering und Dimensionsreduktion auf Zahlentabellen. Sie laden Daten aus CSV oder Arrays, teilen sie auf, trainieren mit einem einzigen Funktionsaufruf ein Modell, messen es und speichern es als JSON, um es in Ihrer App zu laden – ohne Python-Toolchain oder Server. Das Package hat keine Abhängigkeiten.
Funktionen
- Elf überwachte Modelle: lineare und Ridge-Regression, logistische Regression, k-nächste-Nachbarn, Gaussian Naive Bayes, Decision Trees, Random Forests und neuronale Netze, dazu k-Means-Clustering und Hauptkomponentenanalyse (PCA)
- Gegen scikit-learn 1.9.1 geprüft: Tests vergleichen Koeffizienten, Wahrscheinlichkeiten und Cluster (zum Beispiel Wahrscheinlichkeiten der logistischen Regression auf 1e-5, PCA auf 1e-10)
- Fehler statt Abstürze: Ungültige Daten oder Einstellungen werfen einen SwiftAIError, der sagt, was geändert werden muss
- Sicher zu laden: Modelle, Scaler und Pipelines sind Codable, und beim Decodieren werden Formen, Werte, Klassenlisten und Baumstruktur geprüft
- Reproduzierbar: Jeder Zufallsschritt nimmt einen Seed, und derselbe Seed liefert dasselbe Modell, auch bei parallel trainierten Forests
- Die Pipeline fittet das Preprocessing ausschließlich auf den Trainingsdaten und wendet es danach auf jede spätere Probe gleich an
- Swift-6-Language-Mode mit strict concurrency checking; DocC-Katalog mit vier Artikeln und die Beispiel-App ModelLab für iOS und macOS
Schnellstart
1import SwiftUI2import SwiftAI3 4struct ContentView: View {5 var body: some View {6 Text(irisSummary())7 .padding()8 }9 10 func irisSummary() -> String {11 do {12 // 1. Split the built-in iris flowers into training and test samples.13 let (training, test) = try Dataset.iris.stratifiedSplit(testFraction: 0.2, seed: 42)14 // 2. Train a random forest on the training samples.15 let model = try RandomForestClassifier.fit(training, seed: 42)16 // 3. Measure it on the test samples and classify a new flower.17 let accuracy = try model.accuracy(on: test)18 let species = try model.predict([6.3, 2.8, 5.1, 1.5])19 return "Test accuracy: \(accuracy.formatted(.percent))\nNew flower: \(species)"20 } catch {21 return error.localizedDescription22 }23 }24}Installation
Xcode (File › Add Package Dependencies…)
1https://github.com/muhittincamdali/SwiftAI.gitSwift Package Manager
1dependencies: [2 .package(url: "https://github.com/muhittincamdali/SwiftAI.git", from: "2.0.0")3],4targets: [5 .target(name: "YourApp", dependencies: [6 .product(name: "SwiftAI", package: "SwiftAI")7 ])8]Screenshots


Zeitleiste
Repository eröffnet als breit angelegtes KI-Framework mit App-Architektur-Schichten sowie Vision- und NLP-Code
Version 1.0.0 veröffentlicht; drei Tage später wurden die App-Architektur-Module entfernt und ein kleinerer Machine-Learning-Kern geschrieben
Reduziert: Die Tests schrumpften auf eine einzige Platzhalterdatei, kleine Stub-Schichten wurden hinzugefügt
Von Grund auf neu aufgebaut als abhängigkeitsfreies klassisches Machine-Learning-Package und als 2.0.0 veröffentlicht; keine API aus 1.0.0 blieb erhalten