Partage via


microsoftml.concat : concatène plusieurs colonnes en un seul vecteur

Usage

microsoftml.concat(cols: [dict, list], **kargs)

Description

Combine plusieurs colonnes en une seule colonne à valeur vectorielle.

Détails

concat crée une seule colonne à valeurs vectorielles à partir de plusieurs colonnes. Cette opération peut être effectuée sur les données avant d'effectuer l'apprentissage d'un modèle. La concaténation peut accélérer de manière significative le traitement des données lorsque le nombre de colonnes atteint des centaines ou des milliers.

Arguments

cols

Dictionnaire de caractères ou liste de noms de variables à transformer. Si dict, les clés représentent les noms des nouvelles variables à créer. Notez que toutes les variables d'entrée doivent être du même type. La transformation de concaténation peut permettre de générer plusieurs colonnes de sortie. Dans ce cas, vous devez utiliser une liste de vecteurs pour définir un mappage un à un entre les variables d'entrée et de sortie. Par exemple, pour concaténer les colonnes InNameA et InNameB dans la colonne OutName1, ainsi que les colonnes InNameC et InNameD dans la colonne OutName2, utilisez le dictionnaire : dict(OutName1 = [InNameA, InNameB], outName2 = [InNameC, InNameD])

kargs

Arguments supplémentaires envoyés au moteur de calcul.

Retours

Objet définissant la transformation de concaténation.

Voir aussi

drop_columns, select_columns.

Exemple

'''
Example on logistic regression and concat.
'''
import numpy
import pandas
import sklearn
from microsoftml import rx_logistic_regression, concat, rx_predict
from microsoftml.datasets.datasets import get_dataset

iris = get_dataset("iris")

if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

# We use iris dataset.
irisdf = iris.as_df()

# The training features.
features = ["Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width"]

# The label.
label = "Label"

# microsoftml needs a single dataframe with features and label.
cols = features + [label]

# We split into train/test. y_train, y_test are not used.
data_train, data_test, y_train, y_test = train_test_split(irisdf[cols], irisdf[label])

# We train a logistic regression.
# A concat transform is added to group features in a single vector column.
multi_logit_out = rx_logistic_regression(
                        formula="Label ~ Features",
                        method="multiClass",
                        data=data_train,
                        ml_transforms=[concat(cols={'Features': features})])
                        
# We show the coefficients.
print(multi_logit_out.coef_)

# We predict.
prediction = rx_predict(multi_logit_out, data=data_test)

print(prediction.head())

Sortie :

Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0.001, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.2348578
Elapsed time: 00:00:00.0197433
OrderedDict([('0+(Bias)', 1.943994402885437), ('1+(Bias)', 0.6346845030784607), ('2+(Bias)', -2.57867693901062), ('0+Petal_Width', -2.7277402877807617), ('0+Petal_Length', -2.5394322872161865), ('0+Sepal_Width', 0.4810805320739746), ('1+Sepal_Width', -0.5790582299232483), ('2+Petal_Width', 2.547518491744995), ('2+Petal_Length', 1.6753791570663452)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0662932
Finished writing 38 rows.
Writing completed.
    Score.0   Score.1   Score.2
0  0.320061  0.504115  0.175825
1  0.761624  0.216213  0.022163
2  0.754765  0.215548  0.029687
3  0.182810  0.517855  0.299335
4  0.018770  0.290014  0.691216