El flujo de trabajo de cualquier proyecto de aprendizaje automático incluye todos los pasos necesarios para construirlo. Un proyecto de ML adecuado consta básicamente de cuatro partes principales que se detallan a continuación:
- Recopilación de datos:
el proceso de recopilación de datos depende del proyecto, pueden ser datos en tiempo real o datos recopilados de varias fuentes, como un archivo, una base de datos, una encuesta y otras fuentes. - Preprocesamiento de datos: por
lo general, dentro de los datos recopilados, hay muchos datos faltantes, valores extremadamente grandes, datos de texto desorganizados o datos ruidosos y, por lo tanto, no se pueden usar directamente dentro del modelo, por lo tanto, los datos requieren un preprocesamiento antes. ingresando al modelo. - Entrenamiento y prueba del modelo: una vez que los datos están listos para la aplicación del algoritmo, están listos para colocarse en el modelo de aprendizaje automático. Antes de eso, es importante tener una idea de qué modelo se va a utilizar, lo que puede dar un buen resultado de rendimiento. El conjunto de datos se divide en 3 secciones básicas, es decir, el conjunto de entrenamiento, el conjunto de validación y el conjunto de prueba. El objetivo principal es entrenar datos en el conjunto de entrenamiento, ajustar los parámetros usando el ‘conjunto de validación’ y luego probar el conjunto de prueba de rendimiento.
- Evaluación:
La evaluación es una parte del proceso de desarrollo del modelo. Ayuda a encontrar el mejor modelo que representa los datos y qué tan bien funciona el modelo elegido en el futuro. Esto se hace después de realizar el entrenamiento del modelo en diferentes algoritmos. El lema principal es concluir la evaluación y elegir el modelo en consecuencia nuevamente.
Flujo de trabajo de ML en python
La ejecución del flujo de trabajo es similar a una canalización, es decir, la salida de los primeros pasos se convierte en la entrada del segundo paso. Scikit-learn es una poderosa herramienta para el aprendizaje automático, proporciona una función para manejar dichas tuberías en el módulo sklearn.pipeline llamado Pipeline.
Se necesitan 2 parámetros importantes, expresados de la siguiente manera:
- La lista de pasos:
Lista de (nombre, transformación) tuplas (implementación de ajuste/transformación) que están enstringdas, en el orden en que están enstringdas, con el último objeto como estimador. - verboso:
Código:
python3
from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from sklearn.tree import DecisionTreeClassifier # import some data within sklearn for iris classification iris = datasets.load_iris() X = iris.data y = iris.target # Splitting data into train and testing part # The 25 % of data is test size of the data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25) # importing pipes for making the Pipe flow from sklearn.pipeline import Pipeline # pipe flow is : # PCA(Dimension reduction to two) -> Scaling the data -> DecisionTreeClassification pipe = Pipeline([('pca', PCA(n_components = 2)), ('std', StandardScaler()), ('decision_tree', DecisionTreeClassifier())], verbose = True) # fitting the data in the pipe pipe.fit(X_train, y_train) # scoring data from sklearn.metrics import accuracy_score print(accuracy_score(y_test, pipe.predict(X_test)))
Producción:
[Pipeline] ............... (step 1 of 3) Processing pca, total= 0.0s [Pipeline] ............... (step 2 of 3) Processing std, total= 0.0s [Pipeline] ..... (step 3 of 3) Processing Decision_tree, total= 0.0s 0.9736842105263158
Propiedad importante:
- pipe.named_steps: pipe.named_steps es un diccionario que almacena la clave de nombre vinculada a los objetos individuales en la tubería. Por ejemplo:
pipe.named_steps['decision_tree'] # returns a decision tree classifier object
Hiperparámetros:
hay diferentes conjuntos de hiperparámetros establecidos dentro de las clases que se pasan como canalización. Para verlos, se utiliza el método pipe.get_params(). Este método devuelve un diccionario de los parámetros y descripciones de cada clase en la canalización.
Ejemplo:
python3
from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from sklearn.tree import DecisionTreeClassifier # import some data within sklearn for iris classification iris = datasets.load_iris() X = iris.data y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25) from sklearn.pipeline import Pipeline pipe = Pipeline([('pca', PCA(n_components = 2)), ('std', StandardScaler()), ('Decision_tree', DecisionTreeClassifier())], verbose = True) pipe.fit(X_train, y_train) # to see all the hyper parameters pipe.get_params()
Producción:
{'memory': None, 'steps': [('pca', PCA(copy=True, iterated_power='auto', n_components=2, random_state=None, svd_solver='auto', tol=0.0, whiten=False)), ('std', StandardScaler(copy=True, with_mean=True, with_std=True)), ('Decision_tree', DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini', max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort='deprecated', random_state=None, splitter='best'))], 'verbose': True, 'pca': PCA(copy=True, iterated_power='auto', n_components=2, random_state=None, svd_solver='auto', tol=0.0, whiten=False), 'std': StandardScaler(copy=True, with_mean=True, with_std=True), 'Decision_tree': DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini', max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort='deprecated', random_state=None, splitter='best'), 'pca__copy': True, 'pca__iterated_power': 'auto', 'pca__n_components': 2, 'pca__random_state': None, 'pca__svd_solver': 'auto', 'pca__tol': 0.0, 'pca__whiten': False, 'std__copy': True, 'std__with_mean': True, 'std__with_std': True, 'Decision_tree__ccp_alpha': 0.0, 'Decision_tree__class_weight': None, 'Decision_tree__criterion': 'gini', 'Decision_tree__max_depth': None, 'Decision_tree__max_features': None, 'Decision_tree__max_leaf_nodes': None, 'Decision_tree__min_impurity_decrease': 0.0, 'Decision_tree__min_impurity_split': None, 'Decision_tree__min_samples_leaf': 1, 'Decision_tree__min_samples_split': 2, 'Decision_tree__min_weight_fraction_leaf': 0.0, 'Decision_tree__presort': 'deprecated', 'Decision_tree__random_state': None, 'Decision_tree__splitter': 'best'}
Publicación traducida automáticamente
Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA