使用量
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)
說明
報告的每實例評分會產生資料框架或 revoscalepy 資料來源,使用訓練好的 Microsoft ML 機器學習 模型搭配 arevoscalepydata 來源。
詳細資料
輸出中預設會報告以下項目:二元分類器對三個變數的評分:預測標籤(PredictedLabel)、分數(Score)與機率(Probability);oneClassSvm 與迴歸分類器的分數;多類別分類器使用 PredictedLabel,並加一個以 Score 前置的每個類別變數。
論點
型號
一個從 microsoftml 模型回傳的模型資訊物件。
例如,從 rx_fast_trees 或 rx_logistic_regression返回的物件。
資料
例如 revoscalepy 的資料來源物件、資料框架,或檔案 .xdf 的路徑。
output_data
輸出文字或 xdf 檔名,或 RxDataSource 具備寫入功能以儲存轉換後的資料。 若 為 N,則回傳一個資料框。 預設值是 None。
write_model_vars
如果 True,模型中的變數除了評分變數外,還會寫入輸出資料集。
若輸入資料集中的變數被轉換,則轉換後的變數也會被包含在內。 預設值為 False。
extra_vars_to_write
None 或是輸入資料中新增變數名稱的字元向量,包含在 output_data。 若 write_model_vars 為 True,則模型變數也包含在內。 預設值為 None。
suffix
在建立的評分變數上,指定後綴的字串,或 None 是沒有後綴。 預設值為 None。
覆寫
若 True,output_data則存在被覆寫;若Falseoutput_data存在未被覆寫。 預設值為 False。
data_threads
一個整數,指定資料管線中所需的平行程度。 若 無,則執行緒數量由內部決定。 預設值是 None。
blocks_per_read
指定從資料來源讀取的每一塊資料要讀取的區塊數量。
report_progress
一個整數值,用來指定對資料列處理進度的報告層級:
0:沒有進展報告。1:已處理的列數會被列印並更新。2:處理的行數及時間報告。3:列數已處理,所有時間點都會被報告。
預設值為 1。
詳細資訊
一個整數值,用來指定想要輸出的量。
若 0,則計算過程中不會印出冗長輸出。 整數值 來自 1 , 4 提供越來越多的資訊。
預設值為 1。
compute_context
設定計算執行的上下文,並以有效的 revoscalepy 指定。RxComputeContext。 目前是局部且 revoscalepy。支援 RxInSqlServer 的運算上下文。
卡格族
額外參數送入計算引擎。
Returns
資料框架或 revoscalepy。RxDataSource 物件代表所建立的輸出資料。 預設情況下,評分二元分類器的輸出包含三個變數:PredictedLabel、、 ScoreProbability;rx_oneclass_svm迴歸包含一個變數:Score;多類別分類器則包含PredictedLabel每個類別Score前加一個變數。 若提供 a suffix ,則會將其加入這些輸出變數名稱的末尾。
二元分類範例
'''
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))
輸出:
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
迴歸範例
'''
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)
輸出:
'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