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

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-04
  • 語言: Matlab
  • 標簽:

資源簡介

k-means離群點剔除法:主要運用聚類均值方法剔除數據中的離群點,增強模型預測的精度等,本文為matlab代碼

資源截圖

代碼片段和文件信息

function?[?res?seedrecord]?=?FunK_meanPolyD(datak?)
%?功能:
%?????實現多維空間k-mean聚類算法
%?輸入:
%?????data是d*n規格的矩陣,其中d代表維度,n代表樣本的數量
%?????k?是分成的類別的數量
%?輸出:
%?????res?是行數為(d*k)?列數為record中最大元素值
%?????對于res的行數為d*k的解釋:?
%???????1:d?是對應著第一類別元素
%???????d+1:2*d?是對應著第二類別元素?
%???????????···?
%???????d*(k-1)+1:d*k?是對應著第k類別元素
%
%?????record規格為1*k記錄著每一類別的有效元素的個數

????j?=?1;
????%?下面是預分配一些空間
????%?seedX?和?seedY?中存放著所有種子
????[h?w]?=?size(data);
????cnt?=?w;?%?輸入元素的數量
????cntOfDimension?=?h;?%?d?中存放著本次處理數據的維度
????%seed?中存放種子,每一行代表種子所在的一個維度,每一列是一個種子向量
????seed?=?zeros(cntOfDimensionk);
????oldSeed?=?zeros(cntOfDimensionk);
????%?結果矩陣res中,數據存放規則:
????%???以d行為一個單位,總共k個d行
????%???第一個d行數據存放著第一類元素集合其他同理
????res?=?zeros(k*cntOfDimensioncnt);?
????%?用來記錄resX中每一行有效元素的個數
????record?=?zeros(1k);?
????r?=?0;
????for?i?=?1:k?%?產生k個隨機種子?注意:?隨機種子是來自元素集合
????????t?=?round(rand()*cnt);
????????%?為保證種子不重疊
????????if?i?>?1?&&?t?==?r
????????????i?=?i?-?1;
????????????continue;
????????end

????????seed(:i)?=?data(:t);
????????r?=?t;
????end

????while?1
????????record(:)?=?0;?%?重置為零
????????res(:)?=?0;
????????for?i?=?1:cnt?%?對所有元素遍歷
????????????%?下面是判斷本次元素應該歸為哪一類,這里我們是根據歐幾里得距離進行類別判定
????????????%?k-mean算法認為元素應該歸為距離最近的種子代表的類
????????????distanceMin?=?1;?%?distanceMin?中存放著最短歐幾里得距離的種子點的下標
????????????for?j?=?2:k
????????????????%?計算高維度的歐幾里得距離
????????????????a?=?0;
????????????????b?=?0;
????????????????for?row?=?1:cntOfDimension
????????????????????a?=?a?+?power(data(rowi)-seed(rowdistanceMin)2);
????????????????????b?=?b?+?power(data(rowi)-seed(rowj)2);
????????????????end
????????????????if?a?>?b
????????????????????distanceMin?=?j;
????????????????end
????????????end
????????????%?將本次元素點進行類別歸并
????????????row?=?(distanceMin-1)*cntOfDimension?+?1;
????????????res(row:row+cntOfDimension-1record(distanceMin)+1)?=?data(:i);
????????????record(distanceMin)?=?record(distanceMin)+1;
????????end
????????%record
????????oldSeed?=?seed;
????????%?移動種子至其類中心
????????for?col?=?1:k
????????????if?record(col)?==?0
????????????????continue;
????????????end
????????????%?計算新的種子位置
????????????row?=?(col-1)*cntOfDimension?+?1;
????????????seed(:col)?=?sum(res(row:row+cntOfDimension-1:)2)/record(col);
????????end
????????%?如果本次得到的種子和上次的種子一致,則認為分類完畢。
????????if?mean(seed?==?oldSeed)?==?1
????????????break;
????????end
????end

????maxPos?=?max(record);
????res?=?res(:1:maxPos);
end


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

?????文件???????2914??2018-04-06?11:19??聚類剔除法模板1\FunK_meanPolyD.m

?????文件???????3706??2018-04-17?09:23??聚類剔除法模板1\shili.m

?????目錄??????????0??2018-04-17?10:15??聚類剔除法模板1

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

?????????????????6620????????????????????3


評論

共有 條評論

相關資源