Alle Open-Source-Pakete
KISwift

SwiftAI

Machine Learning in reinem Swift: Modelle auf dem Gerät trainieren, auswerten und speichern.

9SterneNeueste Version: v2.0.0Aktualisiert: 15. Oktober 2026
Plattformen:iOS 15macOS 12tvOS 15watchOS 8visionOS 1

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

swift
1import SwiftUI
2import SwiftAI
3 
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.localizedDescription
22 }
23 }
24}

Installation

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/SwiftAI.git

Swift Package Manager

swift
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

Vier Klassifikatoren, trainiert auf den Iris-Blütenblatt-Messungen, mit der von jedem über die Ebene vorhergesagten Art und ihrer kreuzvalidierten Genauigkeit (k-nächste-Nachbarn 96,0 %, logistische Regression 95,3 %, Decision Tree 94,0 %, neuronales Netz 96,0 %)
Dunkle Version des Entscheidungsgrenzen-Bilds: vier Klassifikatoren, trainiert auf den Iris-Blütenblatt-Messungen, und ihre kreuzvalidierte Genauigkeit

Zeitleiste

  1. Repository eröffnet als breit angelegtes KI-Framework mit App-Architektur-Schichten sowie Vision- und NLP-Code

  2. Version 1.0.0 veröffentlicht; drei Tage später wurden die App-Architektur-Module entfernt und ein kleinerer Machine-Learning-Kern geschrieben

  3. Reduziert: Die Tests schrumpften auf eine einzige Platzhalterdatei, kleine Stub-Schichten wurden hinzugefügt

  4. 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

Links

Verwandter Artikel

Artikel lesen