microsoftml.concat: Verkettet mehrere Spalten zu einem einzigen Vektor

Usage

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

Description

Kombiniert mehrere Spalten zu einer einzigen vektorwertigen Spalte.

Details

concat erzeugt aus mehreren Spalten eine einzelne vektorwertige Spalte. Es kann auf Daten durchgeführt werden, bevor ein Modell trainiert wird. Die Verkettung kann die Datenverarbeitung erheblich beschleunigen, wenn die Anzahl der Spalten von Hunderten bis Tausenden beträgt.

Argumente

Cols

Ein Charakterdikt oder eine Liste von Variablennamen, die transformiert werden sollen. Wenn dict, repräsentieren die Schlüssel die Namen neuer zu erstellender Variablen. Beachten Sie, dass alle Eingabevariablen vom gleichen Typ sein müssen. Es ist möglich, mit der Verkettungstransformation mehrere Ausgabespalten zu erzeugen. In diesem Fall müssen Sie eine Liste von Vektoren verwenden, um eine Eins-zu-eins-Abbildung zwischen Eingabe- und Ausgabevariablen zu definieren. Um beispielsweise die Spalten InNameA und InNameB in die Spalten OutName1 sowie die Spalten InNameC und InNameD in die Spalten OutName2 zu verbinden, verwenden Sie das dict: dict(OutName1 = [InNameA, InNameB], outName2 = [InNameC, InNameD])

Kargs

Zusätzliche Argumente werden an die Rechen-Engine gesendet.

Rückgaben

Ein Objekt, das die Verkettungstransformation definiert.

Example

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

Ausgabe:

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