五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: ReneeBK
    1006 2

    Principal Component Analysis using JavaScript [推廣有獎]

    • 1關(guān)注
    • 62粉絲

    VIP

    學(xué)術(shù)權(quán)威

    14%

    還不是VIP/貴賓

    -

    TA的文庫  其他...

    R資源總匯

    Panel Data Analysis

    Experimental Design

    威望
    1
    論壇幣
    49537 個
    通用積分
    53.7004
    學(xué)術(shù)水平
    370 點
    熱心指數(shù)
    273 點
    信用等級
    335 點
    經(jīng)驗
    57815 點
    帖子
    4006
    精華
    21
    在線時間
    582 小時
    注冊時間
    2005-5-8
    最后登錄
    2023-11-26

    樓主
    ReneeBK 發(fā)表于 2016-6-27 00:01:28 |只看作者 |壇友微信交流群|倒序 |AI寫論文
    相似文件 換一批

    +2 論壇幣
    k人 參與回答

    經(jīng)管之家送您一份

    應(yīng)屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經(jīng)管之家聯(lián)合CDA

    送您一個全額獎學(xué)金名額~ !

    感謝您參與論壇問題回答

    經(jīng)管之家送您兩個論壇幣!

    +2 論壇幣
    1. ml-pca
    2. NPM version  build status  David deps  npm download

    3. Principal component analysis (PCA)

    4. Installation

    5. $ npm install ml-pca

    6. Methods

    7. new PCA(dataset, options)

    8. Arguments

    9. dataset - Data to get the PCA. It must be a two-dimensional array with observations as rows and variables as columns.
    10. Options

    11. center - Center the dataset (default: true)
    12. scale - Standardize the dataset, i.e. divide by the standard deviation after centering (default: false)
    13. predict(dataset)

    14. Project the dataset in the PCA space

    15. Arguments

    16. dataset - A Matrix of the dataset to project.
    17. getExplainedVariance()

    18. Returns the percentage of variance explained by each component.

    19. getCumulativeVariance()

    20. Returns the cumulative explained variance.

    21. getStandardDeviations()

    22. Returns the standard deviations of each component.

    23. getEigenvectors()

    24. Get the eigenvectors of the covariance matrix.

    25. getEigenvalues()

    26. Get the eigenvalues on the diagonal.

    27. getLoadings()

    28. Get the loadings matrix (each row is a component and each column is a variable)

    29. License
    復(fù)制代碼

    本帖隱藏的內(nèi)容

    pca-master.zip (7.29 KB)


    二維碼

    掃碼加我 拉你入群

    請注明:姓名-公司-職位

    以便審核進群資格,未注明則拒絕

    關(guān)鍵詞:Javascript Component PRINCIPAL Analysis Analysi default standard version status false

    本帖被以下文庫推薦

    沙發(fā)
    ReneeBK 發(fā)表于 2016-6-27 00:02:10 |只看作者 |壇友微信交流群
    1. 'use strict';

    2. const Matrix = require('ml-matrix');
    3. const EVD = Matrix.DC.EVD;
    4. const SVD = Matrix.DC.SVD;
    5. const Stat = require('ml-stat').matrix;
    6. const mean = Stat.mean;
    7. const stdev = Stat.standardDeviation;

    8. const defaultOptions = {
    9.     isCovarianceMatrix: false,
    10.     center: true,
    11.     scale: false
    12. };

    13. class PCA {
    14.     /**
    15.      * Creates new PCA (Principal Component Analysis) from the dataset
    16.      * @param {Matrix} dataset
    17.      * @param {Object} options - options for the PCA algorithm
    18.      * @param {boolean} reload - for load purposes
    19.      * @param {Object} model - for load purposes
    20.      * @constructor
    21.      * */
    22.     constructor(dataset, options, reload, model) {
    23.         if (reload) {
    24.             this.center = model.center;
    25.             this.scale = model.scale;
    26.             this.means = model.means;
    27.             this.stdevs = model.stdevs;
    28.             this.U = Matrix.checkMatrix(model.U);
    29.             this.S = model.S;
    30.             return;
    31.         }

    32.         options = Object.assign({}, defaultOptions, options);

    33.         this.center = false;
    34.         this.scale = false;
    35.         this.means = null;
    36.         this.stdevs = null;

    37.         if (options.isCovarianceMatrix) { // user provided a covariance matrix instead of dataset
    38.             this._computeFromCovarianceMatrix(dataset);
    39.             return;
    40.         }

    41.         var useCovarianceMatrix;
    42.         if (typeof options.useCovarianceMatrix === 'boolean') {
    43.             useCovarianceMatrix = options.useCovarianceMatrix;
    44.         } else {
    45.             useCovarianceMatrix = dataset.length > dataset[0].length;
    46.         }
    47.         
    48.         if (useCovarianceMatrix) { // user provided a dataset but wants us to compute and use the covariance matrix
    49.             dataset = this._adjust(dataset, options);
    50.             const covarianceMatrix = dataset.transpose().mmul(dataset).div(dataset.rows - 1);
    51.             this._computeFromCovarianceMatrix(covarianceMatrix);
    52.         } else {
    53.             dataset = this._adjust(dataset, options);
    54.             var svd = new SVD(dataset, {
    55.                 computeLeftSingularVectors: false,
    56.                 computeRightSingularVectors: true,
    57.                 autoTranspose: true
    58.             });

    59.             this.U = svd.rightSingularVectors;

    60.             const singularValues = svd.diagonal;
    61.             const eigenvalues = new Array(singularValues.length);
    62.             for (var i = 0; i < singularValues.length; i++) {
    63.                 eigenvalues[i] = singularValues[i] * singularValues[i] / (dataset.length - 1);
    64.             }
    65.             this.S = eigenvalues;
    66.         }
    67.     }

    68.     /**
    69.      * Load a PCA model from JSON
    70.      * @oaram {Object} model
    71.      * @return {PCA}
    72.      */
    73.     static load(model) {
    74.         if (model.name !== 'PCA')
    75.             throw new RangeError('Invalid model: ' + model.name);
    76.         return new PCA(null, null, true, model);
    77.     }

    78.     /**
    79.      * Exports the current model to an Object
    80.      * @return {Object} model
    81.      */
    82.     toJSON() {
    83.         return {
    84.             name: 'PCA',
    85.             center: this.center,
    86.             scale: this.scale,
    87.             means: this.means,
    88.             stdevs: this.stdevs,
    89.             U: this.U,
    90.             S: this.S,
    91.         };
    92.     }

    93.     /**
    94.      * Projects the dataset into new space of k dimensions.
    95.      * @param {Matrix} dataset
    96.      * @return {Matrix} dataset projected in the PCA space.
    97.      */
    98.     predict(dataset) {
    99.         dataset = new Matrix(dataset);

    100.         if (this.center) {
    101.             dataset.subRowVector(this.means);
    102.             if (this.scale) {
    103.                 dataset.divRowVector(this.stdevs);
    104.             }
    105.         }
    106.         
    107.         return dataset.mmul(this.U);
    108.     }

    109.     /**
    110.      * Returns the proportion of variance for each component.
    111.      * @return {[number]}
    112.      */
    113.     getExplainedVariance() {
    114.         var sum = 0;
    115.         for (var i = 0; i < this.S.length; i++) {
    116.             sum += this.S[i];
    117.         }
    118.         return this.S.map(value => value / sum);
    119.     }

    120.     /**
    121.      * Returns the cumulative proportion of variance.
    122.      * @return {[number]}
    123.      */
    124.     getCumulativeVariance() {
    125.         var explained = this.getExplainedVariance();
    126.         for (var i = 1; i < explained.length; i++) {
    127.             explained[i] += explained[i - 1];
    128.         }
    129.         return explained;
    130.     }

    131.     /**
    132.      * Returns the Eigenvectors of the covariance matrix.
    133.      * @returns {Matrix}
    134.      */
    135.     getEigenvectors() {
    136.         return this.U;
    137.     }

    138.     /**
    139.      * Returns the Eigenvalues (on the diagonal).
    140.      * @returns {[number]}
    141.      */
    142.     getEigenvalues() {
    143.         return this.S;
    144.     }

    145.     /**
    146.      * Returns the standard deviations of the principal components
    147.      * @returns {[number]}
    148.      */
    149.     getStandardDeviations() {
    150.         return this.S.map(x => Math.sqrt(x));
    151.     }

    152.     /**
    153.      * Returns the loadings matrix
    154.      * @return {Matrix}
    155.      */
    156.     getLoadings() {
    157.         return this.U.transpose();
    158.     }

    159.     _adjust(dataset, options) {
    160.         this.center = !!options.center;
    161.         this.scale = !!options.scale;

    162.         dataset = new Matrix(dataset);

    163.         if (this.center) {
    164.             const means = mean(dataset);
    165.             const stdevs = this.scale ? stdev(dataset, means, true) : null;
    166.             this.means = means;
    167.             dataset.subRowVector(means);
    168.             if (this.scale) {
    169.                 for (var i = 0; i < stdevs.length; i++) {
    170.                     if (stdevs[i] === 0) {
    171.                         throw new RangeError('Cannot scale the dataset (standard deviation is zero at index ' + i);
    172.                     }
    173.                 }
    174.                 this.stdevs = stdevs;
    175.                 dataset.divRowVector(stdevs);
    176.             }
    177.         }

    178.         return dataset;
    179.     }

    180.     _computeFromCovarianceMatrix(dataset) {
    181.         const evd = new EVD(dataset, {assumeSymmetric: true});
    182.         this.U = evd.eigenvectorMatrix;
    183.         for (var i = 0; i < this.U.length; i++) {
    184.             this.U[i].reverse();
    185.         }
    186.         this.S = evd.realEigenvalues.reverse();
    187.     }
    188. }

    189. module.exports = PCA;
    復(fù)制代碼
    藤椅
    reflets 發(fā)表于 2016-6-27 00:44:19 |只看作者 |壇友微信交流群
    多謝樓主分享
    已有 1 人評分論壇幣 收起 理由
    Nicolle + 20 鼓勵積極發(fā)帖討論

    總評分: 論壇幣 + 20   查看全部評分

    您需要登錄后才可以回帖 登錄 | 我要注冊

    本版微信群
    加JingGuanBbs
    拉您進交流群

    京ICP備16021002-2號 京B2-20170662號 京公網(wǎng)安備 11010802022788號 論壇法律顧問:王進律師 知識產(chǎn)權(quán)保護聲明   免責(zé)及隱私聲明

    GMT+8, 2024-12-23 03:17