Cien días Swift (Día 26) -Proyecto 4: Parte 1

百日 学 Swift (Día 26) - Proyecto 4, primera parte (Proyecto 4: Parte 1)

1. BetterRest: Introducción (introducción del proyecto BetterRest)

Con la tecnología Core ML, intente implementar el análisis de regresión, que es el comienzo del aprendizaje automático. Core ML es una tecnología integrada en todos los iPhones.

Requisitos del proyecto: Ayude a los bebedores de café a mejorar la calidad del sueño haciendo las siguientes tres preguntas:

(1) ¿Cuándo quieren despertarse?

(2) ¿Cuántas horas de sueño quieren?

(3) ¿Cuántas tazas de café toman todos los días?

Con estos tres valores, los ingresaremos en Core ML para obtener un resultado que nos diga cuándo dormir. Si lo piensa, hay miles de millones de respuestas posibles: todos los diferentes tiempos de despertar multiplicados por todas las horas de sueño, y luego multiplicados por la cantidad de café. Indudablemente este número es enorme, pero en aplicaciones prácticas no es necesario e imposible obtener datos para todos, solo necesitamos asegurarnos de que las muestras recolectadas sean lo suficientemente grandes. Los datos de muestra se pueden descargar en GitHub .

Creemos el proyecto primero.

2. Ingresar números con Stepper (Ingresar los números con Stepper )

Paso a paso (paso a paso) es un componente utilizado para ingresar números, hay dos botones +y -. Puede vincular varios tipos de datos, como Int y Double, y el rango de valores está determinado por el tipo. Los métodos comunes paso a paso son onIncrement, onDecrementy onEditingChanged. El uso específico es el siguiente:

@State private var sleepAmount = 8.0
var body: some View {
    Stepper(value: $sleepAmount, in: 4...12, step: 0.25){
        Text("\(sleepAmount, specifier: "%.2f") hours")
    }
}

Parámetro:

  • valor: generalmente el estado de enlace
  • en: rango de números
  • paso: longitud del paso

3. Seleccionar fechas y horas con DatePicker (use DatePicker para seleccionar la fecha y la hora)

DatePicker es un componente dedicado para ingresar fechas, que puede vincularse a las propiedades de tipo Fecha.

@State private var wakeUp = Date()

var body: some View {
    VStack(spacing: 5) {
        VStack{
            Text("显示标签, 选择时分")
            DatePicker("请选择时间:", selection: $wakeUp, displayedComponents: .hourAndMinute)
        }.font(.headline)
        Divider()
        VStack{
            Text("隐藏标签")
            DatePicker("请选择日期:", selection: $wakeUp).labelsHidden()
        }.font(.headline)
        Divider()
        VStack{
            Text("放入表单 限制为始于现在")
            Form {
                DatePicker("请选择日期和时间:", selection: $wakeUp, in: Date()...)
            }
        }.font(.headline)
    }
}

Parámetro:

  • Etiqueta: incluso si se establece en carácter nulo, si no hay etiqueta Oculta, dejará espacio
  • selección: la propiedad vinculada
  • Componentes mostrados:
    • Predeterminado: un día, una hora, un minuto
    • .date: día, mes, año
    • .hora y minuto: horas, minutos
  • in: rango, esto es similar al rango utilizado en el bucle, pero el tipo de datos es Fecha, no Int o Doble. Debido a que la expresión del tiempo es más complicada, primero puede establecer los puntos de inicio y finalización como variables, lo cual es fácil de controlar. Además, puede escribir solo un lado y dejar que Swift infiera el otro lado (el bucle no es aceptable, entiendo que el bucle no puede ser infinito, pero el tiempo es infinito, jaja)

Trabajar con un 4. fechas (fecha de procesamiento)

Swift proporciona Dateuna estructura que encapsula el año, mes, día, hora, minuto, segundo ...... similares. El cálculo del tipo de fecha siempre se ocupa de la unidad de segundos, lo que es particularmente inconsistente con nuestros hábitos diarios.

Swift también proporciona una DateComponentsestructura, puede guardar y leer una parte específica del tiempo, por ejemplo, mensualmente, puntos.

Uso Swift DAteFormatterfecha de finalización Datey la cadena de Stringconversión entre.

Esta parte del contenido se ve un poco aturdida, porque no hay una introducción en profundidad. El documento no ha sido examinado cuidadosamente.

5. Entrenando un modelo con Create ML (Use CreatML para entrenar el modelo)

Core ML puede manejar varias tareas de entrenamiento, como reconocer imágenes, sonidos e incluso movimiento. Este proyecto estudiará la regresión de tablas, que es muy común en el aprendizaje automático, es decir, puede encontrar la relación entre varios valores en Crear ML a través de una gran cantidad de datos similares a una hoja de cálculo.

El aprendizaje automático se realiza en dos pasos:

  • Capacitación del modelo: el proceso mediante el cual la computadora analiza todos los datos para comprender la relación entre los diversos valores. Para datos grandes, el tiempo de capacitación puede ser de unas pocas horas o incluso más.
  • Predicción: hecho en el dispositivo. Proporcione el modelo entrenado a la aplicación, y la aplicación utilizará los resultados anteriores para estimar los nuevos datos en tiempo de ejecución.

(1) Crear un proyecto

Primero cree un proyecto, a través del menú Xcode y elija Open Developer Tool> Create MLabrir la aplicación Crear ML. Hay muchas plantillas para elegir, desplácese hacia abajo, seleccione Tabular Regressory luego haga clic en Siguiente. Ingrese el nombre del proyecto BetterRest, luego haga clic en Siguiente, seleccione la carpeta guardada y luego haga clic en Crear.

(2) Proporcionar datos de entrenamiento para Crear ML.

