有關kmeans訓練結果不一樣的問題
最近一直在實現一篇註釋軌跡的文章,裡面要用到kmeans聚類方法,先在網上隨便找了一個kmeans程式進行聚類,結果發現時間太長,最後問了作者,作者採用的是vlfeat的系列程式,裡面的kmens++程式速度較一般的來說比較快,網址如下:
http://www.vlfeat.org/index.html
實驗中發現,如果聚類的特徵都是從一個圖片上得來,或者說都是一類相像的圖片,每次的聚類結果是相同的,但是如果說聚類的圖片來自兩類圖片的話,,每次聚類的結果差異就比較大了。這是因為kmeans本身存在的缺陷:初始化的點每次都是隨機的,那麼該如何解決這個問題呢?
問了幾個師兄,然後再查了一些資料,並沒有什麼好的解決辦法,只能在反覆訓練中找到最好的聚類結果,然後儲存下來,後面都用這個結果,這樣也不是沒有道理,因為,這本來就是訓練集需要的資料,在實際或者實驗中,訓練集本身就是提前知道的,在訓練集不變的情況下就可以使用這種方法。
相關推薦
有關kmeans訓練結果不一樣的問題
最近一直在實現一篇註釋軌跡的文章,裡面要用到kmeans聚類方法,先在網上隨便找了一個kmeans程式進行聚類,結果發現時間太長,最後問了作者,作者採用的是vlfeat的系列程式,裡面的kmens++程式速度較一般的來說比較快,網址如下: http://www.vlfe
RSA加密為什麼每次加密的結果不一樣
JAVA寫RSA加密,私鑰都是一樣的,公鑰每次加密的結果不一樣跟對資料的padding(填充)有關。 1、Padding (填充)屬性定義元素邊框與元素內容之間的空間。 2、padding 簡寫屬性在一個宣告中設定所有內邊距屬性。設定所有當前或者指定元素內邊距屬性。該屬性可以有1到4個值
ide 與 leetcode 執行結果不一樣
在做 leetcode 的第 15 題, 3Sum 時發現,同樣的程式碼在本地執行的結果是正確的,而在 leetcode 的伺服器上結果卻是錯誤的。而且檢查了程式中,也並沒有使用全域性或者靜態變數。 通過列印,仔細對比兩種環境下的輸出發現,原來是程式碼有一
Numpy中求標準差的函式std( )與Matlab中求標準差的函式std( )對同一組資料求標註差結果不一樣
一、問題描述 “Matlab求標註差函式std與Python Numpy中求標註差函式std對統一資料求標準差的結果不一樣” Matlab示例: >> a = [1,3,7,10,20]; >> std(a) ans =
同一個sql 在Hive和spark-sql 跑出結果不一樣記錄
表Schema hive> desc gdm.dim_category; name string 分類名稱
UPDATE SQL 不同環境執行結果不一樣
背景:1.前臺:JQUERY 提交資料 2.後臺:OWIN C# 處理接收資料 3.資料庫: postgresql ========================
C# PHP 對漢字進行MD5計算,得到的結果不一樣
C# 計算32位小寫md5hash值演算法如下:public static string GetStrMd5_32X(string ConvertString) { MD5CryptoServiceProvider md5 = new
shell指令碼直接執行和crontab結果不一樣
問題描述: 案例1. 以前寫了個更新svn然後cp到別外一個目錄(簡稱目錄a)的指令碼,達到另外一個目錄的程式定期svn同步的效果。(當然,你可能要問為啥目錄a不裝個svn up,這個你可以先不管) 指令碼寫好後,執行沒有問題,結果放到crontab中定時跑,卻怎麼也不行
crontab執行sh指令碼和手動執行結果不一樣問題解決
當使用crontab執行sh指令碼時,發現存到資料庫的資料丟失了非常多,困惑。。。於是各種搜尋,終於找到問題答案,即環境變數問題,解決方法很簡單,只需要在指令碼開頭增加 source ~/.bash_profile 即可。 還有,如果手動執行指令碼可以成功執行,但cront
不同編譯器結果不一樣
#include <stdio.h> #include <stdlib.h> int canPlaceFlowers(int* A, int size, int n) {
對short型別,輸出結果不一樣?
#include<stdio.h> #include<iostream> using namespace std; int main() { short x,y; x=-32654; y=-1234; short z=x+y; cout
git grep和grep搜尋結果不一樣
1、程式碼庫檔案test.txt檔案如下 testgitgrep=1 testlinuxgrep=0 把testgitgrep=1改成testgitgrep=0後 testgitgrep=0 testlinuxgrep=0 2、 用
內連線、左外連線 TOTO 一對一 一對多 結果不一樣的
1. 簡介 2. 建表 A表 B表 注: B表的parent_id對應A表的id 3. 測試 3.1 顯式內連線 -- 顯示內連線 SELECT A.*, B.* FROM A INNER JOIN B ON A.id = B.parent_i
直接 Run 和 Debug 結果不一樣?
Debug時記憶體會初始化,但執行時不會。直接 Run 和 Debug 的時候,可能程式初始化時的記憶體構造有些不一樣,所以導致不同的行為。 特別要注意變數的初始化問題,儘可能做到所有類的成員變數以及臨時變數的值都要賦初值! 我遇到過類似問題,一般說來是由於記憶體
hadoop實戰wordcount輸出結果不一樣(沒有合併)
我猜你的結果是這樣:但你想要的結果是這樣:推斷map方法實現但是reduce方法沒實現不容易被找到的bug:你繼承reducer類內的方法是reduce()不是reducer()總結:自己敲程式碼還是得認真的敲對每個字母。
Leetcode 執行輸出與本地結果不一樣的解決方法(用例子說明)
Problem: Write an algorithm to determine if a number is “happy”. A happy number is a number de
C++產生隨機數,每次執行得到的結果不一樣
#include "stdafx.h" #include <stdlib.h>//rand #include<time.h>//time #include "iostream"//cout using namespace std; #defin
7月程式語言排行榜來了,為什麼不同媒體報道的結果不一樣?
在程式設計師的世界裡一直流傳著這樣的一個笑話: 某女:你能讓這個論壇的人都吵起來,我今晚就跟你走。 某軟體工程師:PHP是最好的語言! 某論壇真的就炸鍋了,各種吵架…… 某女:服了你了,我們走吧,你想幹啥都行。 某軟體工程師:今天不行,我一定要說服他們,PHP必須是最好的語言…… 對於程式語言的排名之爭就
詳細分析du和df的統計結果為什麽不一樣
文件覆蓋 了吧 明顯 沒有 ota 正常的 linux com small 今天有個人問我du和df的統計結果為什麽會不同。給他解析了一番,後來想想還是寫篇文章從原理上來分析分析。 我們常常使用du和df來獲取目錄或文件系統已占用空間的情況。但它們的統計結果是不一致的,大
python 中 dict 在類中宣告的位置不一樣,結果有所差別
第一種宣告方式: class A(object): names = {} def output(self): print(self.names) class A1(A): pass class A2(A): pass