国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】NMF非負(fù)矩陣分解算法(測試代碼)

這篇具有很好參考價(jià)值的文章主要介紹了【Python】NMF非負(fù)矩陣分解算法(測試代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


歡迎關(guān)注 『Python』 系列,持續(xù)更新中
歡迎關(guān)注 『Python』 系列,持續(xù)更新中

算法說明(百度百科)

從多元統(tǒng)計(jì)的觀點(diǎn)看,NMF是在非負(fù)性的限制下,在盡可能保持信息不變的情況下,將高維的隨機(jī)模式簡化為低維的隨機(jī)模式H,而這種簡化的基礎(chǔ)是估計(jì)出數(shù)據(jù)中的本質(zhì)結(jié)構(gòu)W;從代數(shù)的觀點(diǎn)看,NMF是發(fā)現(xiàn)數(shù)據(jù)的一種內(nèi)在非負(fù)(或蘊(yùn)涵更多性質(zhì)的)代數(shù)分解形式或表示方法;從維數(shù)約減的觀點(diǎn)看,因?yàn)榛仃嘩和系數(shù)矩陣H同時由NMF來確定,系數(shù)矩陣H并非為數(shù)據(jù)矩陣V在W上的投影,所以NMF實(shí)現(xiàn)的是非線性的維數(shù)約減。

NMF最成功的一類應(yīng)用是在圖像的分析和處理領(lǐng)域。圖像本身包含大量的數(shù)據(jù),計(jì)算機(jī)一般將圖像的信息按照矩陣的形式進(jìn)行存放,針對圖像的識別、分析和處理也是在矩陣的基礎(chǔ)上進(jìn)行的。這些特點(diǎn)使得NMF方法能很好地與圖像分析處理相結(jié)合。人們已經(jīng)利用NMF算法,對衛(wèi)星發(fā)回的圖像進(jìn)行處理,以自動辨別太空中的垃圾碎片;使用NMF算法對天文望遠(yuǎn)鏡拍攝到的圖像進(jìn)行分析,有助于天文學(xué)家識別星體;美國還嘗試在機(jī)場安裝由NMF算法驅(qū)動的識別系統(tǒng),根據(jù)事先輸入計(jì)算機(jī)的恐怖分子的特征圖像庫來自動識別進(jìn)出機(jī)場的可疑恐怖分子。

基本例程

import numpy as np
import torch
import random
import matplotlib.pyplot as plt


def nmf(X, r, maxiter, minError):
    # X=U*V'
    row, col = X.shape
    U = np.around(np.array(np.random.rand(row, r)), 5)#
    V = np.around(np.array(np.random.rand(col, r)), 5)
    obj = []
    for iter in range(maxiter):
        print('-----------------------------')
        print('開始第', iter, '次迭代')
        # update U
        XV = np.dot(X, V)# np.dot(a ,b), 其中a和b都是二維矩陣,此時dot就是進(jìn)行的矩陣乘法運(yùn)算
        UVV = np.dot(U, np.dot(V.T, V))
        U = (U * (XV / np.maximum(UVV, 1e-10)))
        # update V
        XU = np.dot(X.T, U)
        VUU = np.dot(V, np.dot(V.T, V))
        V = (V * (XU / np.maximum(VUU, 1e-10)))
        d = np.diag(1 / np.maximum(np.sqrt(np.sum(V * V, 0)), 1e-10))
        V = np.dot(V, d)

        temp = X - np.dot(U, np.transpose(V))#計(jì)算損失
        error = np.sum(temp * temp)#損失和
        print('error:', error)
        print('第', iter, '次迭代結(jié)束')
        obj.append(error)
        if error < minError:
            break

    return U, V, obj


if __name__ == "__main__":
    X = np.random.randn(20, 50)#  生成20行50列矩陣,服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)樣本值。
    X = np.array(np.abs(X))    #  確保非負(fù)
    print("X shape\n", X.shape)# (20, 50)
    # print('X:',X)#初始待分解的矩陣
    U, V, obj = nmf(X, 2, 100, 0.01)
    print("U\n",U)#     # X=U*V'
    print("U shape\n", U.shape)#(20, 2)
    print("V\n",V)#     # X=U*V'
    print("V shape\n", V.shape)# (50, 2)
    x = range(len(obj))
    plt.plot(x, obj)
    plt.show()

總結(jié)

大家喜歡的話,給個??,點(diǎn)個關(guān)注!繼續(xù)跟大家分享敲代碼過程中遇到的問題!

版權(quán)聲明:

發(fā)現(xiàn)你走遠(yuǎn)了@mzh原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接

Copyright 2022 mzh

Crated:2022-1-10

歡迎關(guān)注 『Python』 系列,持續(xù)更新中
歡迎關(guān)注 『Python』 系列,持續(xù)更新中
【Python安裝第三方庫一行命令永久提高速度】
【使用PyInstaller打包Python文件】
【更多內(nèi)容敬請期待】文章來源地址http://www.zghlxwxcb.cn/news/detail-628105.html


