microsoftml.categorical: Wandelt eine Textspalte in Kategorien um

Usage

microsoftml.categorical(cols: [str, dict, list], output_kind: ['Bag', 'Ind',
    'Key', 'Bin'] = 'Ind', max_num_terms: int = 1000000,
    terms: int = None, sort: ['Occurrence', 'Value'] = 'Occurrence',
    text_key_values: bool = False, **kargs)

Description

Kategoriale Transformation, die auf Daten vor dem Training eines Modells durchgeführt werden kann.

Details

Die Transformation categorical durchläuft einen Datensatz, der auf Textspalten arbeitet, um ein Wörterbuch von Kategorien zu erstellen. Für jede Zeile wird die gesamte Textzeichenkette, die in der Eingabespalte erscheint, als Kategorie definiert. Die Ausgabe der kategorialen Transformation ist ein Indikatorvektor. Jeder Steckplatz in diesem Vektor entspricht einer Kategorie im Wörterbuch, sodass die Länge des erstellten Wörterbuchs entspricht. Die kategoriale Transformation kann auf eine oder mehrere Spalten angewendet werden, wobei sie für jede Spalte, auf die sie angewendet wird, ein separates Wörterbuch erstellt.

categorical derzeit nicht zur Verarbeitung von Faktordaten unterstützt.

Argumente

Cols

Eine Zeichenkette oder eine Liste von Variablennamen, die transformiert werden sollen. Wenn dict, repräsentieren die Schlüssel die Namen neuer zu erstellender Variablen.

output_kind

Eine Zeichenkette, die die Art der Ausgabe angibt.

  • "Bag": Gibt einen Mehrmengenvektor aus. Ist die Eingabespalte ein Vektor von Kategorien, enthält die Ausgabe einen Vektor, wobei der Wert in jedem Slot die Anzahl der Vorkommen der Kategorie im Eingabevektor ist. Wenn die Eingabespalte eine einzige Kategorie enthält, sind der Indikatorvektor und der Beutelvektor äquivalent

  • "Ind": Gibt einen Indikatorvektor aus. Die Eingabespalte ist ein Vektor von Kategorien, und die Ausgabe enthält einen Indikatorvektor pro Slot in der Eingabespalte.

  • "Key": Gibt einen Index aus. Die Ausgabe ist eine ganzzahlige ID (zwischen 1 und der Anzahl der Kategorien im Wörterbuch) der Kategorie.

  • "Bin": Gibt einen Vektor aus, der die binäre Darstellung der Kategorie darstellt.

Der Standardwert ist "Ind".

max_num_terms

Eine ganze Zahl, die die maximale Anzahl von Kategorien im Wörterbuch angibt. Der Standardwert liegt bei 1000000.

Bedingungen

Optionaler Zeichenvektor von Begriffen oder Kategorien.

sort

Eine Zeichenkette, die die Sortierkriterien angibt.

  • "Occurrence": Sortiere Kategorien nach Vorkommnissen. Am häufigsten ist das Erste.

  • "Value": Sortiere Kategorien nach Werten.

text_key_values

Ob Keyvalue-Metadaten Text sein sollten, unabhängig vom tatsächlichen Eingabetyp.

Kargs

Zusätzliche Argumente, die an das Computemodul gesendet werden.

Rückgaben

Ein Objekt, das die Transformation definiert.

Example

'''
Example on rx_logistic_regression and categorical.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, categorical, rx_predict

train_reviews = pandas.DataFrame(data=dict(
    review=[
        "This is great", "I hate it", "Love it", "Do not like it", "Really like it",
        "I hate it", "I like it a lot", "I kind of hate it", "I do like it",
        "I really hate it", "It is very good", "I hate it a bunch", "I love it a bunch",
        "I hate it", "I like it very much", "I hate it very much.",
        "I really do love it", "I really do hate it", "Love it!", "Hate it!",
        "I love it", "I hate it", "I love it", "I hate it", "I love it"],
    like=[True, False, True, False, True, False, True, False, True, False,
        True, False, True, False, True, False, True, False, True, False, True,
        False, True, False, True]))
        
test_reviews = pandas.DataFrame(data=dict(
    review=[
        "This is great", "I hate it", "Love it", "Really like it", "I hate it",
        "I like it a lot", "I love it", "I do like it", "I really hate it", "I love it"]))

# Use a categorical transform: the entire string is treated as a category
out_model = rx_logistic_regression("like ~ reviewCat",
                data=train_reviews,
                ml_transforms=[categorical(cols=dict(reviewCat="review"))])
                
# Note that 'I hate it' and 'I love it' (the only strings appearing more than once)
# have non-zero weights.
print(out_model.coef_)

# Use the model to score.
source_out_df = rx_predict(out_model, data=test_reviews, extra_vars_to_write=["review"])
print(source_out_df.head())

Ausgabe:

Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Not adding a normalizer.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 25, Read Time: 0, 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.
Warning: Too few instances to use 4 threads, decreasing to 1 thread(s)
Beginning optimization
num vars: 20
improvement criterion: Mean Improvement
L1 regularization selected 3 of 20 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:01.6550695
Elapsed time: 00:00:00.2259981
OrderedDict([('(Bias)', 0.21317288279533386), ('I hate it', -0.7937591671943665), ('I love it', 0.19668534398078918)])
Beginning processing data.
Rows Read: 10, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.1385248
Finished writing 10 rows.
Writing completed.
           review PredictedLabel     Score  Probability
0   This is great           True  0.213173     0.553092
1       I hate it          False -0.580586     0.358798
2         Love it           True  0.213173     0.553092
3  Really like it           True  0.213173     0.553092
4       I hate it          False -0.580586     0.358798