1. 程式人生 > 其它 >ALINK(二十一):資料處理(七)數值型資料處理(三)絕對值最大化 (MaxAbsScalerTrainBatchOp/MaxAbsScalerPredictBatchOp)

ALINK(二十一):資料處理(七)數值型資料處理(三)絕對值最大化 (MaxAbsScalerTrainBatchOp/MaxAbsScalerPredictBatchOp)

絕對值最大化訓練 (MaxAbsScalerTrainBatchOp)

Java 類名:com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerTrainBatchOp

Python 類名:MaxAbsScalerTrainBatchOp

功能介紹

  • 絕對值最大標準化是對資料按照最大值和最小值進行標準化的元件, 將資料歸一到-1和1之間。
  • 使用絕對值最大標準化預測元件使用生成的模型,轉換輸入的資料

引數說明

名稱

中文名稱

描述

型別

是否必須?

預設值

selectedCols

選擇的列名

計算列對應的列名列表

String[]

程式碼示例

Python 程式碼

from pyalink.alink import *
import pandas as pd
useLocalEnv(1)
df = pd.DataFrame([
            ["a", 10.0, 100],
            ["b", -2.5, 9],
            ["c", 100.2, 1],
            ["d", -99.9, 100],
            ["a", 1.4, 1],
            ["b", -2.2, 9],
            [
"c", 100.9, 1] ]) colnames = ["col1", "col2", "col3"] selectedColNames = ["col2", "col3"] inOp = BatchOperator.fromDataframe(df, schemaStr='col1 string, col2 double, col3 long') # train trainOp = MaxAbsScalerTrainBatchOp()\ .setSelectedCols(selectedColNames) trainOp.linkFrom(inOp)
# batch predict predictOp = MaxAbsScalerPredictBatchOp() predictOp.linkFrom(trainOp, inOp).print()

Java 程式碼

import org.apache.flink.types.Row;
import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerPredictBatchOp;
import com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerTrainBatchOp;
import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
public class MaxAbsScalerTrainBatchOpTest {
  @Test
  public void testMaxAbsScalerTrainBatchOp() throws Exception {
    List <Row> df = Arrays.asList(
      Row.of("a", 10.0, 100),
      Row.of("b", -2.5, 9),
      Row.of("c", 100.2, 1),
      Row.of("d", -99.9, 100),
      Row.of("a", 1.4, 1),
      Row.of("b", -2.2, 9),
      Row.of("c", 100.9, 1)
    );
    String[] selectedColNames = new String[] {"col2", "col3"};
    BatchOperator <?> inOp = new MemSourceBatchOp(df, "col1 string, col2 double, col3 int");
    BatchOperator <?> trainOp = new MaxAbsScalerTrainBatchOp()
      .setSelectedCols(selectedColNames);
    trainOp.linkFrom(inOp);
    BatchOperator <?> predictOp = new MaxAbsScalerPredictBatchOp();
    predictOp.linkFrom(trainOp, inOp).print();
  }
}

執行結果

col1

col2

col3

a

0.0991

1.0000

b

-0.0248

0.0900

c

0.9931

0.0100

d

-0.9901

1.0000

a

0.0139

0.0100

b

-0.0218

0.0900

c

1.0000

0.0100

絕對值最大化批預測 (MaxAbsScalerPredictBatchOp)

Java 類名:com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerPredictBatchOp

Python 類名:MaxAbsScalerPredictBatchOp

功能介紹

  • 絕對值最大標準化是對資料按照最大值和最小值進行標準化的元件, 將資料歸一到-1和1之間。
  • 需要讀入MaxAbsScalerTrainBatchOp生成的模型

引數說明

名稱

中文名稱

描述

型別

是否必須?

預設值

outputCols

輸出結果列列名陣列

輸出結果列列名陣列,可選,預設null

String[]

null

numThreads

元件多執行緒執行緒個數

元件多執行緒執行緒個數

Integer

1

modelStreamFilePath

模型流的檔案路徑

模型流的檔案路徑

String

null

modelStreamScanInterval

掃描模型路徑的時間間隔

描模型路徑的時間間隔,單位秒

Integer

10

modelStreamStartTime

模型流的起始時間

模型流的起始時間。預設從當前時刻開始讀。使用yyyy-mm-dd hh:mm:ss.fffffffff格式,詳見Timestamp.valueOf(String s)

String

null

程式碼示例

Python 程式碼

from pyalink.alink import *
import pandas as pd
useLocalEnv(1)
df = pd.DataFrame([
            ["a", 10.0, 100],
            ["b", -2.5, 9],
            ["c", 100.2, 1],
            ["d", -99.9, 100],
            ["a", 1.4, 1],
            ["b", -2.2, 9],
            ["c", 100.9, 1]
])
             
colnames = ["col1", "col2", "col3"]
selectedColNames = ["col2", "col3"]
inOp = BatchOperator.fromDataframe(df, schemaStr='col1 string, col2 double, col3 long')
         
# train
trainOp = MaxAbsScalerTrainBatchOp()\
           .setSelectedCols(selectedColNames)
trainOp.linkFrom(inOp)
# batch predict
predictOp = MaxAbsScalerPredictBatchOp()
predictOp.linkFrom(trainOp, inOp).print()

Java 程式碼

import org.apache.flink.types.Row;
import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerPredictBatchOp;
import com.alibaba.alink.operator.batch.dataproc.MaxAbsScalerTrainBatchOp;
import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
public class MaxAbsScalerPredictBatchOpTest {
  @Test
  public void testMaxAbsScalerPredictBatchOp() throws Exception {
    List <Row> df = Arrays.asList(
      Row.of("a", 10.0, 100),
      Row.of("b", -2.5, 9),
      Row.of("c", 100.2, 1),
      Row.of("d", -99.9, 100),
      Row.of("a", 1.4, 1),
      Row.of("b", -2.2, 9),
      Row.of("c", 100.9, 1)
    );
    String[] selectedColNames = new String[] {"col2", "col3"};
    BatchOperator <?> inOp = new MemSourceBatchOp(df, "col1 string, col2 double, col3 int");
    BatchOperator <?> trainOp = new MaxAbsScalerTrainBatchOp()
      .setSelectedCols(selectedColNames);
    trainOp.linkFrom(inOp);
    BatchOperator <?> predictOp = new MaxAbsScalerPredictBatchOp();
    predictOp.linkFrom(trainOp, inOp).print();
  }
}

執行結果

col1

col2

col3

a

0.0991

1.0000

b

-0.0248

0.0900

c

0.9931

0.0100

d

-0.9901

1.0000

a

0.0139

0.0100

b

-0.0218

0.0900

c

1.0000

0.0100