【machine learning】使用稀疏特征对文本文档进行分类代码解析

学习目标:

scikit-learn官方文档学习–使用稀疏特征对文本文档进行分类

  • 线性模型

—使用稀疏特征对文本文档进行分类

学习内容:

使用稀疏特征对文本文档进行分类

  1. 代码解读
  2. 掌握 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="
  • 43
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scikit-learn是一个Python的机器学习库,提供了丰富的机器学习算法和工具。其中,文本分类机器学习中一个重要的应用场景,而Scikit-learn也提供了许多文本分类的工具和算法。 下面详细解析如何使用Scikit-learn进行文本分类。 1. 数据准备 首先需要准备好文本数据,可以从文本文件中读取,也可以直接使用Python字符串。 对于分类问题,需要将文本数据与对应的标签组成二元组。例如: ``` data = [("This is a positive sentence", "positive"), ("I am happy today", "positive"), ("This is a negative sentence", "negative"), ("I am sad today", "negative")] ``` 2. 特征提取 在文本分类中,通常需要将文本数据转换为数值特征,以便机器学习算法进行处理。常用的特征提取方法有: - 词袋模型(Bag-of-Words):将文本表示为一个词汇表中单词的计数向量。 - TF-IDF模型:词频-逆文档频率(Term Frequency-Inverse Document Frequency),旨在衡量一个单词在文档中的重要程度。 - Word2Vec模型:将单词转换为密集向量表示。 在Scikit-learn中,可以使用CountVectorizer和TfidfVectorizer进行特征提取。 ``` from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer # 词袋模型 vectorizer = CountVectorizer() X = vectorizer.fit_transform([d[0] for d in data]) # TF-IDF模型 vectorizer = TfidfVectorizer() X = vectorizer.fit_transform([d[0] for d in data]) ``` 3. 模型训练 在特征提取后,可以使用Scikit-learn提供的机器学习算法进行模型训练。常用的分类算法有: - 朴素贝叶斯(Naive Bayes) - 决策树(Decision Tree) - 支持向量机(Support Vector Machine) - 随机森林(Random Forest) 以朴素贝叶斯分类器为例: ``` from sklearn.naive_bayes import MultinomialNB from sklearn.model_selection import train_test_split # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, [d[1] for d in data], test_size=0.2) # 训练朴素贝叶斯分类器 clf = MultinomialNB() clf.fit(X_train, y_train) ``` 4. 模型评估 训练完成后,需要对模型进行评估。常用的评估指标有: - 准确率(Accuracy) - 精确率(Precision) - 召回率(Recall) - F1-score 以准确率为例: ``` from sklearn.metrics import accuracy_score # 在测试集上评估模型 y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 5. 新数据预测 最后,可以使用训练好的模型对新数据进行预测。 ``` # 对新数据进行预测 new_data = ["I am not sure how I feel", "This sentence is neutral"] X_new = vectorizer.transform(new_data) y_pred = clf.predict(X_new) print(y_pred) ``` 以上就是使用Scikit-learn进行文本分类的详细解析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值