# import some data to play with
# The iris dataset
iris = datasets.load_iris()
# Some noisy data not correlated
E = np.random.uniform(0, 0.1, size=(len(iris.data), 20))
# Add the noisy data to the informative features
X = np.hstack((iris.data, E))
y = iris.target
print(__doc__)import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets, svmfrom sklearn.feature_selection import SelectPercentile, f_classif################################################################################ import some data to play with# The iris datasetiris = datasets.load_iris()# Some noisy data not correlatedE = np.random.uniform(0, 0.1, size=(len(iris.data), 20))# Add the noisy data to the informative featuresX = np.hstack((iris.data, E))y = iris.target###############################################################################plt.figure(1)plt.clf()X_indices = np.arange(X.shape[-1])################################################################################ Univariate feature selection with F-test for feature scoring# We use the default selection function: the 10% most significant featuresselector =SelectPercentile(f_classif, percentile=10)selector.fit(X, y)scores =-np.log10(selector.pvalues_)scores /= scores.max()plt.bar(X_indices -.45, scores, width=.2, label=r'Univariate score ($-Log(p_{value})$)', color='g')################################################################################ Compare to the weights of an SVMclf = svm.SVC(kernel='linear')clf.fit(X, y)svm_weights = (clf.coef_ **2).sum(axis=0)svm_weights /= svm_weights.max()plt.bar(X_indices -.25, svm_weights, width=.2, label='SVM weight', color='r')clf_selected = svm.SVC(kernel='linear')clf_selected.fit(selector.transform(X), y)svm_weights_selected = (clf_selected.coef_ **2).sum(axis=0)svm_weights_selected /= svm_weights_selected.max()plt.bar(X_indices[selector.get_support()] -.05, svm_weights_selected, width=.2, label='SVM weights after selection', color='b')plt.title("Comparing feature selection")plt.xlabel('Feature number')plt.yticks(())plt.axis('tight')plt.legend(loc='upper right')plt.show()