Skip to content

Commit b0b8e9b

Browse files
committed
Fix bug in label encoder transformer
1 parent ec268de commit b0b8e9b

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

src/danfojs-base/transformers/encoders/label.encoder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ export default class LabelEncoder {
8282
transform(data: Array<string | number> | typeof tensorflow.Tensor | Series) {
8383
const $data = this.$getData(data)
8484
const encodedData: Array<number> = $data.map(value => {
85-
return this.$labels[value]
85+
const label = this.$labels[value] !== undefined ? this.$labels[value] : -1
86+
return label
8687
})
8788

8889
if (data instanceof Array) {

src/danfojs-browser/tests/transformers/label.encoder.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ describe("LabelEncoder", function () {
1616
const expected = [ 0, 1, 1, 2, 3, 3 ];
1717
assert.deepEqual(scaler.transform(sf), expected);
1818
});
19+
it("LabelEncoder works for values not found", function () {
20+
const sf = new dfd.Series([ 1, 2, 2, 6 ]);
21+
const scaler = new dfd.LabelEncoder();
22+
scaler.fit(sf);
23+
24+
const expected = [ 0, 1, 1, 2, -1 ];
25+
assert.deepEqual((scaler.transform(new Series([ 1, 2, 2, 6, 7 ]))).values, expected);
26+
});
1927
it("fitTransform works for 1D array", function () {
2028
const sf = [ 1, 2, 2, "boy", "git", "git" ];
2129
const scaler = new dfd.LabelEncoder();

src/danfojs-node/test/core/daterange.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { assert } from "chai";
2+
import { describe, it } from "mocha";
23
import { dateRange } from '../../dist/danfojs-node/src';
34

45

src/danfojs-node/test/transformers/label.encoder.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ describe("LabelEncoder", function () {
1111
const expected = [0, 1, 1, 2];
1212
assert.deepEqual((scaler.transform(sf) as Series).values, expected);
1313
});
14+
it("LabelEncoder works for values not found", function () {
15+
const sf = new Series([1, 2, 2, 6])
16+
const scaler = new LabelEncoder();
17+
scaler.fit(sf);
18+
19+
const expected = [0, 1, 1, 2, -1];
20+
assert.deepEqual((scaler.transform(new Series([1, 2, 2, 6, 7])) as Series).values, expected);
21+
});
1422
it("LabelEncoder works for 1D array", function () {
1523
const sf = [1, 2, 2, "boy", "git", "git"]
1624
const scaler = new LabelEncoder();

0 commit comments

Comments
 (0)