Can NaN class be assigned to a certain class in imbalanced datasets (binary classification)? I'm working on a spam detection binary classification problem, but the dataset is very imbalanced (99% to 1%). I know there are techniques like over/under sampling, but I don't think it can be used in this scenario due to the extremely low raw number of positive class samples.
However, a large number of the samples in the dataset have a "NaN" class. I was wondering if it is sensible to assign these classes as belonging to the positive class, or if this is something you should never do in a binary classification problem (in case it's considered as "cheating").
I'm planning on using common algorithms such as logistic regression, KNN, SVM, etc. Perhaps instead of reassigning NaN samples, there is another way of modelling which is better suited to this problem?
Thanks

You could treat the NaNs as unlabelled data and use a semi-supervised learning algorithm, but as @Tim (+1) suggests, labelling them as positive is likely to bias the results.  Unless you know the mechanism generating the NaNs, the best you can do is likely to be to ignore the labels entirely and just use the attribute vector.  There are semi-supervised versions of logistic regression and the SVM.
Note that imbalance generally is not an inherent problem.  If ignoring the minority class is unacceptable, it probably means your application has unequal misclassification costs, and you just need to take them into account (e.g. for the SVM by having different slack penalties for positive and negative patterns).  But considering misclassification costs is something we should be doing anyway, and the imbalance does not affect the solution to the cost-sensitive learning problem.
Just a thought, as it is a spam dataset, it could be that the negative examples are emails that were caught by the spam filter, but labelled by the user as ham, and the positive examples could be labelled as spam by the user.  The NaN ones may be emails that were caught by a spam filter, but were not checked by the user?
