Scikit-learn és una biblioteca Python de codi obert que simplifica el procés de creació de models d'aprenentatge automàtic. Ofereix una interfície neta i consistent que ajuda tant els usuaris principiants com els experimentats a treballar de manera eficient.
- Admet tasques com ara l'agrupació de regressió de classificació i el preprocessament
- Fa que la construcció de models sigui ràpida i fiable
- Proporciona eines llestes per utilitzar per a la formació i l'avaluació
- Redueix la complexitat evitant la implementació manual d'algorismes
Instal·lació i ús de Scikit-learn
Abans de començar a construir models hem d'instal·lar-los Scikit-aprendre. Requereix Python 3.8 o posterior i depèn de dues biblioteques importants: NumPy i SciPy. Assegureu-vos que aquests s'instal·lin primer.
Per instal·lar Scikit-learn, executeu l'ordre següent:
pip install -U scikit-learn
Això baixarà i instal·larà la darrera versió de Scikit-learn juntament amb les seves dependències. Vegem diversos passos implicats en el procés de construcció del model mitjançant la biblioteca Scikit-learn.
Pas 1: carregar un conjunt de dades
Un conjunt de dades consta de:
- Característiques (X): Variables d'entrada que descriuen les dades
- Objectiu (y): El valor que volem predir
Scikit-learn proporciona conjunts de dades integrats com Iris Digits i Boston Housing. Utilitzant el conjunt de dades Iris:
ordena la llista de matrius java
- load_iris() carrega les dades
- X emmagatzema les dades de les característiques
- y emmagatzema les etiquetes de destinació
- feature_names i target_names donen noms descriptius
Podem inspeccionar les primeres files per entendre l'estructura. Per a conjunts de dades personalitzats, Pandas s'utilitza habitualment per carregar fitxers externs com ara CSV.
Pythonfrom sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Sortida:
S'està carregant el conjunt de dadesDe vegades hem de treballar amb les nostres pròpies dades personalitzades i després carreguem un conjunt de dades extern. Per a això podem utilitzar el biblioteca dels pandes per a una fàcil càrrega i manipulació de conjunts de dades.
Per a això podeu consultar el nostre article sobre Com importar fitxers csv a pandas ?
Pas 2: Divisió del conjunt de dades
Per avaluar un model de manera justa, dividim les dades en:
- Set d'entrenament: S'utilitza per entrenar el model
- Conjunt de proves: s'utilitza per avaluar fins a quin punt es generalitza el model
Amb train_test_split dividim el conjunt de dades Iris de manera que el 60% sigui per a l'entrenament i el 40% per a proves (test_size=0,4). random_state=1 garanteix la reproductibilitat.
Després de dividir tenim:
- X_train y_train -> Dades d'entrenament
- X_test y_test -> Dades de prova
Comprovar les formes assegura que les dades es divideixen correctament.
Pythonfrom sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1)
Ara comprovem el Formes de les dades dividides per garantir que ambdós conjunts tinguin proporcions correctes de dades evitant possibles errors en l'avaluació o formació del model.
Pythonprint('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape)
Sortida:
Forma de les dades divididesPas 3: maneig de dades categòriques
Els algorismes d'aprenentatge automàtic funcionen amb entrades numèriques, de manera que les dades categòriques (de text) s'han de convertir en números. Si no es codifiquen correctament, els models poden malinterpretar les categories. Scikit-learn ofereix diversos mètodes de codificació:
1. Codificació d'etiquetes : converteix cada categoria en un nombre enter únic. Per exemple, en una columna amb categories com "gat", "gos" i "ocell", les convertiria a 0 1 i 2 respectivament. Aquest mètode funciona bé quan les categories tenen un ordre significatiu com ara Baix Mitjà i Alt.
- LabelEncoder(): S'ha inicialitzat per crear un objecte codificador que convertirà els valors categòrics en etiquetes numèriques.
- fit_transform(): Aquest mètode primer ajusta el codificador a les dades categòriques i després transforma les categories en etiquetes numèriques corresponents.
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature)
Sortida:
matriu de cadenes en llenguatge c
Característica codificada: [1 2 2 1 0]
2. Codificació One-Hot : One-Hot Encoding crea columnes binàries separades per a cada categoria. Això és útil quan les categories no tenen cap ordre natural. Exemple: gat gos ocell -> 3 columnes noves (gat/gos/ocell) amb 1 i 0.
- L'entrada s'ha de remodelar en una matriu 2D
- OneHotEncoder(sparse_output=False) genera columnes binàries
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature)
Sortida:
A més de la codificació d'etiquetes i la codificació One-Hot, hi ha altres tècniques com Codificació mitjana .
Pas 4: Entrenar el model
Ara que les nostres dades estan a punt, és hora d'entrenar un model d'aprenentatge automàtic. Scikit-learn té molts algorismes amb una interfície coherent per a la predicció i l'avaluació de l'entrenament. Aquí farem servir Regressió logística com a exemple.
Nota : No entrarem en els detalls de com funciona l'algorisme, ja que només ens interessa entendre la seva implementació.
- log_reg = LogisticRegression (max_iter=200): Creació d'un objecte classificador de regressió logística.
- log_reg.fit(X_train y_train): Utilitzant això el model de regressió logística ajusta els paràmetres del model per adaptar-se millor a les dades.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Formació amb regressió logística.Pas 5: feu prediccions
Un cop entrenat, utilitzem el model per fer prediccions sobre les dades de prova X_test cridant al mètode predict. Això retorna les etiquetes previstes y_pred.
- log_reg.predict: Utilitza un model de regressió logística entrenat per predir etiquetes per a les dades de prova X_test.
y_pred = log_reg.predict(X_test)
Pas 6: Avaluació de la precisió del model
Comproveu el rendiment del nostre model comparant y_test i y_pred. Aquí estem utilitzant el mètode accuracy_score del mòdul de mètriques.
Pythonfrom sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Sortida:
Precisió del model de regressió logística: 0,96666666666666667
sql ordenar per data
Ara volem que el nostre model faci prediccions sobre noves dades de mostra. Aleshores, l'entrada de mostra es pot passar simplement de la mateixa manera que passem qualsevol matriu de característiques. Aquí l'hem utilitzat com a mostra = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species)
Sortida:
Prediccions: [np.str_('virginica') np.str_('virginica')]
Característiques de Scikit-learn
Scikit-learn s'utilitza perquè fa que la construcció de models d'aprenentatge automàtic sigui senzill i eficient. Aquí hi ha alguns motius importants:
- Eines llestes per utilitzar : Proporciona funcions integrades per a tasques habituals com ara models d'entrenament de preprocessament de dades i fer prediccions. Això estalvia temps evitant la necessitat de codificar algorismes des de zero.
- Avaluació del model fàcil : Amb eines com la validació creuada i les mètriques de rendiment, ajuda a mesurar el bon funcionament del nostre model i identificar àrees de millora.
- Suport ampli d'algorisme : Ofereix molts algorismes d'aprenentatge automàtic populars, com ara la regressió de classificació i l'agrupació, que ens donen flexibilitat per triar el model adequat per al nostre problema.
- Integració suau : Construït sobre biblioteques importants de Python com NumPy i SciPy perquè s'adapti al nostre flux de treball d'anàlisi de dades existent.
- Interfície senzilla i coherent : La mateixa sintaxi senzilla funciona en diferents models ajuda a facilitar l'aprenentatge i el canvi entre algorismes.
- L'afinació del model és fàcil : eines com la cerca de quadrícula ens ajuden a ajustar la configuració del nostre model per millorar la precisió sense problemes addicionals.
Beneficis d'utilitzar Scikit-learn
- Fàcil d'usar : La interfície coherent i senzilla de Scikit-learn fa que sigui accessible per a principiants i millor per als experts.
- Estalvi de temps: Les eines i algorismes preconstruïts redueixen el temps de desenvolupament, cosa que ens permet centrar-nos més a resoldre problemes que a codificar detalls.
- Millor rendiment del model : Les eines de sintonització i avaluació fàcils d'utilitzar ajuden a millorar la precisió i la fiabilitat del model.
- Flexible i escalable : Admet una àmplia gamma d'algorismes i s'integra sense problemes amb altres biblioteques de Python ajuda a fer-lo adequat per a projectes de qualsevol mida.
- Fort suport comunitari : una gran comunitat activa garanteix actualitzacions periòdiques, una àmplia documentació i molts recursos per ajudar-nos quan ens quedem atrapats.