学习目标:
scikit-learn官方文档学习–使用稀疏特征对文本文档进行分类
- 线性模型
—使用稀疏特征对文本文档进行分类
学习内容:
使用稀疏特征对文本文档进行分类
- 代码解读
- 掌握 sklearn库相关函数使用
导入相关库
import logging
import numpy as np
from optparse import OptionParser
import sys
from time import time
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import HashingVectorizer
from sklearn.feature_selection import SelectFromModel
from sklearn.feature_selection import SelectKBest, chi2
from sklearn.linear_model import RidgeClassifier
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC
from sklearn.linear_model import SGDClassifier
from sklearn.linear_model import Perceptron
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.naive_bayes import BernoulliNB, ComplementNB, MultinomialNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.neighbors import NearestCentroid
from sklearn.ensemble import RandomForestClassifier
from sklearn.utils.extmath import density
from sklearn import metrics
设置日志记录配置
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
这里使用 Python 内置的 logging 模块来配置标准输出(stdout)上的日志记录。具体配置如下:
level=logging.INFO:
设置日志级别为 INFO,所有 INFO 及以上级别的日志消息(如 DEBUG, INFO, WARNING, ERROR, CRITICAL)会被记录。程序运行过程中的一般信息性消息会被输出。
format=‘%(asctime)s %(levelname)s %(message)s’:
设置日志消息的格式。指定了每个日志条目应包含的时间戳(%(asctime)s)、日志级别(%(levelname)s)和实际消息内容(%(message)s)。当日志被记录时,这些占位符会被相应的实时信息替换。通过这一配置,后续代码中使用 logging.info()、logging.warning() 等方法记录的消息将以指定的格式显示在标准输出上,便于用户监控程序执行状态和获取相关信息。
定义选项解析器并添加命令行选项:
from optparse import OptionParser
op = OptionParser()
# ... (省略若干行,见下文)
使用 optparse 模块(已弃用,现代代码通常使用 argparse 模块)创建一个 OptionParser 实例 op,用于解析命令行传入的选项。
op.add_option("--report",
action="store_true", dest="print_report",
help="Print a detailed classification report.")
op.add_option("--chi2_select",
action="store", type="int", dest="select_chi2",
help="Select some number of features using a chi-squared test")
op.add_option("--confusion_matrix",
action="store_true", dest="print_cm",
help="Print the confusion matrix.")
op.add_option("--top10",
action="store_true", dest="print_top10",
help="Print ten most discriminative terms per class"
" for every classifier.")
op.add_option("--all_categories",
action="store_true", dest="all_categories",
help="Whether to use all categories or not.")
op.add_option("--use_hashing",
action="store_true",
help="