Hide random values from matrix
4 次查看(过去 30 天)
显示 更早的评论
hi all
i have matrix A (8x9):
A = [0,2,0,0,1,2,0;3,0,4,5,0,0,1;0,0,2,0,3,0,0;0,5,0,3,0,0,2;4,0,1,0,4,5,0;0,2,0,0,4,0,0;3,0,0,0,0,0,2;3,0,1,1,2,1,3]
i have to find mean absolute error. for which i have to hide 10% values from this matrix and then find those values using algorithm and then find out its MAE. How can i can hide random values from the matrix? As actual matrix is quite large.
5 个评论
John D'Errico
2018-3-11
Hiding means absolutely whatever you want it to mean.
It is you who needs to design the algorithm, and write the code. So you are the one who needs to design the algorithm, and chose how to flag or indicate which values are hidden. There is no magical tool in MATLAB to "hide" a number in an array.
采纳的回答
John D'Errico
2018-3-11
编辑:John D'Errico
2018-3-11
There are lots of ways you could "hide" something.
Simplest would be to make a copy of your matrix. Then choose some subset of the values to "hide". (help randperm) Do the hiding step by replacing them with NaN.
Finally, choose some algorithm to infer the NaN elements from the rest of the data. Personally, I'd use my own inpaint_nans utility, but I doubt using a tool from the File Exchange is an acceptable solution for a homework problem. But there are lots of ways you can impute values for those missing elements. I can think of at least a few, so you need to think here.
Finally, once you have computed the predictions for the hidden elements, compute the differences between the original values and the predictions. Take the absolute values, and then compute the mean (thus MAE: Mean Absolute Error.) The MAE only applies to the originally hidden elements of course.
3 个评论
John D'Errico
2018-3-11
编辑:John D'Errico
2018-3-11
You are the person who needs to choose how to hide them. I suggested a simple scheme is to create a new copy of the array, setting those elements to NaN. But you can choose freely what you do and how you do it. There is no magic here. An algorithm is exactly what you choose to design. Then you write code to implement that algorithm. But there is no single unique way to solve this problem.
What I am saying is that you choose some simple scheme t store the information you need to store. That might be a list of the element indices that are to be hidden. It might be an array that contains NaNs. What ever works for you. At some point of course, you will need that list of elements. But find is a simple way to locate things.
BTW, 1642x1642 is not large.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!