|
1 | 1 | /** |
2 | 2 | * ml - Machine learning tools |
3 | | - * @version v0.1.3 |
| 3 | + * @version v0.1.4 |
4 | 4 | * @link https://github.com/mljs/ml |
5 | 5 | * @license MIT |
6 | 6 | */ |
@@ -3798,13 +3798,13 @@ function SOM(x, y, options, reload) { |
3798 | 3798 |
|
3799 | 3799 | if (typeof this.options.fields === 'number') { |
3800 | 3800 | this.numWeights = this.options.fields; |
3801 | | - this.extractor = null; |
3802 | | - } else { |
3803 | | - var fields = Object.keys(this.options.fields); |
3804 | | - this.numWeights = fields.length; |
3805 | | - var converters = getConverters(fields, this.options.fields); |
| 3801 | + } else if (Array.isArray(this.options.fields)) { |
| 3802 | + this.numWeights = this.options.fields.length; |
| 3803 | + var converters = getConverters(this.options.fields); |
3806 | 3804 | this.extractor = converters.extractor; |
3807 | 3805 | this.creator = converters.creator; |
| 3806 | + } else { |
| 3807 | + throw new Error('Invalid fields definition'); |
3808 | 3808 | } |
3809 | 3809 |
|
3810 | 3810 | if (this.options.gridType === 'rect') { |
@@ -3932,7 +3932,7 @@ SOM.prototype.setTraining = function setTraining(trainingSet) { |
3932 | 3932 | var convertedSet = trainingSet; |
3933 | 3933 | var i, l = trainingSet.length; |
3934 | 3934 | if (this.extractor) { |
3935 | | - convertedSet = new Array(trainingSet); |
| 3935 | + convertedSet = new Array(l); |
3936 | 3936 | for (i = 0; i < l; i++) { |
3937 | 3937 | convertedSet[i] = this.extractor(trainingSet[i]); |
3938 | 3938 | } |
@@ -4125,26 +4125,26 @@ SOM.prototype.getFit = function getFit(dataset) { |
4125 | 4125 | return result; |
4126 | 4126 | }; |
4127 | 4127 |
|
4128 | | -function getConverters(fields, fieldsOpt) { |
| 4128 | +function getConverters(fields) { |
4129 | 4129 | var l = fields.length, |
4130 | 4130 | normalizers = new Array(l), |
4131 | 4131 | denormalizers = new Array(l); |
4132 | 4132 | for (var i = 0; i < l; i++) { |
4133 | | - normalizers[i] = getNormalizer(fieldsOpt[fields[i]]); |
4134 | | - denormalizers[i] = getDenormalizer(fieldsOpt[fields[i]]); |
| 4133 | + normalizers[i] = getNormalizer(fields[i].range); |
| 4134 | + denormalizers[i] = getDenormalizer(fields[i].range); |
4135 | 4135 | } |
4136 | 4136 | return { |
4137 | 4137 | extractor: function extractor(value) { |
4138 | 4138 | var result = new Array(l); |
4139 | 4139 | for (var i = 0; i < l; i++) { |
4140 | | - result[i] = normalizers[i](value[fields[i]]); |
| 4140 | + result[i] = normalizers[i](value[fields[i].name]); |
4141 | 4141 | } |
4142 | 4142 | return result; |
4143 | 4143 | }, |
4144 | 4144 | creator: function creator(value) { |
4145 | 4145 | var result = {}; |
4146 | 4146 | for (var i = 0; i < l; i++) { |
4147 | | - result[fields[i]] = denormalizers[i](value[i]); |
| 4147 | + result[fields[i].name] = denormalizers[i](value[i]); |
4148 | 4148 | } |
4149 | 4149 | return result; |
4150 | 4150 | } |
|
0 commit comments