How to preprocess a large sparse matrix and unbalanced classes in machine learning

I have a large very sparse matrix with 1000 columns and 15000 rows. It mainly contains zeros, the rest is integer values from 1-8.

I'm limited to scikit-learn and none of the PCA implementations there would process sparse matrices (not even RandomizedPCA). I tried LDA and found a value of n_components=870 to be optimal, but this worsened my predictions on the test set.

I'm using LinearSVC as my learning algorithm as I get the best results with it. It performs better than random forests or xgb.

The second problem is, I'm in a multiclass environment with 3 classes that I have to predict: 0,1,2.

However, the classes are extremely unbalanced, 0 is the dominating class and I only have few 1s and 2s. (less than 100).

I'm using the class_weight ='auto' argument, is that correct?

Any advice on the preprocessing and improving my predictions would be helpful.