@webwriter/neural-network
Version:
Deep learning visualization for feed-forward networks with custom datasets, training and prediction.
57 lines (49 loc) • 1.98 kB
text/typescript
import type { DataSet } from '@/types/data_set'
import type { FeatureDesc } from '@/types/feature_desc'
import { bostonHousePricing } from '@/utils/data_sets/boston'
import { pimaIndiansDiabetes } from '@/utils/data_sets/diabetes'
// The DataSetUtils class provides static methods to retrieve data for specific
// queries as well as static properties for the default (available) data set(s)
export class DataSetUtils {
static defaultDataSet = bostonHousePricing
static defaultAvailableDataSets = [bostonHousePricing, pimaIndiansDiabetes]
// get features of a data set (key and description) by their keys
static getFeatureDescsByKeys(
dataSet: DataSet,
keys: string[]
): FeatureDesc[] {
return dataSet.featureDescs.filter((featureDesc: FeatureDesc) =>
keys.includes(featureDesc.key)
)
}
// get a single feature of a data set (key and description) by the key
static getDataSetInputByKey(dataSet: DataSet, key: string): FeatureDesc {
const featureDesc = dataSet.featureDescs.find(
(featureDesc: FeatureDesc) => featureDesc.key == key
)
return featureDesc
}
// get the data of the data set
static getData(dataSet: DataSet): Array<{
features: number[]
label: number
}> {
return dataSet.data
}
// get the feature data
static getFeatureDataByKeys(dataSet: DataSet, keys: string[]): number[][] {
// get the indices for the data that belongs to the layer
const desiredIndizes = []
for (const [index, featureDesc] of dataSet.featureDescs.entries()) {
if (keys.includes(featureDesc.key)) desiredIndizes.push(index)
}
// filter the data
const featureData = this.getData(dataSet).map(({ features }) =>
features.filter((_feature, index) => desiredIndizes.includes(index))
)
return featureData
}
static getLabelData(dataSet: DataSet): number[] {
return dataSet.data.map(({ label }) => label)
}
}