largevis是一種用於大規模圖視覺化的布局演算法,其在高維資料視覺化、網路視覺化上具有良好的表現,由於學習需要進行了一些相關探索,記錄如下。
我的作業系統是64位win10,這裡僅列出readme中關於windows環境下的描述
####windows to compile the source files, use microsoft visual studio, where you need to set the boost path.其描述比較簡略,但其中重要的幾點包括:
boost庫是乙個可移植、提供源**的c++庫,作為標準庫的後備,是c++標準化程序的開發引擎之一。由於專案中用到了大量其中的相關庫函式,因而必須要先配置好boost。
boost_1_69_0.zip安裝的具體步驟可以參考
要記住新增環境變數。
boost與vs環境都配好後,按道理應該是可以執行了。
首先我們先按照readme中的要求修改boost路徑,具體檔案即專案解壓出來後的windows目錄下的setup.py,將之前安裝boost時的兩個路徑替換進來即可。
接著按要求在windows這個目錄下開啟命令列,執行
python setup.py install
不過接著就報了很多錯誤,究其原因是由於這個專案中是基於python2.7的,我的電腦上python安裝的是3.7,導致有些api早已不是原先的名字了,我們需要對某些地方進行一些修改,具體如下:
在largevismodule.cpp中
將
real x = atof(pystring_asstring(pyobject_str(pylist_getitem(vec, j))));
改為
real x = atof(pybytes_asstring(pyobject_str(pylist_getitem(vec, j))));
將
pymodinit_func initlargevis()
改為
static struct pymoduledef largevismodule =
;pymodinit_func
pyinit_largevis(void)
直接用example中的資料集測試即可,readme中提供了一些用法說明:
for python,besides the two parameters, other optional parameters include:python largevis_run.py -input -output
對於python,使用格式:對於示例中的minst資料集,-input 輸入檔案python largevis_run.py -input -output
-output 輸出檔案
其他可選項:
-fea 指定輸入檔案是高維特徵向量(1)或者網路(0),預設為1
-threads 執行緒數,預設為8
-outdim 表示輸出的低維的視覺化維度數,預設為2
-samples 圖形布局的邊緣樣本數量,預設為 data size / 100 (million)
-prop 鄰居傳播次數,與k-nng構造有關,一般少於3,預設為3
-alpha 定義學習率,梯度下降用,預設為1.0
-trees 構造k-nng隨機對映樹的個數,一般50足夠處理很大的資料集,除非資料集超過5 百萬,預設根據資料量來定。
-neg 負取樣個數,預設為5
-neigh k-nng的鄰居數 , which is usually set as three times of perplexity,預設為150
-gama 分配給負邊緣的權重,預設為7
-prep 在knn中決定邊緣權重的值(perplexity)預設為50
python largevis_run.py -input mnist_vec784d.txt -output mnist_vec2d.txt -threads 16
python plot.py -input mnist_vec2d.txt -label mnist_label.txt -output mnist_vec2d_plot
即可得到輸出影象
windows下安裝largeVis踩的坑
系統 windows10 boost版本 1.7.0 工具 visual studio 2019 參考教程 按照上面的教程進行的操作,直到boost安裝都很成功,但是下一步對修改後的largevis進行編譯的時候就出錯。報錯的含義大概就是打不開檔案boost system vc142 mt s x6...
pythonpip安裝與使用 pip安裝與使用
簡介 檢驗pip是否安裝 python3.x版本命令 pip3 version python2.x版本命令 pip version 若尚未安裝,安裝方法 curl o get pip.py 執行安裝指令碼 sudo python get pip.py pip常用命令 顯示版本和路徑 pip vers...
Struts安裝與使用
struts可以執行在任何乙個支援jsp1.2和servlet2.3的web container中struts將所有的請求提交到同乙個中心控制器,org.apache.struts.action.actionservlet 類 web.xml配置 servlet name action servle...