microsoftml.categorical: Hash dan konversi kolom teks menjadi kategori

Penggunaan

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)

Deskripsi

Transformasi hash kategoris yang dapat dilakukan pada data sebelum melatih model.

Detail

categorical_hash mengonversi nilai kategoris menjadi array indikator dengan hashing nilai dan menggunakan hash sebagai indeks dalam tas. Jika kolom input adalah vektor, satu kantong indikator dikembalikan untuk itu. categorical_hash saat ini tidak mendukung penanganan data faktor.

Argumen

Cols

String karakter atau daftar nama variabel untuk diubah. Jika dict, kunci mewakili nama variabel baru yang akan dibuat.

hash_bits

Bilangan bulat yang menentukan jumlah bit yang akan di-hash. Harus antara 1 dan 30, inklusif. Nilai defaultnya adalah 16.

Nilai awal

Bilangan bulat yang menentukan benih hashing. Nilai defaultnya adalah 314489979.

dipesan

True untuk menyertakan posisi setiap istilah dalam hash. Sebaliknya, False. Nilai defaultnya adalah True.

invert_hash

Bilangan bulat yang menentukan batas jumlah kunci yang dapat digunakan untuk menghasilkan nama slot. 0 berarti tidak ada invert hashing; -1 berarti tidak ada batasan. Meskipun nilai nol memberikan performa yang lebih baik, nilai non-nol diperlukan untuk mendapatkan nama koefisien yang bermakna. Nilai defaultnya adalah 0.

output_kind

String karakter yang menentukan jenis output.

  • "Bag": Menghasilkan vektor multi-set. Jika kolom input adalah vektor kategori, output berisi satu vektor, di mana nilai di setiap slot adalah jumlah kemunculan kategori dalam vektor input. Jika kolom input berisi satu kategori, vektor indikator dan vektor tas setara

  • "Ind": Menghasilkan vektor indikator. Kolom input adalah vektor kategori, dan output berisi satu vektor indikator per slot di kolom input.

  • "Key: Menghasilkan indeks. Output adalah ID bilangan bulat (antara 1 dan jumlah kategori dalam kamus) kategori.

  • "Bin: Menghasilkan vektor yang merupakan representasi biner dari kategori.

Nilai defaultnya adalah "Bag".

karg

Argumen tambahan yang dikirim ke mesin komputasi.

Mengembalikan

objek yang menentukan transformasi.

Lihat juga

categorical

Contoh

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

Output:

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