Package: featselection
featselection=========This project provides a set filter methods for feature selection applied to text classification.Currently the following methods are available:- ALOFT - At Least One FeaTure `[1] <https://www.sciencedirect.com/science/article/pii/S0957417412007063>`_- MFD - Maximum f Features per Document `[2] <https://www.sciencedirect.com/science/article/pii/S0957417414006344>`_- MFDR - Maximum f Features per Document-Reduced `[2] <https://www.sciencedirect.com/science/article/pii/S0957417414006344>`_- cMFDR - Class-dependent Maximum f Features per Document-Reduced `[3] <https://ieeexplore.ieee.org/abstract/document/7727649>`_- AFSA - Automatic Features Subsets Analyzer `[4] <https://ieeexplore.ieee.org/abstract/document/7839596>`_============Installation============The package can be installed using pip:``pip install featselection``=============Dependencies=============The code is tested to work with Python 3.6. The dependency requirements are:* numpy* scipy* pandas* scikit-learnThese dependencies are automatically installed using the pip command above.=========Examples=========In this example, we show the use MFD... code-block:: python3import numpy as npfrom sklearn.metrics import accuracy_scorefrom sklearn.feature_selection import chi2from sklearn.naive_bayes import MultinomialNBfrom sklearn.datasets import fetch_20newsgroupsfrom sklearn.model_selection import StratifiedKFoldfrom sklearn.feature_extraction.text import CountVectorizerfrom filters import MFD# Load datacats = ['comp.windows.x', 'rec.sport.baseball', 'sci.med', 'soc.religion.christian', 'talk.politics.misc']newsgroups = fetch_20newsgroups(categories=cats)# Pre-processing: Transform texts to Bag-of-Words and remove stopwordsvectorizer = CountVectorizer(stop_words='english')vectors = vectorizer.fit_transform(newsgroups.data)# 10-fold stratified cross validationskf = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)accuracy_results = []for train_index, test_index in skf.split(vectors, newsgroups.target):# Trainmy_filter = MFD(10, chi2)X_train = my_filter.fit_transform(vectors[train_index], newsgroups.target[train_index])clf = MultinomialNB()clf.fit(X_train, newsgroups.target[train_index])# TestX_test = my_filter.transform(vectors[test_index])predicted = clf.predict(X_test)# Evaluateaccuracy_results.append(accuracy_score(newsgroups.target[test_index], predicted))# Output averaged accuracyprint('Mean accuracy = {0} ({1})'.format(np.mean(accuracy_results), np.std(accuracy_results)))==========References==========`[1] <https://www.sciencedirect.com/science/article/pii/S0957417412007063>`_ Pinheiro, Roberto HW, et al. "A global-ranking local feature selection method for text categorization." Expert Systems with Applications 39.17 (2012): 12851-12857.`[2] <https://www.sciencedirect.com/science/article/pii/S0957417414006344>`_ Pinheiro, Roberto HW, et al. "Data-driven global-ranking local feature selection methods for text categorization." Expert Systems with Applications 42.4 (2015): 1941-1949.`[3] <https://ieeexplore.ieee.org/abstract/document/7727649>`_ Fragoso, Rogério CP, et al. "Class-dependent feature selection algorithm for text categorization." 2016 International Joint Conference on Neural Networks (IJCNN). IEEE, 2016.`[4] <https://ieeexplore.ieee.org/abstract/document/7839596>`_ Fragoso, Rogério CP, et al. "A method for automatic determination of the feature vector size for text categorization." 2016 5th Brazilian Conference on Intelligent Systems (BRACIS). IEEE, 2016.