示例 2 数据
示例 2 使用与示例 1 相同的源代码。
但是,由于使用了另一个数据集,因此代码必须收集其他数据。
数据收集
示例 2 中使用的数据是房屋对象的列表
{
"平均区域收入": 79545.45857,
"平均区域房屋年龄": 5.682861322,
"平均区域房间数量": 7.009188143,
"平均区域卧室数量": 4.09,
"区域人口": 23086.8005,
"价格": 1059033.558,
},
{
"平均区域收入": 79248.64245,
"平均区域房屋年龄": 6.002899808,
"平均区域房间数量": 6.730821019,
"平均区域卧室数量": 3.09,
"区域人口": 40173.07217,
"价格": 1505890.915,
},
数据集是一个存储在以下位置的 JSON 文件
https://github.com/meetnandu05/ml1/blob/master/house.json数据清洗
在准备机器学习时,始终要注意
- 删除不需要的数据
- 清理数据中的错误
删除数据
删除不必要数据的一种巧妙方法是提取**仅您需要的数据**。
这可以通过使用**map 函数**迭代(循环遍历)数据来完成。
以下函数接受一个对象并从对象的 Horsepower 和 Miles_per_Gallon 属性中返回**仅 x 和 y**
function extractData(obj) {
return {x:obj.Horsepower, y:obj.Miles_per_Gallon};
}
删除错误
大多数数据集包含某种类型的错误。
删除错误的一种巧妙方法是使用**filter 函数**过滤掉错误。
以下代码如果属性(x 或 y)之一包含 null 值,则返回 false
function removeErrors(obj) {
return obj.x != null && obj.y != null;
}
获取数据
准备好 map 和 filter 函数后,您可以编写一个函数来获取数据。
async function runTF() {
const jsonData = await fetch("cardata.json");
let values = await jsonData.json();
values = values.map(extractData).filter(removeErrors);
}
绘制数据
以下是一些可用于绘制数据的代码
function tfPlot(values, surface) {
tfvis.render.scatterplot(surface,
{values:values, series:['Original','Predicted']},
{xLabel:'房间数', yLabel:'价格',});
}