我目前想使用tensorflow.js建立机器学习模型 但是我遇到了问题。
我将JSON内容保存在本地对象中,但是要在机器学习模型中使用它,我需要将其转换为数组。
我有一个名为guru
的对象,其中包含我的json对象数组,
但是要在tensorflow.js中使用它,我需要一个像这样的数组:
weather [ [1,2,3],[3,2,1],...[] ];
这是我的角度分量代码:
export class DisplayjasonComponent implements OnInit {
public guru: {}; //local object
constructor(private http: HttpClient) {
var obj;
this.getJSON().subscribe(data => obj = data, error => console.log(error));
}
linearModel: tf.Sequential;
predection: any;
ngOnInit() {
this.getJSON().subscribe(data => {
this.guru = data; //saving json into local object
});
this.trainModel();
}
private _url: string = "/assets/myjson.json";
public getJSON(): Observable<any> {
return this.http.get(this._url);
}
async trainModel() {
this.linearModel = tf.sequential();
this.linearModel.add(tf.layers.dense({ units: 5, inputShape: [3] }));
this.linearModel.add(tf.layers.dense({ units: 2 }));
this.linearModel.compile({ loss: 'meanSquaredError', optimizer: 'sgd' });
const xs = tf.tensor2d([
[1, 2, 3], //this is where I need to use the array
[3, 2, 1]
]);
const ys = tf.tensor2d([
[1, 0],
[0, 1]
]);
await this.linearModel.fit(xs, ys)
const p = this.linearModel.predict(tf.tensor2d([[1, 2, 3]])) as any;
this.predection = Array.from(p.dataSync());
console.log(this.predection);
}
}
这是我的JSON文件:
{
"weather": [
{
"temprature": 23,
"precipitation": 2,
"humidity": 57,
"weather": 0
},
{
"temprature": 20,
"precipitation": 100,
"humidity": 87,
"weather": 1
},
{
"temprature": 32,
"precipitation": 5,
"humidity": 70,
"weather": 0
},
{
"temprature": 18,
"precipitation": 87,
"humidity": 93,
"weather": 1
},
{
"temprature": 28,
"precipitation": 0,
"humidity": 37,
"weather": 0
},
{
"temprature": 13,
"precipitation": 94,
"humidity": 93,
"weather": 1
},
{
"temprature": 25,
"precipitation": 4,
"humidity": 43,
"weather": 0
},
{
"temprature": 20,
"precipitation": 68,
"humidity": 98,
"weather": 1
},
{
"temprature": 26,
"precipitation": 0,
"humidity": 9,
"weather": 0
},
{
"temprature": 13,
"precipitation": 100,
"humidity": 98,
"weather": 1
}
]
}
答案 0 :(得分:0)
我不确定您希望输出数据是什么样子,但可以尝试一下。
您实际上可以单行执行此操作:
data.weather.map(Object.values);
.map
函数用于转换数组,而Object.values
函数将获取对象中每个字段的值。
var data = {
"weather": [
{
"temprature": 23,
"precipitation": 2,
"humidity": 57,
"weather": 0
},
{
"temprature": 20,
"precipitation": 100,
"humidity": 87,
"weather": 1
},
{
"temprature": 32,
"precipitation": 5,
"humidity": 70,
"weather": 0
},
{
"temprature": 18,
"precipitation": 87,
"humidity": 93,
"weather": 1
},
{
"temprature": 28,
"precipitation": 0,
"humidity": 37,
"weather": 0
},
{
"temprature": 13,
"precipitation": 94,
"humidity": 93,
"weather": 1
},
{
"temprature": 25,
"precipitation": 4,
"humidity": 43,
"weather": 0
},
{
"temprature": 20,
"precipitation": 68,
"humidity": 98,
"weather": 1
},
{
"temprature": 26,
"precipitation": 0,
"humidity": 9,
"weather": 0
},
{
"temprature": 13,
"precipitation": 100,
"humidity": 98,
"weather": 1
}
]
};
const result = data.weather.map(Object.values);
console.log(result);
答案 1 :(得分:0)
我认为以下函数应根据您的需要格式化json。
function formatJson(json) {
let weather = [];
json.weather.forEach((obj) => {
let tempArray = Object.values(obj);
weather.push(tempArray);
});
return weather;
}
使用json如下
let json = {
"weather": [{
"temprature": 23,
"precipitation": 2,
"humidity": 57,
"weather": 0
},
{
"temprature": 20,
"precipitation": 100,
"humidity": 87,
"weather": 1
},
{
"temprature": 32,
"precipitation": 5,
"humidity": 70,
"weather": 0
},
{
"temprature": 18,
"precipitation": 87,
"humidity": 93,
"weather": 1
},
{
"temprature": 28,
"precipitation": 0,
"humidity": 37,
"weather": 0
},
{
"temprature": 13,
"precipitation": 94,
"humidity": 93,
"weather": 1
},
{
"temprature": 25,
"precipitation": 4,
"humidity": 43,
"weather": 0
},
{
"temprature": 20,
"precipitation": 68,
"humidity": 98,
"weather": 1
},
{
"temprature": 26,
"precipitation": 0,
"humidity": 9,
"weather": 0
},
{
"temprature": 13,
"precipitation": 100,
"humidity": 98,
"weather": 1
}
]
}