『壹』 如何使用javaScript構建機器學習模型
如何使用JavaScript構建機器學習模型
目前,機器學習領域建模的主要語言是 Python 和 R,前不久騰訊推出的機器學習框架 Angel 則支持 Java 和 Scala。本文作者 Abhishek Soni 則用行動告訴我們,開發機器學習模型,JavaScript 也可以。
JavaScript?我不是應該使用 Python 嗎?甚至 Scikit-learn 在 JavaScript 上都不工作。
這是可能的,實際上,連我自己都驚訝於開發者對此忽視的態度。就 Scikit-learn 而言,Javascript 的開發者事實上已經推出了適用的庫,它會在本文中有所提及。那麼,讓我們看看 Javascript 在機器學習上能夠做什麼吧。
根據人工智慧先驅 Arthur Samuel 的說法,機器學習為計算機提供了無需明確編程的學習能力。換句話說,它使得計算機能夠自我學習並執行正確的指令,無需人類提供全部指導。
谷歌已經把自己移動優先的策略轉換到人工智慧優先很久了。
為什麼 JavaScript 在機器學習界未被提及過?
慢(真的假的?)
矩陣操作很困難(這里有庫,比如 math.js)
僅用於 Web 開發(然而這里還有 Node.js)
機器學習庫通常是在 Python 上的(還好,JS 的開發者人數也不少)
在 JavaScript 中有一些可供使用的預制庫,其中包含一些機器學習演算法,如線性回歸、SVM、樸素貝葉斯等等,以下是其中的一部分。
brain.js(神經網路)
Synaptic(神經網路)
Natural(自然語言處理)
ConvNetJS(卷積神經網路)
mljs(一組具有多種功能的子庫)
首先,我們將使用 mljs 回歸庫來進行一些線性回歸操作。
參考代碼:https://github.com/abhisheksoni27/machine-learning-with-js
1. 安裝庫
ml-regression 正如其名,負責機器學習的線性回歸。
csvtojson 是一個用於 node.js 的快速 CSV 解析器,它允許載入 CSV 數據文件並將其轉換為 JSON。
2. 初始化並載入數據
下載數據文件(.csv),並將其加入你的項目。
鏈接:http://www-bcf.usc.e/~gareth/ISL/Advertising.csv
如果你已經初始化了一個空的 npm 項目,打開 index.js,輸入以下代碼。
我把文件放在了項目的根目錄下,如果你想放在其他地方,請記得更新 csvFilePath。
現在我們使用 csvtojson 的 fromFile 方法載入數據文件:
3. 打包數據,准備執行
JSON 對象被存儲在 csvData 中,我們還需要輸入數據點數組和輸出數據點。我們通過一個填充 X 和 Y 變數的 dressData 函數來運行數據。
4. 訓練模型開始預測
數據已經打包完畢,是時候訓練我們的模型了。
為此,我們需要寫一個 performRegression 函數:
performRegression 函數有一個方法 toString,它為浮點輸出獲取一個名為 precision 的參數。predictOutput 函數能讓你輸入數值,然後將模型的輸出傳到控制台。它是這樣的(注意,我使用的是 Node.js 的 readline 工具):
以下是為了增加閱讀用戶的代碼
5. 大功告成!
遵循以上步驟,你的 index.js 應該是這樣:
到你的終端上運行 node index.js,得到的輸出會是這樣:
恭喜!你剛剛在 JavaScript 中訓練了第一個線性回歸模型。
『貳』 如何在客戶端JavaScript讀取本地的CSV文件
你求不是大神,你應該求hacker,或者求上帝。如果是客戶端執行的JavaScript代碼,你的問題從根本上無解,我不相信這個世界上有人能回答這個問題!
『叄』 javascript 讀取csv文件
進入Internet屬性=》安全=》自定義級別,把ActiveX控制項和插件下的所有選項都內改成啟用
因為js是客戶容端的,所以伺服器不可能控制
建議你使用其他 語言來讀excel及csv
把你的代碼發出來,看看。
『肆』 javascript怎麼修改csv文件內容
如果是基於瀏覽器,那就不能修改。
『伍』 javascript怎麼修改csv文件
如果是基於瀏覽器,那就不能修改。
js讀取CSV格式數據,參考如下:
<script type="text/javascript">
// This will parse a delimited string into an array of
// arrays. The default delimiter is the comma, but this
// can be overriden in the second argument.
function CSVToArray( strData, strDelimiter ){
// Check to see if the delimiter is defined. If not,
// then default to comma.
strDelimiter = (strDelimiter || ",");
// Create a regular expression to parse the CSV values.
var objPattern = new RegExp(
(
// Delimiters.
"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
// Quoted fields.
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
// Standard fields.
"([^\"\\" + strDelimiter + "\\r\\n]*))"
),
"gi"
);
// Create an array to hold our data. Give the array
// a default empty first row.
var arrData = [[]];
// Create an array to hold our indivial pattern
// matching groups.
var arrMatches = null;
// Keep looping over the regular expression matches
// until we can no longer find a match.
while (arrMatches = objPattern.exec( strData )){
// Get the delimiter that was found.
var strMatchedDelimiter = arrMatches[ 1 ];
// Check to see if the given delimiter has a length
// (is not the start of string) and if it matches
// field delimiter. If id does not, then we know
// that this delimiter is a row delimiter.
if (
strMatchedDelimiter.length &&
(strMatchedDelimiter != strDelimiter)
){
// Since we have reached a new row of data,
// add an empty row to our data array.
arrData.push( [] );
}
// Now that we have our delimiter out of the way,
// let's check to see which kind of value we
// captured (quoted or unquoted).
if (arrMatches[ 2 ]){
// We found a quoted value. When we capture
// this value, unescape any double quotes.
var strMatchedValue = arrMatches[ 2 ].replace(
new RegExp( "\"\"", "g" ),
"\""
);
} else {
// We found a non-quoted value.
var strMatchedValue = arrMatches[ 3 ];
}
// Now that we have our value string, let's add
// it to the data array.
arrData[ arrData.length - 1 ].push( strMatchedValue );
}
// Return the parsed data.
return( arrData );
}
</script>
『陸』 JavaScript 如何讀取資料庫CSV文件,然後再Cesium中運用其中兩列
兼容性好點就發送內容到伺服器,又伺服器處理,設置"Content-Disposition&