到了這里,關(guān)于【Python】NMF非負(fù)矩陣分解算法(測試代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【能量算子】評估 EEG 中的瞬時能量:非負(fù)、頻率加權(quán)能量算子(Python&Matlab代碼實(shí)現(xiàn))

    【能量算子】評估 EEG 中的瞬時能量:非負(fù)、頻率加權(quán)能量算子(Python&Matlab代碼實(shí)現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運(yùn)行結(jié)果 ??3?參考文獻(xiàn) ??4 Python、Matlab代碼實(shí)現(xiàn)

    2024年02月08日
    瀏覽(15)
  • Python矩陣LU分解

    scipy.linalg 中提供了一系列矩陣分解函數(shù),其中最基礎(chǔ)的肯定是LU分解。 LU分解,即使得矩陣 A A A 分解為 L U LU LU ,其中 L L L 為下三角陣, U U U 為上三角陣。對于這兩種矩陣, scipy.linalg 中提供了 tril, triu ,可以將第 k k k 條對角線下面或上面的所有元素置零,即可以此獲取L矩

    2024年02月08日
    瀏覽(16)
  • 【VMD-DBO-LSTM】變分模態(tài)分解-蜣螂優(yōu)化算法-長短時記憶神經(jīng)網(wǎng)絡(luò)研究(Python代碼實(shí)現(xiàn))

    【VMD-DBO-LSTM】變分模態(tài)分解-蜣螂優(yōu)化算法-長短時記憶神經(jīng)網(wǎng)絡(luò)研究(Python代碼實(shí)現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 1.1 變分模態(tài)分解算法 1.2?蜣螂優(yōu)化算法 1.3?LSTM ??2 運(yùn)行

    2024年02月09日
    瀏覽(22)
  • C#,數(shù)值計(jì)算,矩陣的喬萊斯基分解(Cholesky decomposition)算法與源代碼

    C#,數(shù)值計(jì)算,矩陣的喬萊斯基分解(Cholesky decomposition)算法與源代碼

    安德烈·路易斯·喬爾斯基出生于法國波爾多以北的查倫特斯海域的蒙古揚(yáng)。他在波爾多參加了Lycée e,并于1892年11月14日獲得學(xué)士學(xué)位的第一部分,于1893年7月24日獲得第二部分。1895年10月15日,喬爾斯基進(jìn)入萊科爾理工學(xué)院,在當(dāng)年223名入學(xué)學(xué)生中排名第88位。他在萊科爾理工

    2024年02月22日
    瀏覽(32)
  • Python實(shí)現(xiàn)矩陣奇異值分解(SVD)

    Python實(shí)現(xiàn)矩陣奇異值分解(SVD) 矩陣奇異值分解(Singular Value Decomposition, SVD)是一種重要的矩陣分解方法,可以將一個矩陣分解成三個矩陣的乘積,即 A = U Σ V T A=USigma V^{T} A = U Σ

    2024年02月10日
    瀏覽(26)
  • 機(jī)器學(xué)習(xí)實(shí)戰(zhàn):Python基于SVD奇異值分解進(jìn)行矩陣分解(八)

    機(jī)器學(xué)習(xí)實(shí)戰(zhàn):Python基于SVD奇異值分解進(jìn)行矩陣分解(八)

    1.1 奇異值分解 奇異值分解( Singular Value Decomposition,SVD )是一種重要的矩陣分解技術(shù),它可以將一個矩陣分解為三個矩陣的乘積,分別為左奇異矩陣、奇異值矩陣和右奇異矩陣。SVD 的原理可以描述如下: 對于任意 m × n m times n m × n 的矩陣 A A A ,它的 SVD 分解為: A = U $

    2024年02月02日
    瀏覽(26)
  • 【Python】scipy稀疏矩陣的奇異值分解svds

    當(dāng) A A A 是方陣時,可以很容易地進(jìn)行特征分解: A = W Σ W ? 1 A=WSigma W^{-1} A = W Σ W ? 1 ,其中 Σ Sigma Σ 是 A A A 的特征值組成的對角矩陣。如果 W W W 由標(biāo)準(zhǔn)正交基組成,則 W ? 1 = W T W^{-1}=W^T W ? 1 = W T ,特征分解可進(jìn)一步寫成 W T Σ W W^TSigma W W T Σ W 。 然而,當(dāng) A A A 不是方

    2024年02月12日
    瀏覽(25)
  • 【華為OD機(jī)試真題 Python語言】68、矩陣擴(kuò)散 | 機(jī)試題+算法思路+考點(diǎn)+代碼解析

    ??個人博客首頁: 鯊魚狼臧 ? ??專欄介紹: 2023華為OD機(jī)試真題,使用Python進(jìn)行解答,專欄每篇文章都包括真題,思路參考,代碼分析,訂閱有問題后續(xù)可與博主解答問題 ??題目描述 存在一個m*n的二維數(shù)組,其成員取值范圍為0或1 ? 其中值為1的成員具備擴(kuò)散性,每經(jīng)過

    2024年02月15日
    瀏覽(26)
  • 變分模態(tài)分解(VMD)-Python代碼

    變分模態(tài)分解(VMD)的原理推薦兩個參考連接 變分模態(tài)分解原理步驟和VMD算法的介紹 代碼可直接運(yùn)行 以上就是所有內(nèi)容,感謝敢看!求三連!

    2024年02月16日
    瀏覽(56)
  • 對稱矩陣的三對角分解(Lanzos分解算法)-MINRES算法預(yù)熱

    這篇博客看完以后接著看下一篇博客添加鏈接描述專門介紹MINRES算法實(shí)現(xiàn)就容易了 首先介紹Lanczos分解,Lanzos把對稱矩陣轉(zhuǎn)換為一個三對角對稱矩陣??紤]三對角對稱矩陣如下,考慮正交分解 T = Q T A Q T = Q^T A Q T = Q T A Q T = ( α 1 β 1 0 ? 0 0 β 1 α 2 β 2 0 ? 0 0 β 2 α 3 β 3 ? 0

    2024年02月03日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包