假设我有一个矩阵,如:
4 0 3 5
0 2 6 0
7 0 1 0
Run Code Online (Sandbox Code Playgroud)
我希望它二进制化为:
0 0 0 0
0 1 0 0
0 0 1 0
Run Code Online (Sandbox Code Playgroud)
即将阈值设置为2,将大于阈值的任何元素设置为0,将小于或等于阈值的任何元素(除0)设置为1.
我们可以在python的csr_matrix或任何其他稀疏矩阵上执行此操作吗?
我知道scikit-learn提供Binarizer将低于或等于阈值的值替换为0,高于1.
我想使用async使node.js按顺序工作,首先从mongodb查询两个速率,然后使用这些速率计算两个新速率:
async.series([
function(callback){
db.collection('heros',function(err,collection){
if(err){
console.log(err);
}
if(!err){
console.log("2 collection fetched!");
collection.findOne({'id':win},function(err,result){
if (err) throw err;
rate1=result.rate;
console.log("win-rate:"+rate1);
});
collection.findOne({'id':lose},function(err,result){
if (err) throw err;
rate2=result.rate;
console.log("lose-rate:"+rate2);
});
}
});
callback(null);
}, function(callback){
var Ea= 1/(1+Math.pow(10,(rate2-rate1)/400));
var Eb= 1/(1+Math.pow(10,(rate1-rate2)/400));
var ra= rate1+16*(1-Ea);
var rb= rate2+16*(0-Eb);
console.log("ra:"+ra);
console.log("rb:"+rb);
callback(null);
},
function(callback){
db.collection('heros',function(err,collection){
if(!err){
collection.update({'id':win},{$set: {rate:ra}},function(err,result){
if(err) throw err;
if(!err){
console.log("update successful");
}
});
collection.update({'id':lose},{$set:{rate:rb}},function(err,result){
if(err) throw err;
if(!err){
console.log("update successful");
}
});
}
});
callback(null);
}
]);
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,它会显示错误消息:
async.series([
function(callback){
db.collection('heros',function(err,collection){
if(err){ …Run Code Online (Sandbox Code Playgroud)