0% encontró este documento útil (0 votos)
8 vistas14 páginas

Introducción a Machine Learning y SVC

Machine Learning es una rama de la Inteligencia Artificial que permite a los sistemas aprender automáticamente a partir de datos. Los algoritmos se dividen en categorías como aprendizaje supervisado, no supervisado, semi-supervisado y por refuerzo, siendo el aprendizaje supervisado el más común para predecir resultados. El proceso incluye la preparación de datos, la creación de modelos y la evaluación de su rendimiento mediante métricas adecuadas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas14 páginas

Introducción a Machine Learning y SVC

Machine Learning es una rama de la Inteligencia Artificial que permite a los sistemas aprender automáticamente a partir de datos. Los algoritmos se dividen en categorías como aprendizaje supervisado, no supervisado, semi-supervisado y por refuerzo, siendo el aprendizaje supervisado el más común para predecir resultados. El proceso incluye la preparación de datos, la creación de modelos y la evaluación de su rendimiento mediante métricas adecuadas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Machine Learning

Machine Learning es una disciplina científica del ámbito de la Inteligencia Artificial que crea sistemas que aprenden automáticamente.
Aprender en este contexto quiere decir identificar patrones complejos en millones de datos. La máquina que realmente aprende es un
algoritmo que revisa los datos y es capaz de predecir comportamientos futuros.

Los diferentes algoritmos de machine learning se agrupan en : Supervised learning, Unsupervised learning, Semi-supervised learning,
Reinforcement learning.

Aprendizaje supervisado

Los algoritmos de aprendizaje supervisados construyen un modelo matemático de un conjunto de datos que contiene tanto las entradas
como las salidas [Link] el modelo matemático, cada ejemplo de entrenamiento está representado por una matriz o vector, a
veces llamado vector de features, y los datos de entrenamiento están representados por una matriz. A través de la optimización iterativa
de una función objetivo, los algoritmos de aprendizaje supervisado aprenden una función que puede usarse para predecir la salida
asociada con nuevas entradas. Los tipos de algoritmos de aprendizaje supervisado incluyen la clasificación y la regresión.

Clasificación

Todas las librerias deben ser llamadas en grupo y una sola vez.

train_test_split es utilizado para dividir datos.

[Link] es la librería de machine learning.

[Link] es la libreria para las métricas.


In [1]: from [Link] import drive
import numpy as np
import [Link] as plt
import pandas as pd
import [Link]
import [Link] as plt
from pandas import DataFrame
from sklearn.model_selection import train_test_split
from [Link] import LinearSVC, SVC
from [Link] import accuracy_score,fl_score
from [Link] import StandardScaler
from [Link] import Pipeline

Se procede a montar el drive

In [2]: [Link]( '/content/gdrive' )


Mounted at /content/gdrive

Es importante crear una variable que contenga la dirección de de la carpeta donde se desea trabajar tanto para guardar comopara leer
datos.

In [3]: path_data = "Dirección de la carpeta donde se encuentra el archivo a analizar"

#Ejemplo
#path_data = "/content/gdrive/My Drive/Intel igenciaArtificial/"

Luego de tener las dirección de la carpeta a utilizar se procede a leer los datos de clasificación.

In [4]: data = pd.read_excel(path_data+'nombre del archivo excel o subcarpetas + nombre de archivo' )

#Ejemplo
#data= pd.read_excel(path_data+'[Link]')

Para mostrar que datos tiene el dataframe data se utiliza la opción .head() que solo muestra las 5 primeras filas. Es muy importante
saber como son los datos, cantidad, columnas, si faltan datos, etc.
In [6]: [Link]()

Out[6]: Unnamed: O t1 t2 t3 t4 t5 Falla

o o 0.005085 0.209895 0.167741 0.185438 -0.000181 2

1 1 0.004835 0.209634 0.167600 0.185388 -0.000087 2

2 2 0.004935 0.208475 0.168226 0.184962 -0.000118 2

3 3 0.005222 0.209669 0.168295 0.185691 -0.000151 2

4 4 0.005768 0.210190 0.169399 0.186443 -0.000117 2

EJERCICIO.

Buscar la forma de mostra un resumen de la tabla donde indique la cantidad de datos, valores máximos y mínimos.

In [ ]: data. describe()
Out[8]: Unnamed: O t1 t2 t3 t4 t5 Falla

count 1225.000000 1225.000000 1225.000000 1225.000000 1225.000000 1.225000e+03 1225.000000

mean 612.000000 0.005660 0.131291 0.098470 0.111333 1.2654 79e-05 2.367347

