microsoftml.categorical_hash: Hashar och konverterar en textkolumn till kategorier
Användning
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)
Beskrivning
Kategorisk hash-transformering som kan utföras på data innan du tränar en modell.
Detaljer
categorical_hash
konverterar ett kategoriskt värde till en indikatormatris genom att hasha värdet och använda hashen som ett index i påsen. Om indatakolumnen är en vektor returneras en enda indikatorpåse för den.
categorical_hash
stöder för närvarande inte hantering av faktordata.
Argument
kolumner
En teckensträng eller lista med variabelnamn som ska transformeras. Om dict
representerar nycklarna namnen på nya variabler som ska skapas.
hash_bits
Ett heltal som anger antalet bitar som ska hashas in i. Måste vara mellan 1 och 30, inklusive. Standardvärdet är 16.
frö
Ett heltal som anger hash-fröet. Standardvärdet är 314489979.
beordrats
True
att inkludera positionen för varje term i hashen. Annars False
. Standardvärdet är True
.
invert_hash
Ett heltal som anger gränsen för hur många nycklar som kan användas för att generera facknamnet.
0
innebär ingen inverterad hashning. -1
innebär ingen gräns. Även om ett nollvärde ger bättre prestanda krävs ett värde som inte är noll för att få meningsfulla koefficientnamn.
Standardvärdet är 0
.
output_kind
En teckensträng som anger typen av utdatatyp.
"Bag"
: Matar ut en vektor med flera uppsättningar. Om indatakolumnen är en vektor av kategorier innehåller utdata en vektor, där värdet i varje fack är antalet förekomster av kategorin i indatavektorn. Om indatakolumnen innehåller en enda kategori är indikatorvektorn och påsvektorn likvärdiga"Ind"
: Matar ut en indikatorvektor. Indatakolumnen är en vektor med kategorier och utdata innehåller en indikatorvektor per fack i indatakolumnen."Key
: Matar ut ett index. Utdata är ett heltals-ID (mellan 1 och antalet kategorier i ordlistan) i kategorin."Bin
: Matar ut en vektor som är den binära representationen av kategorin.
Standardvärdet är "Bag"
.
kargs
Ytterligare argument som skickas till beräkningsmotorn.
Returnerar
ett objekt som definierar transformeringen.
Se även
Exempel
'''
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())
Utdata:
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