A linear function of velocity is one of the simplest ways to model the drag force.
Finding good values for the three coefficients is usually determined by collecting data from a quadrotor, and picking those values for which this linear model predicts the acceleration closest to that measured from the real data. E.g. minimizing the sum of squares of the error over all the data points in a least squares fashion, this can be done using a large linear system.
This will only work well for modeling drag if the weight and thrust are well known and there are no other forces acting on the quadrotor. Even still, as mentioned, drag is not perfectly linear, and there are other forces due to the impact of air such as blade flapping.
In general, a dynamical model can be learned, using data collected from a real quadrotor, by optimizing a cost function capturing the difference between the model's prediction and the real trajectory, over some chosen set of parameters. In this case, the parameters are the three linear coefficients for velocity, but better models can be built using a more expressive parameterization. For example, a linear function of the quadrotor state vector projected onto some high dimensional feature space.
See https://people.eecs.berkeley.edu/~brecht/papers/07.rah.rec.nips.pdf for this regression method.
In addition to using trajectory prediction error to optimize for unknown model parameters, you can also use trajectory tracking error. The principle is that, if your controller successfully inverts the dynamics model, then a low tracking error should imply low prediction error and vice-versa. That is, if you can predict well, you can control well.
See https://arxiv.org/pdf/1712.02402.pdf for a method that uses trajectory tracking error as a means of optimizing for the drag coefficients (Section VI).
There are many many other papers that model quadrotors and learn models from data; you can use the references in the above paper as a head start.
Hope this helps!