『壹』 如何使用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&