std 353.771348 0.001869 0.132035 0.110145 0.119902 2.658838e-04 0.774752

min 0.000000 0.003715 0.030897 0.020922 0.024705 -9.775517e-04 1.000000

25% 306.000000 0.004859 0.051271 0.033771 0.040276 -1 .063525e-04 2.000000

50% 612.000000 0.005240 0.091883 0.063276 0.073212 5.086987e-07 3.000000

75% 918.000000 0.005701 0.139932 0.092839 0.108847 3.978629e-05 3.000000

max 1224.000000 0.016850 0.660945 0.537447 0.590824 2.640066e-03 3.000000

Antes de utilizar los métodos de machine learning los datos deben estar completos, es decir quena existan vacíos o NAN. Por otro lado,
estas tabalas solo deben contener las variables de entrada (X) así como las variables objetivo (y).

De la tabla anterior se puede ver una columna Unnamed la cual es no es parte del estudio. Por lo tanto se debe eliminar estar columna
utilizando el comando drop.
In [7]: [Link]([ 'Unnamed: 0' ], inplace=True, axis =l )

Después de utilizar el drop pasamos a verificar nuevamente si la tabla se encuentra de acuerdo a las necesidades requeridas.

In [8]: [Link]()
Out[8]: t1 t2 t3 t4 t5 Falla

o 0.005085 0.209895 0.167741 0.185438 -0.000181 2

1 0.004835 0.209634 0.167600 0.185388 -0.000087 2

2 0.004935 0.208475 0.168226 0.184962 -0.000118 2

3 0.005222 0.209669 0.168295 0.185691 -0.000151 2

4 0.005768 0.210190 0.169399 0.186443 -0.000117 2

A continuación se crea la variable X (datos de entrada) y la variable y(objetivo). Las variables X, y serán obtenidas a partir de la tabla
data.

La variable X será obtenida haciendo una copia de data. La función copy() es utilizada con el objetivo de no modificar la data original.

In [9]: X = [Link]()

La variable y será utilizando la función pop(). Este comando extrae la columna deseada y la pasa la variable y asi como tambien
actualiza la variable X sin la columna extraíada anterioremente

In [10]: y = X. pop( ' Falla' )

EJERCICIO Mostras las variables X , y.

In [ ]:

La función train_test_split se utiliza para dividir datos en dos grupos, en este caso se va dividir en entrenamiento (X,y) y en test (X,y).
test_size representa la cantidad de los valores de test. Cuando se pone en decial nos indica el porcentaje,caso contrario seria una
cantidad fija de datos.
In [11]: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.5 , random_state = 40 )

In [13] : X_train
Out[13]: t1 t2 t3 t4 t5
13 0.004665 0.209349 0.167920 0.185220 -0.000109

312 0.005059 0.150726 0.116804 0.130656 -0.000088

473 0.005046 0.039151 0.026669 0.031376 0.000004

267 0.004614 0.045547 0.030134 0.035795 0.000004

810 0.004310 0.074879 0.047261 0.057093 0.000102

626 0.005915 0.112954 0.084438 0.095751 0.000049

1016 0.005551 0.060462 0.034748 0.042923 -0.000136

165 0.005378 0.102661 0.076134 0.086726 0.000148

7 0.004844 0.209589 0.167539 0.185285 -0.000105

219 0.005043 0.045482 0.030887 0.036396 0.000010

612 rows x 5 columns

EJERCICIO [Link] y mostrar los datos de train y test. [Link] test_size por un número entero y hacer el ejercicio 1.

A continuación se muestra el codigo de Support Vector Machine(método de machine learning). En el caso de clasificación se utiliza SVC
(support vector classification). Los kernel de este método son importantes para el ajuste de método.

Para mayor información: httgs://[Link]/stable/modules/generated/sklearn .[Link] (httgs://scikit-


