I have a telecom dataset that has many attributes, among these attributes, there is "Voice mail plan" attribute that takes yes or no, and another attribute is "voice mail calls" which has many values, but always zero when "Voice mail plan" is no. When removing "Voice mail plan" from the dataset the accuracy of classifiers is lowered, so how can we inform the classifier that No is impeded in zero voice calls
The two features "voice mail calls" and "voice mail plan" are related but they are not linearly correlated. "Voice mail plan" still contains some information that is not available from other features. Why do you want to remove "Voice mail plan" in first place? If you need to decrease your number of features, you can try dimension reduction (linear or non-linear), this way you make sure most of the variance of your feature set is considered for building your model.
On the surface, There are feature selection methods type like filter, wrapper etc. which uses techniques like chi-sqaure, ANOVA,information gain etc. There also exists feature importance method in sklearn ExtraTreesClassifier which gives you the importance of the feature.
here are some to give you a glimpse of-
You can try these can plot and see which feature is giving you more value and select that.
It also depends on what kind of classification problem you are dealing with. From the telecom domain perspective also "plan type" might be giving high value information to the kind of output you are determining.IT is a good idea to check the underlying relation between your output and the "plan value" etc.
I might not disconnect my internet connection in near future if I have been taking a high value plan from your company for quite some time.