microsoftml.categorical_hash: skróty i konwertuje kolumnę tekstową na kategorie
Zwyczaj
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)
Opis
Przekształcenie skrótu podzielonego na kategorie, które można wykonać na danych przed rozpoczęciem trenowania modelu.
Szczegóły
categorical_hash
konwertuje wartość kategorii na tablicę wskaźników przez utworzenie skrótu wartości i użycie skrótu jako indeksu w torbie. Jeśli kolumna wejściowa jest wektorem, zostanie zwrócona pojedyncza torba wskaźnika.
categorical_hash
obecnie nie obsługuje obsługi danych czynników.
Argumenty
Cols
Ciąg znaków lub lista nazw zmiennych do przekształcenia. Jeśli dict
, klucze reprezentują nazwy nowych zmiennych do utworzenia.
hash_bits
Liczba całkowita określająca liczbę bitów do skrótu. Musi należeć do przedziału od 1 do 30 włącznie. Wartość domyślna to 16.
nasienie
Liczba całkowita określająca inicjator skrótu. Wartość domyślna to 314489979.
Zamówione
True
, aby uwzględnić pozycję każdego terminu w skrótzie. W przeciwnym razie False
. Wartość domyślna to True
.
invert_hash
Liczba całkowita określająca limit liczby kluczy, których można użyć do wygenerowania nazwy miejsca.
0
oznacza brak skrótu invert; -1
oznacza brak limitu. Chociaż wartość zerowa zapewnia lepszą wydajność, do uzyskania znaczących nazw współczynników potrzebna jest wartość niezerowa.
Wartość domyślna to 0
.
output_kind
Ciąg znaków określający rodzaj rodzaju danych wyjściowych.
"Bag"
: Wyprowadza wektor wielozestawowy. Jeśli kolumna wejściowa jest wektorem kategorii, dane wyjściowe zawierają jeden wektor, gdzie wartość w każdym miejscu jest liczbą wystąpień kategorii w wektorze wejściowym. Jeśli kolumna wejściowa zawiera jedną kategorię, wektor wskaźnika i wektor torbowy są równoważne"Ind"
: wyprowadza wektor wskaźnika. Kolumna wejściowa jest wektorem kategorii, a dane wyjściowe zawierają jeden wektor wskaźnika na miejsce w kolumnie wejściowej."Key
: generuje indeks. Dane wyjściowe to identyfikator liczby całkowitej (od 1 do liczby kategorii w słowniku) kategorii."Bin
: generuje wektor, który jest reprezentacją binarną kategorii.
Wartość domyślna to "Bag"
.
kargs
Dodatkowe argumenty wysyłane do aparatu obliczeniowego.
Zwraca
obiekt definiujący przekształcenie.
Zobacz też
Przykład
'''
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())
Wyjście:
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