Sdílet prostřednictvím


microsoftml.categorical_hash: Hodnoty hash a převede textový sloupec na kategorie.

Zvyk

microsoftml.categorical_hash(cols: [str, dict, list],
    hash_bits: int = 16, seed: int = 314489979,
    ordered: bool = True, invert_hash: int = 0,
    output_kind: ['Bag', 'Ind', 'Key', 'Bin'] = 'Bag', **kargs)

Popis

Transformace hodnot hash kategorií, která se dá provést s daty před trénováním modelu.

Podrobnosti

categorical_hash převede kategorickou hodnotu na pole indikátoru tím, že hodnotu zatřidí a použije hodnotu hash jako index v pytli. Pokud je vstupním sloupcem vektor, vrátí se pro něj jeden sáček indikátoru. categorical_hash v současné době nepodporuje zpracování dat faktoru.

Argumenty

Cols

Řetězec znaku nebo seznam názvů proměnných, které se mají transformovat. Pokud dict, klíče představují názvy nových proměnných, které se mají vytvořit.

hash_bits

Celé číslo určující počet bitů, do které se má hodnota hash vložit. Musí být mezi 1 a 30 včetně. Výchozí hodnota je 16.

semeno

Celé číslo určující počáteční hodnotu hash. Výchozí hodnota je 314489979.

objednaný

True zahrnout pozici každého termínu do hodnoty hash. V opačném případě False. Výchozí hodnota je True.

invert_hash

Celé číslo určující limit počtu klíčů, které lze použít k vygenerování názvu slotu. 0 znamená bez invertování hash; -1 znamená žádný limit. Nulová hodnota sice poskytuje lepší výkon, ale k získání smysluplných názvů koeficientů je potřeba nenulová hodnota. Výchozí hodnota je 0.

output_kind

Řetězec znaků, který určuje druh výstupního typu.

  • "Bag": Výstupy vektoru s více sadami. Pokud je vstupní sloupec vektorem kategorií, výstup obsahuje jeden vektor, kde hodnota v každém slotu je počet výskytů kategorie ve vstupním vektoru. Pokud vstupní sloupec obsahuje jednu kategorii, vektor ukazatele a vektor tašky jsou ekvivalentní.

  • "Ind": Výstupem je vektor ukazatele. Vstupní sloupec je vektor kategorií a výstup obsahuje jeden vektor ukazatele na slot ve vstupním sloupci.

  • "Key: Výstupy indexu Výstupem je celočíselné ID (mezi 1 a počtem kategorií ve slovníku) kategorie.

  • "Bin: Výstupy vektoru, který je binární reprezentací kategorie.

Výchozí hodnota je "Bag".

kargs

Další argumenty odeslané do výpočetního modulu.

Návraty

objekt definující transformaci.

Viz také

categorical

Příklad

'''
Example on rx_logistic_regression and categorical_hash.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, categorical_hash, rx_predict
from microsoftml.datasets.datasets import get_dataset

movie_reviews = get_dataset("movie_reviews")

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 hash transform.
out_model = rx_logistic_regression("like ~ reviewCat",
                data=train_reviews,
                ml_transforms=[categorical_hash(cols=dict(reviewCat="review"))])
                
# Weights are similar to categorical.
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())

Výstup:

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: 65537
improvement criterion: Mean Improvement
L1 regularization selected 3 of 65537 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.1209392
Elapsed time: 00:00:00.0190134
OrderedDict([('(Bias)', 0.2132447361946106), ('f1783', -0.7939924597740173), ('f38537', 0.1968022584915161)])
Beginning processing data.
Rows Read: 10, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0284223
Finished writing 10 rows.
Writing completed.
           review PredictedLabel     Score  Probability
0   This is great           True  0.213245     0.553110
1       I hate it          False -0.580748     0.358761
2         Love it           True  0.213245     0.553110
3  Really like it           True  0.213245     0.553110
4       I hate it          False -0.580748     0.358761