91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

Em算法(使用C++編寫),使用Em算法對多維向量進行聚類。程序本身還存在一些問題,比如協方差矩陣的行列式為0的問題(給對角線元素加一個小的數并且取協方差陣為對角陣解決的),希望大家能討論下。

資源截圖

代碼片段和文件信息

#include?“em.h“
#include?“memory.h“
#include?“stdlib.h“
#include?“stdio.h“
#include?“math.h“
#include?“time.h“

namespace?ker
{
????#define?PI?3.1415926
????#define?CONST_E?0.0000001
????
????cEm::cEm(int?nVec?int?nDim?int?nPat)
????{
????????_nVec?=?nVec;
????????_nDim?=?nDim;
????????_nPat?=?nPat;

????????//_pplfZ[i][j]表示第i個向量屬于第j類的概率初始化為0
????????_pplfZ?=?new?double?*[_nVec];
????????for?(int?i?=?0;?i?????????{
????????????_pplfZ[i]?=?new?double[_nPat];
????????????memset(_pplfZ[i]?0?sizeof(double)?*?_nPat);
????????}
????????
????????//_pplfU[i]表示第i類的均值向量,其初始化的值有可能導致陷入局部極值
????????//因此其初始化的值根據待分類數據來給出
????????_pplfU?=?new?double?*[_nPat];
????????for?(int?i?=?0;?i?????????{
????????????_pplfU[i]?=?new?double[_nDim];
????????????//for?(int?j?=?0;?j?????????}
????????
????????//_ppplfDelta[i]表示第i類的協方差矩陣并把協方差矩陣初始化成單位陣
????????_ppplfDelta?=?new?double?**[_nPat];
????????for?(int?i?=?0;?i?????????{
????????????_ppplfDelta[i]?=?new?double?*[_nDim];
????????????for?(int?j?=?0;?j?????????????{
????????????????_ppplfDelta[i][j]?=?new?double[_nDim];
????????????????memset(_ppplfDelta[i][j]?0?sizeof(double)?*?_nDim);
????????????????_ppplfDelta[i][j][j]?=?1;
????????????}
????????}
????????
????????//_plfPi[i]表示第i類的先驗概率初始化為1?/?_nPat
????????_plfPi?=?new?double?[_nPat];
????????for?(int?i?=?0;?i?????}

????cEm::~cEm()
????{
????????for?(int?i?=?0;?i?????????delete?[]_pplfZ;

????????for?(int?i?=?0;?i?????????delete?[]_pplfU;
????????
????????for?(int?i?=?0;?i?????????{
????????????for?(int?j?=?0;?j?????????????delete?[]_ppplfDelta[i];
????????}
????????delete?[]_ppplfDelta;
????????delete?[]_plfPi;
????}
????
????double?**cEm::Inverse(double?**pplfMatSrc)
????{
????????//復制原矩陣
????????double?**pplfMat?=?new?double?*[_nDim];
????????for?(int?i?=?0;?i?????????{
????????????pplfMat[i]?=?new?double?[_nDim];
????????????memcpy(pplfMat[i]?pplfMatSrc[i]?sizeof(double)?*?_nDim);
????????}
????????
????????//創建一個單位陣
????????double?**pplfI?=?new?double?*[_nDim];
????????for?(int?i?=?0;?i?????????{
????????????pplfI[i]?=?new?double?[_nDim];
????????????memset(pplfI[i]?0?sizeof(double)?*?_nDim);
????????????pplfI[i][i]?=?1;
????????}
????????
????????//Gaussian消元法求逆矩陣--正向消元
????????for?(int?i?=?0;?i?????????{
????????????double?lfTmp?=?pplfMat[i][i];
????????????for?(int?j?=?0;?j?????????????{
????????????????pplfMat[i][j]?/=?lfTmp;
????????????????pplfI[i][j]?/=?lfTmp;
????????????}
????????????
????????????for?(int?j?=?i?+?1;?j?????????????{
????????????????double?lfTmp?=?-pplfMat[j][i];
????????????????for?(int?k?=?0;?k?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????271??2009-02-06?21:38??EM\EM.cfp

?????文件??????10968??2009-02-06?21:34??EM\em.cpp

?????文件??????76833??2009-02-06?21:38??EM\EM.exe

?????文件???????2040??2009-02-06?17:14??EM\em.h

?????文件??????24897??2009-02-06?21:34??EM\em.o

?????文件????????739??2009-02-06?21:38??EM\main.cpp

?????文件???????6163??2009-02-06?21:38??EM\main.o

?????文件?????335872??2009-02-06?00:46??em.ppt

?????目錄??????????0??2009-02-06?21:38??EM

-----------?---------??----------?-----??----

???????????????457783????????????????????9


評論

共有 條評論