Compartilhar via


microsoftml.rx_predict: pontuações usando um modelo de machine learning da Microsoft

Uso

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)

Descrição

A pontuação por instância de relatório resulta em um dataframe ou em uma fonte de dados revoscalepy usando um modelo de machine learning do Microsoft ML com a fonte arevoscalepydata.

Detalhes

Os seguintes itens são relatados na saída por padrão: pontuação em três variáveis dos classificadores binários: PredictedLabel, Score e Probability; Score de oneClassSvm e classificadores de regressão; e PredictedLabel para classificadores multiclasse, mais uma variável para cada categoria precedida pela Score.

Argumentos

modelo

Um objeto de informações de modelo retornado de um modelo do microsoftml. Por exemplo, um objeto retornado de rx_fast_trees ou rx_logistic_regression.

data

Um objeto de fonte de dados revoscalepy, um dataframe ou o caminho para um arquivo .xdf.

output_data

O nome do arquivo de saída ou xdf ou um RxDataSource com funcionalidades de gravação em que os dados transformados serão armazenados. Se for definido como None, um dataframe será retornado. O valor padrão é None.

write_model_vars

Se for definido como True, as variáveis no modelo serão gravadas no conjunto de dados de saída além das variáveis de pontuação. Se as variáveis do conjunto de dados de entrada forem transformadas no modelo, as variáveis transformadas também serão incluídas. O valor padrão é False.

extra_vars_to_write

None ou o vetor de caracteres de nomes de variáveis adicionais dos dados de entrada a serem incluídos no output_data. Se write_model_vars for True, as variáveis do modelo também serão incluídas. O valor padrão é None.

sufixo

Uma cadeia de caracteres que especifica o sufixo a ser acrescentado às variáveis de pontuação criadas ou None quando não há sufixo. O valor padrão é None.

overwrite

Se for definido como True, um output_data existente será substituído. Se for definido como False, um output_data existente não será substituído. O valor padrão é False.

data_threads

Um inteiro que especifica o grau desejado de paralelismo no pipeline de dados. Se for definido como None, o número de threads usados será determinado internamente. O valor padrão é None.

blocks_per_read

Especifica o número de blocos a serem lidos em cada parte dos dados lidos da fonte de dados.

report_progress

Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linha:

  • 0: não é relatado nenhum progresso.

  • 1: o número de linhas processadas é impresso e atualizado.

  • 2: as linhas processadas e os tempos são relatados.

  • 3: as linhas processadas e todos os tempos são relatados.

O valor padrão é 1.

verbose

Um valor inteiro que especifica a quantidade de saída desejada. Se definido como 0, não será impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1 a 4 fornecem quantidades crescentes de informações. O valor padrão é 1.

compute_context

Define o contexto no qual as computações são executadas, especificado com um revoscalepy.RxComputeContext válido. No momento, há suporte para os contextos de computação local e revoscalepy.RxInSqlServer.

kargs

Argumentos adicionais enviados ao mecanismo de computação.

Retornos

Um dataframe ou um objeto revoscalepy.RxDataSource que representa os dados de saída criados. Por padrão, a saída dos classificadores binários de pontuação inclui três variáveis: PredictedLabel, Score e Probability; rx_oneclass_svm e a regressão incluem uma variável: Score; e os classificadores multiclasse incluem PredictedLabel mais uma variável para cada categoria precedida por Score. Se um suffix for fornecido, ele será adicionado ao final desses nomes de variáveis de saída.

Confira também

rx_featurize, revoscalepy.rx_data_step, revoscalepy.rx_import.

Exemplo de classificação binária

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

Saída:

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

Exemplo de regressão

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

Saída:

'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