Todos los paquetes de código abierto
IASwift

SwiftAI

Machine learning en Swift puro: entrena, evalúa y guarda modelos en el dispositivo.

9EstrellasÚltima versión: v2.0.0Actualizado: 15 de octubre de 2026
Plataformas:iOS 15macOS 12tvOS 15watchOS 8visionOS 1

Licencia: MIT

SwiftAI es un paquete Swift para machine learning clásico en plataformas Apple: clasificación, regresión, clustering y reducción de dimensionalidad sobre tablas de números. Cargas los datos desde CSV o arrays, los divides, entrenas un modelo con una sola llamada a función, lo mides y lo guardas como JSON para cargarlo en tu app, sin necesitar un toolchain de Python ni un servidor. El paquete no tiene dependencias.

Características

  • Once modelos supervisados: regresión lineal y ridge, regresión logística, k-nearest neighbours, naive Bayes gaussiano, árboles de decisión, random forests y redes neuronales, además de clustering k-means y análisis de componentes principales (PCA)
  • Verificado frente a scikit-learn 1.9.1: los tests comparan coeficientes, probabilidades y clusters (por ejemplo, las probabilidades de la regresión logística hasta 1e-5, PCA hasta 1e-10)
  • Errores en lugar de crashes: los datos o ajustes inválidos lanzan un SwiftAIError que indica qué cambiar
  • Carga segura: los modelos, scalers y pipelines son Codable, y el decoding comprueba formas, valores, listas de clases y estructura de árbol
  • Reproducible: cada paso aleatorio recibe un seed, y el mismo seed da el mismo modelo, también para forests entrenados en paralelo
  • El pipeline ajusta el preprocesamiento solo con los datos de entrenamiento y lo aplica igual a cada muestra posterior
  • Modo de lenguaje Swift 6 con comprobación estricta de concurrencia; catálogo DocC con cuatro artículos y la app de ejemplo ModelLab para iOS y macOS

Inicio rápido

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}

Instalación

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]

Capturas de pantalla

Cuatro clasificadores entrenados con las medidas de los pétalos de iris, con la especie que predice cada uno a lo largo del plano y su precisión validada de forma cruzada (k-nearest neighbours 96.0%, regresión logística 95.3%, árbol de decisión 94.0%, red neuronal 96.0%)
Versión oscura de la imagen del límite de decisión: cuatro clasificadores entrenados con las medidas de los pétalos de iris y su precisión validada de forma cruzada

Cronología

  1. Repositorio abierto como un framework de IA amplio con capas de arquitectura de app y código de Vision y NLP

  2. Se publicó la versión 1.0.0; tres días después se eliminaron los módulos de arquitectura de app y se escribió un núcleo de machine learning más pequeño

  3. Reducido: los tests quedaron en un único archivo placeholder y se añadieron pequeñas capas stub

  4. Reconstruido desde cero como un paquete de machine learning clásico sin dependencias, y publicado como 2.0.0; no queda ninguna API de 1.0.0

Enlaces

Artículo relacionado

Leer el artículo