Para ver las estadísticas en bruto, que contiene cuatro valores: hora de levantarse, mirar hacia adelante a dormir, beber café todos los días y cuántos realmente necesidad de dormir. Los datos del proyecto se guardan en un BetterRest.csvarchivo. Este es un conjunto de datos de valores separados por comas que Create ML puede usar. Nuestro primer trabajo es importar este conjunto de datos.

Por lo tanto, en Crear ML, seleccione Model Sourcesen la barra de navegación a la izquierda BetterRest. A continuación, en el lado derecho Data Inputsen Traning Date, haga clic en la Select Filelista desplegable para abrir una ventana de selección de archivos, seleccione BetterRest.csv.

(3) Identificar objetivos Targety característicasFeatures

Objetivo es el valor que desea que la computadora aprenda a predecir, y Características es el valor que desea que la computadora verifique para predecir el objetivo. Por ejemplo, si elige la cantidad de sueño que cree que necesita y la cantidad de sueño que realmente necesita, puede entrenar a la computadora para predecir cuánto café tomó.

Seleccione Destino para actualSleepindicar que desea que la computadora aprenda a predecir el tiempo de sueño real requerido. Luego Select Features..., a continuación, seleccione las tres opciones: wake, estimatedSleepy coffeesignifica que el equipo va a generar una predicción cuando los tres factores se toman en cuenta.

(4) algoritmo de selección

Select Features...La lista desplegable debajo del botón se utiliza para seleccionar el algoritmo. Hay cinco opciones: "Automático" Automatic, "Bosque aleatorio" Random Forest, "Árbol mejorado" Boosted Tree, "Árbol de decisión" Decision Treey "Regresión lineal" Linear Regression. Todos usan diferentes métodos para analizar datos. Aunque este no es un libro sobre aprendizaje automático, todavía quiero explicar brevemente su trabajo.

La regresión lineal es la más fácil de entender porque es casi completamente la forma en que funciona nuestro cerebro. La regresión lineal intenta estimar la relación entre variables tratándolas como parte de una función lineal, por ejemplo applyAlgorithm(var1, var2, var3). El objetivo de la regresión lineal es poder dibujar una línea recta en todos los puntos de datos, donde la distancia promedio entre la línea recta y cada punto de datos debe ser lo más pequeña posible.

La estructura de árbol formada por la regresión del árbol de decisión nos permite organizar la información en una serie de opciones. Por ejemplo: "¿Eres un humano o un animal? Si eres un humano, ¿estás vivo o muerto? Si todavía estás vivo, ¿eres joven o viejo?", Etc., cada vez que el árbol se ramifica según la respuesta a cada pregunta. Hasta que haya una respuesta definitiva.

La regresión de árbol mejorada utiliza una serie de árboles de decisión para trabajar, donde cada árbol está diseñado para corregir cualquier error en el árbol anterior. Por ejemplo, el primer árbol de decisión hará todo lo posible para encontrar una buena predicción, pero se reduce en un 20%. Luego, páselo al segundo árbol de decisión para un mayor refinamiento, y luego repita el proceso, pero esta vez, el error cae al 10%. Que entró en el tercer árbol, el error se redujo al 8%, y el cuarto árbol, el error se redujo al 7%.

Los bosques aleatorios son similares a los árboles mejorados, pero ligeramente diferentes: para árboles mejorados, cada decisión en el árbol puede acceder a todos los datos disponibles, mientras que para árboles aleatorios, cada árbol solo puede acceder a un subconjunto de datos.

Imagine que se enfrenta a un problema de codificación e intenta encontrar una solución. Si le pide consejo a un colega, él le dará algunas ideas basadas en lo que sabe. Si le pide consejo a otros colegas, le darán diferentes ideas basadas en lo que saben. Si le pide consejo a un centenar de colegas, obtendrá una serie de soluciones.

Los antecedentes, la educación y la experiencia laboral de cada colega son diferentes a los de otros colegas, por lo que recibirá una serie de sugerencias. Sin embargo, si promedia las sugerencias de todos (independientemente de lo que diga la mayoría de las personas y de cómo toman sus decisiones), entonces tiene la mejor oportunidad de obtener la solución correcta.

Así es como funciona el Regulador forestal aleatorio: cada árbol de decisión tiene su propia vista de los datos, que es diferente de otros árboles, y al combinar todas las predicciones para formar un promedio, es probable que obtenga buenos resultados.

AutomaticLas opciones pueden intentar seleccionar automáticamente el mejor algoritmo. Aunque no siempre es correcto, nos ayudará a reducir el enredo de opciones. Aquí elegimos este.

(5) Entrenamiento

Cuando todo esté listo, haga clic en el botón "Entrenar" en la barra de título de la ventana. Después de unos segundos (porque nuestro volumen de datos aún es pequeño), verá algunos indicadores de resultados. El valor que nos interesa se llama "error cuadrático medio", y debe obtener un valor de aproximadamente 180. Esto significa que el modelo puede predecir el tiempo de sueño exacto recomendado en promedio, con un error de solo 180 segundos o tres minutos.

(6) Salida

En la esquina superior derecha, Outputpuede ver un icono de MLModel, el tamaño del archivo es de aproximadamente 438 bytes. El mío es de 555 bytes, hay una ligera diferencia entre la máquina y la máquina. Ahora que el modelo ha sido entrenado, arrastre el icono de Crear ML al escritorio y espere a que se use en el código la próxima vez.

** Sugerencia: ** Si desea probar otros algoritmos para el entrenamiento, haga clic en "Hacer una copia" en la esquina inferior derecha de la ventana "Crear ML".

Tio
Publicado 77 artículos originales · Me gusta 16 · Visitantes más de 40,000

Supongo que te gusta

Origin blog.csdn.net/hh680821/article/details/105289736
Recomendado
Clasificación