Condividi tramite


microsoftml.rx_predict: assegna un punteggio usando un modello di Microsoft Machine Learning

Utilizzo

microsoftml.rx_predict(model,
    data: typing.Union[revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame],
    output_data: typing.Union[revoscalepy.datasource.RxDataSource.RxDataSource,
    str] = None, write_model_vars: bool = False,
    extra_vars_to_write: list = None, suffix: str = None,
    overwrite: bool = False, data_threads: int = None,
    blocks_per_read: int = None, report_progress: int = None,
    verbose: int = 1,
    compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None,
    **kargs)

Descrizione

Segnala i risultati del punteggio per ogni singola istanza in un frame di dati o in un'origine dati revoscalepy usando un modello di Microsoft ML Machine Learning sottoposto a training con origine arevoscalepydata.

Dettagli

Gli elementi seguenti vengono segnalati nell'output per impostazione predefinita: assegnazione di punteggi sulle tre variabili PredictedLabel, Score e Probability per classificatori binari; Score per classificatori oneClassSvm e di regressione; PredictedLabel per classificatori multiclasse, più una variabile per ogni categoria preceduta da Score.

Argomenti

model

Oggetto informazioni modello restituito da un modello microsoft ML. Ad esempio, un oggetto restituito da rx_fast_trees o rx_logistic_regression.

data

Oggetto origine dati revoscalepy, frame di dati o percorso di un file .xdf.

output_data

Testo di output o nome del file xdf o RxDataSource con funzionalità di scrittura in cui archiviare i dati trasformati. Se l'impostazione di questo argomento è None, viene restituito un frame di dati. Il valore predefinito è None.

write_model_vars

Se questo argomento è True, le variabili presenti nel modello vengono scritte nel set di dati di output in aggiunta alle variabili di assegnazione dei punteggi. Se le variabili del set di dati di input vengono trasformate nel modello, vengono incluse anche le variabili trasformate. Il valore predefinito è False.

extra_vars_to_write

None o vettore di caratteri di variabili aggiuntive dai dati di input da includere in output_data. Se write_model_vars è True, sono incluse anche le variabili di modello. Il valore predefinito è None.

suffix

Stringa di caratteri che specifica il suffisso da aggiungere alle variabili di assegnazione dei punteggi create o None se non è presente alcun suffisso. Il valore predefinito è None.

overwrite

Se True, un valore di output_data già esistente viene sovrascritto; se False, un valore output_data già esistente non viene sovrascritto. Il valore predefinito è False.

data_threads

Numero intero che specifica il grado di parallelismo desiderato nella pipeline di dati. Se il valore di questo argomento è None, il numero di thread usati viene determinato internamente. Il valore predefinito è None.

blocks_per_read

Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.

report_progress

Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:

  • 0: non viene segnalato alcun avanzamento.

  • 1: il numero di righe elaborate viene stampato e aggiornato.

  • 2: vengono segnalate le righe elaborate e le tempistiche.

  • 3: vengono segnalate le righe elaborate e tutte le tempistiche.

Il valore predefinito è 1.

verbose

Valore intero che specifica la quantità di output desiderata. Se 0, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1 a 4 per fornire quantità crescenti di informazioni. Il valore predefinito è 1.

compute_context

Imposta il contesto in cui vengono eseguiti i calcoli, specificato con un revoscalepy.RxComputeContext valido. Sono attualmente supportati contesti di calcolo locali e revoscalepy.RxInSqlServer.

kargs

Argomenti aggiuntivi inviati al motore di calcolo.

Restituisce

Frame di dati o oggetto revoscalepy.RxDataSource rappresentativo dei dati di output creati. Per impostazione predefinita, l'output dei classificatori binari di assegnazione dei punteggi include tre variabili, PredictedLabel, Score e Probability; per rx_oneclass_svm e la regressione è inclusa un’unica variabile, Score; per i classificatori multiclasse vengono incluse PredictedLabel e una variabile per ogni categoria preceduta da Score. Se viene specificato un suffix, viene aggiunto alla fine di questi nomi di variabili di output.

Vedi anche

rx_featurize, revoscalepy.rx_data_step, revoscalepy.rx_import.

Esempio di classificazione binaria

'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

infert = get_dataset("infert")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)

forest_model = rx_fast_linear(
    formula=" isCase ~ age + parity + education + spontaneous + induced ",
    data=data_train)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(forest_model, data=data_test,
                     extra_vars_to_write=["isCase", "Score"])
                     
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))

Output:

Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 8064.
Auto-tuning parameters: L2 = 2.666837E-05.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 590.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.6058289
Elapsed time: 00:00:00.0084728
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0302359
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
  isCase PredictedLabel     Score  Probability
0  False           True  0.576775     0.640325
1  False          False -2.929549     0.050712
2   True          False -2.370090     0.085482
3  False          False -1.700105     0.154452
4  False          False -0.110981     0.472283

Esempio di regressione

'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

airquality = get_dataset("airquality")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

airquality = airquality.as_df()


######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data

df = airquality[airquality.Ozone.notnull()]
df["Ozone"] = df.Ozone.astype(float)

data_train, data_test, y_train, y_test = train_test_split(df, df.Ozone)

airFormula = " Ozone ~ Solar_R + Wind + Temp "

# Regression Fast Forest for train data
ff_reg = rx_fast_trees(airFormula, method="regression", data=data_train)

# Put score and model variables in data frame
score_df = rx_predict(ff_reg, data=data_test, write_model_vars=True)
print(score_df.head())

# Plot actual versus predicted values with smoothed line
# Supported in the next version.
# rx_line_plot(" Score ~ Ozone ", type=["p", "smooth"], data=score_df)

Output:

'unbalanced_sets' ignored for method 'regression'
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 87, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Warning: Skipped 4 instances with missing features during training
Processed 83 instances
Binning and forming Feature objects
Reserved memory for tree learner: 22620 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0390764
Elapsed time: 00:00:00.0080750
Beginning processing data.
Rows Read: 29, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0221875
Finished writing 29 rows.
Writing completed.
   Solar_R  Wind  Temp      Score
0    290.0   9.2  66.0  33.195541
1    259.0  15.5  77.0  20.906796
2    276.0   5.1  88.0  76.594643
3    139.0  10.3  81.0  31.668842
4    236.0  14.9  81.0  43.590839