[Link]/stable/modules/generated/[Link]).
In [14]: clf_svm = Pipeline([( 'scaler' , StandardScaler()),
( 'svm' , SVC(C=l , kernel ='rbf' , degree=3, gamma ='auto' , random_state=0))])
clf_svm.fit(X_train, y_train)
Out[14]: Pipeline(memory=None,
steps=[('scaler',
StandardScaler(copy=True, with_mean=True, with_std=True)),
('svm',
SVC(C=l, break_ties=False, cache_size=200, class_weight=None,
coef0=0.0, decision_function_shape='ovr', degree=3,
gamma='auto', kernel='rbf', max_iter=-1, probability=False,
random_state=0, shrinking=True, tol=0.001,
verbose=False))],
verbose=False)
In [15]: clf_svm.predict(X_test)
Out[lS]: array( [3, 2, 3, 3, 3, 3, 1, 3, 2, 3, 2, 3, 2, 3, 3, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 2, 3,
3, 3, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2,
3, 3, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 2, 3, 2,
1, 2, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 2, 3, 1, 3, 3, 3, 3, 2, 2, 2,
2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3,
3, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 3, 3, 3, 3, 2, 2,
3, 3, 1, 3, 2, 3, 1, 2, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 1,
1, 3, 2, 2, 2, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 2, 3, 2, 3, 3,
3, 3, 2, 3, 3, 3, 3, 2, 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 2, 2,
2, 3, 1, 3, 2, 2, 3, 3, 3, 2, 3, 3, 2, 2, 2, 3, 3, 2, 3, 2, 3, 2,
3, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 2, 2, 1, 3, 3, 3, 2, 3, 2, 3, 2,
2, 2, 3, 3, 3, 3, 3, 3, 2, 3, 1, 3, 1, 2, 3, 2, 2, 2, 3, 3, 3, 3,
3, 3, 2, 3, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3,
3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 2, 3, 2, 3, 2,
3, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3,
2, 3, 3, 1, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3,
3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 1, 2, 3, 3, 3, 2, 3, 3, 2, 3, 3,
3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 3, 2, 3, 3, 3, 2, 3, 3, 2,
3, 2, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3,
3, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 3, 3, 3, 2, 3, 2, 2, 3, 2,
3, 3, 2, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 2, 2, 3, 2, 3,
3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 3, 3, 3, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 3, 3, 2,
3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
3, 3, 3, 3, 3, 2, 2, 3, 2, 3, 3, 3, 1, 3, 2, 3, 2, 3, 3, 2, 3, 3,
2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 3, 2, 2])

Las métricas son utilizadas para determinar la eficiencia del método. Una métrica muy utilizada en clasificación es el f1_score.

Para mayor información de métricas visitar la siguiente página: httQs://[Link]/stable/modules/model [Link]


.(httQs://[Link]/stable/modules/model [Link]).
In [16]: fl_svm =fl_score(y_test, clf_svm.predict(X_test),average='micro' )
fl_svm
Out[16]: 0.7194127243066885

Type Markdown and LaTeX: a 2

EJERCICIO

[Link] el f1_score para el entrenamiento.

Regresión

In [22]: from google . colab import drive


import numpy as np
import matplotlib . pyplot as plt
import pandas as pd
import scipy . io
import matplotlib . pyplot as plt
from pandas import DataFrame
from sklearn . model_selection import train_test_split
from sklearn . metrics import r2_score,mean_squared_error, mean- absolute- error
from sklearn . svm import SVR
import seaborn as sns

In [ ]: [Link]( '/content/gdrive' )
Drive already mounted at /content/gdrive; to attempt to forcibly remount , call drive . mount("/content/gdrive",
force_remount=True).

In [ ] : path_data = "Nombre de la carpeta "


In [17]: data = pd.read_excel(path_data+'Nombre del archivo excel' )
[Link]()
Out[17]: id PtP_Fx PtP_Fy PtP_Fz PtP_Vx PtP_Vy PtP_Vz PtP_AE Max_VB

o 1 19.988 49.693 26.362 0.753 0.627 0.761 0.366 48.893

1 2 20.389 50.102 25.701 0.761 0.658 0.809 0.323 49.571

2 3 17.216 48.269 23.890 0.822 0.724 0.862 0.284 50.303

3 4 18.267 47.902 25.763 0.808 0.719 0.760 0.317 51 .084

4 5 18.759 47.100 26.681 0.765 0.716 0.788 0.317 52.250

In [18]: [Link]([ 'id' ], inplace=True , axis =l )


[Link]()
Out[18]: PtP_Fx PtP_Fy PtP_Fz PtP_Vx PtP_Vy PtP_Vz PtP_AE Max_VB

o 19.988 49.693 26.362 0.753 0.627 0.761 0.366 48.893

1 20.389 50.102 25.701 0.761 0.658 0.809 0.323 49.571

2 17.216 48.269 23.890 0.822 0.724 0.862 0.284 50.303

3 18.267 47.902 25.763 0.808 0.719 0.760 0.317 51 .084

4 18.759 47.100 26.681 0.765 0.716 0.788 0.317 52.250

In [19]: X = [Link]()
y = [Link]( 'Max_VB' )

A continuación se dividen los datos. A diferencia de clasificación en este caso se esta utilziando la opción shuffle que sirve para dividir
los datos de forma ordenada o desordenada.

In [20]: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3 ,shuffle=False )

