brain.js
Version:
Neural networks in JavaScript
70 lines • 4.26 kB
TypeScript
import { INeuralNetworkBinaryTestResult, INeuralNetworkState, INeuralNetworkTestResult } from './neural-network-types';
export declare type InitClassifier<TrainOptsType, JsonType, DatumType> = () => IClassifier<TrainOptsType, JsonType, DatumType>;
export interface IClassifier<TrainOptsType, JsonType, DatumType> {
trainOpts: TrainOptsType;
toJSON: () => JsonType;
fromJSON: (json: JsonType) => this;
train: (data: DatumType[], options?: Partial<TrainOptsType>) => INeuralNetworkState;
test: (data: DatumType[]) => INeuralNetworkTestResult | INeuralNetworkBinaryTestResult;
initialize: () => void;
}
export declare type ICrossValidateJSON<JsonType> = ICrossValidateStats<JsonType> | ICrossValidateBinaryStats<JsonType>;
export interface ICrossValidateStatsAverages {
trainTime: number;
testTime: number;
iterations: number;
error: number;
}
export interface ICrossValidateStats<JsonType> {
avgs: ICrossValidateStatsAverages;
stats: ICrossValidateStatsResultStats;
sets: Array<ICrossValidationTestPartitionResults<JsonType>>;
}
export interface ICrossValidateBinaryStats<NetworkType> {
avgs: ICrossValidateStatsAverages;
stats: ICrossValidateStatsResultBinaryStats;
sets: Array<ICrossValidationTestPartitionBinaryResults<NetworkType>>;
}
export interface ICrossValidateStatsResultStats {
total: number;
testSize: number;
trainSize: number;
}
export interface ICrossValidateStatsResultBinaryStats extends ICrossValidateStatsResultStats {
total: number;
truePos: number;
trueNeg: number;
falsePos: number;
falseNeg: number;
precision: number;
recall: number;
accuracy: number;
}
export interface ICrossValidationTestPartitionResults<JsonType> extends INeuralNetworkTestResult {
trainTime: number;
testTime: number;
iterations: number;
network: JsonType;
total: number;
}
export declare type ICrossValidationTestPartitionBinaryResults<JsonType> = INeuralNetworkBinaryTestResult & ICrossValidationTestPartitionResults<JsonType>;
export default class CrossValidate<InitClassifierType extends InitClassifier<ReturnType<InitClassifierType>['trainOpts'], ReturnType<ReturnType<InitClassifierType>['toJSON']>, Parameters<ReturnType<InitClassifierType>['train']>[0][0]>> {
initClassifier: InitClassifierType;
json: ICrossValidateJSON<ReturnType<ReturnType<InitClassifierType>['toJSON']>>;
constructor(initClassifier: InitClassifierType);
testPartition(trainOpts: Parameters<ReturnType<InitClassifierType>['train']>[1], trainSet: Parameters<ReturnType<InitClassifierType>['train']>[0], testSet: Parameters<ReturnType<InitClassifierType>['train']>[0]): ICrossValidationTestPartitionResults<ReturnType<ReturnType<InitClassifierType>['toJSON']>> | ICrossValidationTestPartitionBinaryResults<ReturnType<ReturnType<InitClassifierType>['toJSON']>>;
/**
* Randomize array element order in-place.
* Using Durstenfeld shuffle algorithm.
* source: http://stackoverflow.com/a/12646864/1324039
*/
shuffleArray<K>(array: K[]): K[];
static isBinaryStats: (stats: ICrossValidateStatsResultStats | ICrossValidateStatsResultBinaryStats) => stats is ICrossValidateStatsResultBinaryStats;
static isBinaryResults: <JsonType>(stats: ICrossValidateStats<JsonType> | ICrossValidateBinaryStats<JsonType>) => stats is ICrossValidateBinaryStats<JsonType>;
static isBinaryPartitionResults: <JsonType>(stats: ICrossValidationTestPartitionResults<JsonType> | ICrossValidationTestPartitionBinaryResults<JsonType>) => stats is ICrossValidationTestPartitionBinaryResults<JsonType>;
train(data: Array<Parameters<ReturnType<InitClassifierType>['train']>[0][0]>, trainOpts?: Partial<Parameters<ReturnType<InitClassifierType>['train']>[1]>, k?: number): ICrossValidateStats<ReturnType<InitClassifierType>['toJSON']>;
toNeuralNetwork(): ReturnType<InitClassifierType>;
toJSON(): ICrossValidateJSON<ReturnType<ReturnType<InitClassifierType>['toJSON']>> | null;
fromJSON(crossValidateJson: ICrossValidateJSON<ReturnType<ReturnType<InitClassifierType>['toJSON']>>): ReturnType<InitClassifierType>;
}
//# sourceMappingURL=cross-validate.d.ts.map