Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/plsPublic

PLS regression algorithm

License

NotificationsYou must be signed in to change notification settings

mljs/pls

Repository files navigation

NPM versionbuild statusDOInpm download

PLS regression algorithm based on the Yi Cao implementation:

PLS Matlab code

K-OPLS regression algorithm based onthis paper.

K-OPLS Matlab code

OPLS implementation based on the R packageMetabomate using NIPALS factorization loop.

installation

$ npm i ml-pls

Usage

importPLSfrom'ml-pls';constX=[[0.1,0.02],[0.25,1.01],[0.95,0.01],[1.01,0.96],];constY=[[1,0],[1,0],[1,0],[0,1],];constoptions={latentVectors:10,tolerance:1e-4,};constpls=newPLS(options);pls.train(X,Y);
import{getNumbers,getClassesAsNumber,getCrossValidationSets,}from'ml-dataset-iris';import{OPLS}from'ml-pls';constcvFolds=getCrossValidationSets(7,{idx:0,by:'trainTest'});constdata=getNumbers();constirisLabels=getClassesAsNumber();constmodel=newOPLS(data,irisLabels,{ cvFolds});console.log(model.mode);// 'regression'

The OPLS class is intended for exploratory modeling, that is not for the creation of predictors. Therefore there is a built-in k-fold cross-validation loop and Q2y is an average over the folds.

console.log(model.model[0].Q2y);

should give 0.9209227614652857

import{getNumbers,getClasses,getCrossValidationSets,}from'ml-dataset-iris';import{OPLS}from'ml-pls';constcvFolds=getCrossValidationSets(7,{idx:0,by:'trainTest'});constdata=getNumbers();constirisLabels=getClasses();constmodel=newOPLS(data,irisLabels,{ cvFolds});console.log(model.mode);// 'discriminantAnalysis'console.log(model.model[0].auc);// 0.5366666666666665,

If for some reason a predictor is necessary the following code may serve as an example

import{getNumbers,getClassesAsNumber,getCrossValidationSets,}from'ml-dataset-iris';import{OPLS}from'ml-pls';// get frozen folds for testing purposesconst{ testIndex, trainIndex}=getCrossValidationSets(7,{idx:0,by:'trainTest',})[0];// Getting the data of selected foldconstirisNumbers=getNumbers();consttestData=irisNumbers.filter((el,idx)=>testIndex.includes(idx));consttrainingData=irisNumbers.filter((el,idx)=>trainIndex.includes(idx));// Getting the labels of selected foldconstirisLabels=getClassesAsNumber();consttestLabels=irisLabels.filter((el,idx)=>testIndex.includes(idx));consttrainingLabels=irisLabels.filter((el,idx)=>trainIndex.includes(idx));constmodel=newOPLS(trainingData,trainingLabels);console.log(model.mode);// 'discriminantAnalysis'constprediction=model.predict(testData,{trueLabels:testLabels});// Get the predicted Q2 valueconsole.log(prediction.Q2y);// 0.9247698398971457
importKernelfrom'ml-kernel';import{KOPLS}from'ml-pls';constkernel=newKernel('gaussian',{sigma:25,});constX=[[0.1,0.02],[0.25,1.01],[0.95,0.01],[1.01,0.96],];constY=[[1,0],[1,0],[1,0],[0,1],];constcls=newKOPLS({orthogonalComponents:10,predictiveComponents:1,kernel:kernel,});cls.train(X,Y);const{  prediction,// prediction  predScoreMat,// Score matrix over prediction  predYOrthVectors,// Y-Orthogonal vectors over prediction}=cls.predict(X);console.log(prediction);console.log(predScoreMat);console.log(predYOrthVectors);

License

MIT


[8]ページ先頭

©2009-2025 Movatter.jp