Compartilhar via


microsoftml.concat: concatena várias colunas em um só vetor

Uso

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

Descrição

Combina várias colunas em uma só coluna de valor de vetor.

Detalhes

concat cria uma só coluna de valor de vetor com base em várias colunas. Ele pode ser executado nos dados antes do treinamento de um modelo. A concatenação pode acelerar significativamente o processamento de dados quando o número de colunas é grande, ou seja, de centenas a milhares.

Argumentos

cols

Um dict ou uma lista de caracteres de nomes de variáveis a serem transformadas. No caso de dict, as chaves representam os nomes das variáveis a serem criadas. Observe que todas as variáveis de entrada precisam ser do mesmo tipo. É possível produzir várias colunas de saída com a transformação concatenação. Nesse caso, você precisa usar uma lista de vetores para definir um mapeamento de um para um entre as variáveis de entrada e de saída. Por exemplo, para concatenar as colunas InNameA e InNameB na coluna OutName1 e também as colunas InNameC e InNameD na coluna OutName2, use o dict: dict(OutName1 = [InNameA, InNameB], outName2 = [InNameC, InNameD])

kargs

Argumentos adicionais enviados ao mecanismo de computação.

Retornos

Um objeto que define a transformação de concatenação.

Confira também

drop_columns, select_columns.

Exemplo

'''
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())

Saída:

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