本文整理汇总了Java中org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize.fitLabel方法的典型用法代码示例。如果您正苦于以下问题:Java NormalizerStandardize.fitLabel方法的具体用法?Java NormalizerStandardize.fitLabel怎么用?Java NormalizerStandardize.fitLabel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize
的用法示例。
在下文中一共展示了NormalizerStandardize.fitLabel方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: restore
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize; //导入方法依赖的package包/类
@Override
public NormalizerStandardize restore(@NonNull InputStream stream) throws IOException {
DataInputStream dis = new DataInputStream(stream);
boolean fitLabels = dis.readBoolean();
NormalizerStandardize result = new NormalizerStandardize(Nd4j.read(dis), Nd4j.read(dis));
result.fitLabel(fitLabels);
if (fitLabels) {
result.setLabelStats(Nd4j.read(dis), Nd4j.read(dis));
}
return result;
}
示例2: testBruteForce
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize; //导入方法依赖的package包/类
@Test
public void testBruteForce() {
/* This test creates a dataset where feature values are multiples of consecutive natural numbers
The obtained values are compared to the theoretical mean and std dev
*/
double tolerancePerc = 0.01;
int nSamples = 5120;
int x = 1, y = 2, z = 3;
INDArray featureX = Nd4j.linspace(1, nSamples, nSamples).reshape(nSamples, 1).mul(x);
INDArray featureY = featureX.mul(y);
INDArray featureZ = featureX.mul(z);
INDArray featureSet = Nd4j.concat(1, featureX, featureY, featureZ);
INDArray labelSet = featureSet.dup().getColumns(new int[] {0});
DataSet sampleDataSet = new DataSet(featureSet, labelSet);
double meanNaturalNums = (nSamples + 1) / 2.0;
INDArray theoreticalMean =
Nd4j.create(new double[] {meanNaturalNums * x, meanNaturalNums * y, meanNaturalNums * z});
INDArray theoreticallabelMean = theoreticalMean.dup().getColumns(new int[] {0});
double stdNaturalNums = Math.sqrt((nSamples * nSamples - 1) / 12.0);
INDArray theoreticalStd =
Nd4j.create(new double[] {stdNaturalNums * x, stdNaturalNums * y, stdNaturalNums * z});
INDArray theoreticallabelStd = theoreticalStd.dup().getColumns(new int[] {0});
NormalizerStandardize myNormalizer = new NormalizerStandardize();
myNormalizer.fitLabel(true);
myNormalizer.fit(sampleDataSet);
INDArray meanDelta = Transforms.abs(theoreticalMean.sub(myNormalizer.getMean()));
INDArray labelDelta = Transforms.abs(theoreticallabelMean.sub(myNormalizer.getLabelMean()));
INDArray meanDeltaPerc = meanDelta.div(theoreticalMean).mul(100);
INDArray labelDeltaPerc = labelDelta.div(theoreticallabelMean).mul(100);
double maxMeanDeltaPerc = meanDeltaPerc.max(1).getDouble(0, 0);
assertTrue(maxMeanDeltaPerc < tolerancePerc);
assertTrue(labelDeltaPerc.max(1).getDouble(0, 0) < tolerancePerc);
INDArray stdDelta = Transforms.abs(theoreticalStd.sub(myNormalizer.getStd()));
INDArray stdDeltaPerc = stdDelta.div(theoreticalStd).mul(100);
INDArray stdlabelDeltaPerc =
Transforms.abs(theoreticallabelStd.sub(myNormalizer.getLabelStd())).div(theoreticallabelStd);
double maxStdDeltaPerc = stdDeltaPerc.max(1).mul(100).getDouble(0, 0);
double maxlabelStdDeltaPerc = stdlabelDeltaPerc.max(1).getDouble(0, 0);
assertTrue(maxStdDeltaPerc < tolerancePerc);
assertTrue(maxlabelStdDeltaPerc < tolerancePerc);
// SAME TEST WITH THE ITERATOR
int bSize = 10;
tolerancePerc = 0.1; // 1% of correct value
DataSetIterator sampleIter = new TestDataSetIterator(sampleDataSet, bSize);
myNormalizer.fit(sampleIter);
meanDelta = Transforms.abs(theoreticalMean.sub(myNormalizer.getMean()));
meanDeltaPerc = meanDelta.div(theoreticalMean).mul(100);
maxMeanDeltaPerc = meanDeltaPerc.max(1).getDouble(0, 0);
assertTrue(maxMeanDeltaPerc < tolerancePerc);
stdDelta = Transforms.abs(theoreticalMean.sub(myNormalizer.getMean()));
stdDeltaPerc = stdDelta.div(theoreticalStd).mul(100);
maxStdDeltaPerc = stdDeltaPerc.max(1).getDouble(0, 0);
assertTrue(maxStdDeltaPerc < tolerancePerc);
}
示例3: testTransform
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize; //导入方法依赖的package包/类
@Test
public void testTransform() {
/*Random dataset is generated such that
AX + B where X is from a normal distribution with mean 0 and std 1
The mean of above will be B and std A
Obtained mean and std dev are compared to theoretical
Transformed values should be the same as X with the same seed.
*/
long randSeed = 2227724;
int nFeatures = 2;
int nSamples = 6400;
int bsize = 8;
int a = 5;
int b = 100;
INDArray sampleMean, sampleStd, sampleMeanDelta, sampleStdDelta, delta, deltaPerc;
double maxDeltaPerc, sampleMeanSEM;
genRandomDataSet normData = new genRandomDataSet(nSamples, nFeatures, a, b, randSeed);
genRandomDataSet expectedData = new genRandomDataSet(nSamples, nFeatures, 1, 0, randSeed);
genRandomDataSet beforeTransformData = new genRandomDataSet(nSamples, nFeatures, a, b, randSeed);
NormalizerStandardize myNormalizer = new NormalizerStandardize();
myNormalizer.fitLabel(true);
DataSetIterator normIterator = normData.getIter(bsize);
DataSetIterator expectedIterator = expectedData.getIter(bsize);
DataSetIterator beforeTransformIterator = beforeTransformData.getIter(bsize);
myNormalizer.fit(normIterator);
double tolerancePerc = 0.5; //within 0.5%
sampleMean = myNormalizer.getMean();
sampleMeanDelta = Transforms.abs(sampleMean.sub(normData.theoreticalMean));
assertTrue(sampleMeanDelta.mul(100).div(normData.theoreticalMean).max(1).getDouble(0, 0) < tolerancePerc);
//sanity check to see if it's within the theoretical standard error of mean
sampleMeanSEM = sampleMeanDelta.div(normData.theoreticalSEM).max(1).getDouble(0, 0);
assertTrue(sampleMeanSEM < 2.6); //99% of the time it should be within this many SEMs
tolerancePerc = 5; //within 5%
sampleStd = myNormalizer.getStd();
sampleStdDelta = Transforms.abs(sampleStd.sub(normData.theoreticalStd));
assertTrue(sampleStdDelta.div(normData.theoreticalStd).max(1).mul(100).getDouble(0, 0) < tolerancePerc);
tolerancePerc = 1; //within 1%
normIterator.setPreProcessor(myNormalizer);
while (normIterator.hasNext()) {
INDArray before = beforeTransformIterator.next().getFeatures();
DataSet here = normIterator.next();
assertEquals(here.getFeatures(), here.getLabels()); //bootstrapping existing test on features
INDArray after = here.getFeatures();
INDArray expected = expectedIterator.next().getFeatures();
delta = Transforms.abs(after.sub(expected));
deltaPerc = delta.div(before.sub(expected));
deltaPerc.muli(100);
maxDeltaPerc = deltaPerc.max(0, 1).getDouble(0, 0);
//System.out.println("=== BEFORE ===");
//System.out.println(before);
//System.out.println("=== AFTER ===");
//System.out.println(after);
//System.out.println("=== SHOULD BE ===");
//System.out.println(expected);
assertTrue(maxDeltaPerc < tolerancePerc);
}
}
示例4: testBruteForce3dMaskLabels
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerStandardize; //导入方法依赖的package包/类
@Test
public void testBruteForce3dMaskLabels() {
NormalizerStandardize myNormalizer = new NormalizerStandardize();
myNormalizer.fitLabel(true);
NormalizerMinMaxScaler myMinMaxScaler = new NormalizerMinMaxScaler();
myMinMaxScaler.fitLabel(true);
//generating a dataset with consecutive numbers as feature values. Dataset also has masks
int samples = 100;
INDArray featureScale = Nd4j.create(new float[] {1, 2, 10}).reshape(3, 1);
int timeStepsU = 5;
Construct3dDataSet sampleU = new Construct3dDataSet(featureScale, timeStepsU, samples, 1);
int timeStepsV = 3;
Construct3dDataSet sampleV = new Construct3dDataSet(featureScale, timeStepsV, samples, sampleU.newOrigin);
List<DataSet> dataSetList = new ArrayList<DataSet>();
dataSetList.add(sampleU.sampleDataSet);
dataSetList.add(sampleV.sampleDataSet);
DataSet fullDataSetA = DataSet.merge(dataSetList);
DataSet fullDataSetAA = fullDataSetA.copy();
//This should be the same datasets as above without a mask
Construct3dDataSet fullDataSetNoMask =
new Construct3dDataSet(featureScale, timeStepsU + timeStepsV, samples, 1);
//preprocessors - label and feature values are the same
myNormalizer.fit(fullDataSetA);
assertEquals(myNormalizer.getMean(), fullDataSetNoMask.expectedMean);
assertEquals(myNormalizer.getStd(), fullDataSetNoMask.expectedStd);
assertEquals(myNormalizer.getLabelMean(), fullDataSetNoMask.expectedMean);
assertEquals(myNormalizer.getLabelStd(), fullDataSetNoMask.expectedStd);
myMinMaxScaler.fit(fullDataSetAA);
assertEquals(myMinMaxScaler.getMin(), fullDataSetNoMask.expectedMin);
assertEquals(myMinMaxScaler.getMax(), fullDataSetNoMask.expectedMax);
assertEquals(myMinMaxScaler.getLabelMin(), fullDataSetNoMask.expectedMin);
assertEquals(myMinMaxScaler.getLabelMax(), fullDataSetNoMask.expectedMax);
//Same Test with an Iterator, values should be close for std, exact for everything else
DataSetIterator sampleIterA = new TestDataSetIterator(fullDataSetA, 5);
DataSetIterator sampleIterB = new TestDataSetIterator(fullDataSetAA, 5);
myNormalizer.fit(sampleIterA);
assertEquals(myNormalizer.getMean(), fullDataSetNoMask.expectedMean);
assertEquals(myNormalizer.getLabelMean(), fullDataSetNoMask.expectedMean);
assertTrue(Transforms.abs(myNormalizer.getStd().div(fullDataSetNoMask.expectedStd).sub(1)).maxNumber()
.floatValue() < 0.01);
assertTrue(Transforms.abs(myNormalizer.getLabelStd().div(fullDataSetNoMask.expectedStd).sub(1)).maxNumber()
.floatValue() < 0.01);
myMinMaxScaler.fit(sampleIterB);
assertEquals(myMinMaxScaler.getMin(), fullDataSetNoMask.expectedMin);
assertEquals(myMinMaxScaler.getMax(), fullDataSetNoMask.expectedMax);
assertEquals(myMinMaxScaler.getLabelMin(), fullDataSetNoMask.expectedMin);
assertEquals(myMinMaxScaler.getLabelMax(), fullDataSetNoMask.expectedMax);
}