EJERCICIO

[Link] los datos de train y test para los casos de shuffle igual a True y False.
A continuación se muestra el codigo de Support Vector Machine(método de machine learning). En el caso de regresión se utiliza SVR
(support vector regression). Los kernel de este método son importantes para el ajuste de método.

Para mayor información: httgs://[Link]/stable/modules/generated/sklearn .[Link] (httgs://scikit-


[Link]/stable/modules/generated/[Link]).

In [23]: m svr = SVR(kernel='linear' ,


gamma ='scale' ,
( =5000,
)
m_svr.fit(X_train, y_train)
Out[23]: SVR(C=5000, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='scale',
kernel='linear', max_iter=-1, shrinking=True, tol=0.001, verbose=False)

Despues de haber ajustado el método se pueden realizar las predicciones utilizando la opción .predict().

In [24]: y_pred_train = m_svr.predict(X_train)


y_pred_test = m_svr.predict(X_test)

En el caso de regresión es muy importante realizar los gráficos de los datos medidos, entrenamiento y test para así poder comparar y
tener un idea de la eficiencia del método de machine learning.
In [25]: y_pred =[Link]([[Link](data=y_pred_train),
[Link](data=y_pred_test)], ignore_index=True )

[Link](figsize=(10, 6))
[Link](y)
[Link](y_pred, 'ro' )
[Link](y_pred_train, 'bo' )
[Link]([ 'Medido' , 'Test' , 'Train' ], loc ='upper left' )
[Link]( "cut" )
[Link]( "tool wear" )
plt. show()

300 - Medido •
• l'::st ..
• "i"ain
250

200

'-
10
11,J
~ 150
o
B

100

50



o

o 50 100 150 200 250 300
rut
Las métricas son utilizadas para determinar la eficiencia del método. Las métricas mas utilizadas en regresión son RMSE y MAE.

Para mayor información de métricas visitar la siguiente página: httRs://[Link]/stable/modules/model [Link]


.(httRs://[Link]/stable/modules/model [Link]).

In [26]: print ( 'R2=' , r2_score(y_train,y_pred_train))


print ( 'RMSE=' ,mean_squared_error(y_train,y_pred_train) ** (l / 2.0 ))
print ( 'MAE=' ,mean_absolute_error(y_train,y_pred_train))
R2= 0.6412387278116445
RMSE= 9.575966603863657
MAE= 7.5184996066748795

EJERCICIO

[Link] mas métricas para los datos de test.

Type Markdown and LaTeX: a 2

Series Temporales y sus Features


En la mayoria de equipos monitoreados se pueden encontrar series temporales como datos medidos asi como es el caso de mediciones
de vibración .

En este capitulo se explicará el procedimiento para extraer información de las series temporales debido que los métodos de machine
learning no utilizan las señales completas como datos de entrada. Es por eso la importancia de extraer las carácteristicas (features)
representativas de las series temporales.
Como se puede ver en la imagen a seguir una o un conjunto de series de temporales que su vez podria ser divido se le aplicaca un
función para extraer un feature. Las funciones pueden ser : Máximo , mínimo, pico a pico, kurtosis, energía absoluta y muchos mas.

In [ ] : path_data = "Dirección de la carpeta de google drive"

A continuación se procede a leer un archivo .mat que contiene la medición de vibración en un motor eléctrico que tiene fallas en
rodamiento.

In [27]: file = str (105 )

matdata = [Link] . loadmat(path_data+ 'nombre del archivo .mat' )


BA = [Link](matdata[ 'X' +file+'_BA_time' ]).T

Se procede a leer solo una columna de los datos de la variable BA. En este caso se esta utilizando todos los datos.

In [28]: Val_BA = BA[ 0, 0:[Link]]

In [ 29] : plt. plot (Val_BA)


plt. show()

O 20000 40000 60000 80000 100000 120000

EJERCICIO
[Link] los primero 100, 1000 y 10000 puntos de la serie temporal.

Para poder extraer los fatures de la serie temporal se pueden utilizar funciones credas por uno mismo, funciones listas encontradas en
numpy o pandas y por ultimo se pueden utilizar librerías como TSFresh, TSFel y TSFuse.

A seguir se utilizar la función .max de numpy para extarer el maximo valor de la serie temporal que puede ser utilzado como un feature.

In [ ]: Featurel=[Link](Val_BA)
Featurel
Out[31]: 0.3720348961424333

EJERCICIO

[Link] los siguientes features:

-mínimo -pico a pico -valor máximo de la FFT de la serie tempral -energía absoluta

También podría gustarte