`
strayly
  • 浏览: 97473 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sklearn学习--文本分类多分类应用

 
阅读更多
#!/usr/bin/env python
# coding=utf-8
import sys
import jieba
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.svm import LinearSVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import MultiLabelBinarizer
import MySQLdb
import pandas as pd
import re 
import numpy as np

def jieba_tokenizer(x): return jieba.cut(x,cut_all=True)
def partition(x): return x  
def filter_html(s):  
    d = re.compile(r'<[^>]+>',re.S)  
    s = d.sub('',s)
    return s  
def gbk_utf8(s):
    s = s.decode('gbk',"ignore").encode('utf8')
    return s
#链接mysql数据库  
conn=MySQLdb.connect(host='localhost',user='root',passwd='',db='mydb',port=3306,charset="gbk",use_unicode=False)  
cursor =conn.cursor()  
cursor.execute("SET NAMES GBK")  


#训练数据样本  
data_ret = pd.DataFrame()  

sql = "SELECT ID, title,classid, content FROM t_reprint article WHERE ID<1000 ORDER BY a.ID ASC LIMIT 0,1000"  
#print sql  
cursor.execute(sql)

txt_ret =  []  
class_ret = []
id_ret = [] 
for row in cursor.fetchall():  
    content = filter_html(gbk_utf8(row[3]))   
    txt_ret.append(content) 
    class_s = gbk_utf8(row[2])
    class_l = class_s.split(",")
    class_ret.append(class_l) 
    id_ret.append(row[0])
    
txt_ret = txt_ret

  
X_train = txt_ret 
Y_train = class_ret


classifier = Pipeline([
    ('counter', CountVectorizer(tokenizer=jieba_tokenizer)),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC())),
])
mlb = MultiLabelBinarizer()
Y_train = mlb.fit_transform(Y_train)


classifier.fit(X_train, Y_train)



#target_names=['100','102','103','104','105','106','107','108','109','110','111','112','113','114','115','116','117','118','119','120','121','122','123','124','125','126','127','128','129','130','131', '132','133','134']
#测试数据
test_txt_set = []  
sql = "SELECT ID, title,classid, content FROM article  WHERE ID>1000 ORDER BY ID DESC LIMIT 10 "
cursor.execute(sql)
test_id_ret = [] 

for row in cursor.fetchall():  
    test_txt_set.append(filter_html(gbk_utf8(row[3]))) 
    test_id_ret.append(row[0])
X_test = test_txt_set


prediction = classifier.predict(X_test)

result = mlb.inverse_transform(prediction)
#展示结果
for i, label1 in enumerate(result):
    classstr = ''
    for j, label2 in enumerate(label1):
        classstr+=str(label2)+","
    print "ID:"+str(test_id_ret[i])+" =>class:"+classstr
分享到:
评论

相关推荐

    sklearn实现基于TF-IDF的KNN新闻标题文本分类

    本项目中,我们采用`sklearn`(Scikit-learn)库来实现一个基于TF-IDF的KNN(K-Nearest Neighbors)新闻标题文本分类器。以下是关于这个主题的详细知识点: 1. **TF-IDF**: - **TF(Term Frequency)**:词频,表示一个...

    Python库 | sklearn-som-1.0.1.tar.gz

    下面将详细介绍`sklearn-som`库以及它在人工智能和机器学习中的应用。 **自组织映射(SOM)** SOM是一种神经网络模型,由芬兰科学家Teuvo Kohonen在1980年代提出。这种网络通过竞争性学习机制,可以将高维数据投射...

    Sklearn-Algorithm-输入两段文字

    对于文本分类、情感分析、主题建模等任务,还可以结合其他模型,如朴素贝叶斯、支持向量机、深度学习模型等进行建模。 总的来说,虽然原始问题可以通过简单的集合操作解决,但在更复杂的文本分析场景中,Scikit-...

    knn文本分类算法实现

    KNN(K-Nearest Neighbors)算法是一种监督学习方法,常用于分类和回归问题,尤其在文本分类领域展现出良好的性能。在这个项目中,我们将深入探讨如何使用C++实现KNN算法来对文本进行分类。 KNN算法的基本思想是:...

    【机器学习】菜菜的sklearn课堂(1-12全课).zip

    虽然“朴素”假设在实际中往往不成立,但在许多情况下仍然表现出良好的性能,特别是在文本分类等领域。 最后,课程涵盖了011XGBoost,这是一个高效的梯度提升框架。XGBoost通过对弱学习器(如决策树)进行迭代增强...

    Python-达观杯文本智能处理挑战赛文本分类任务的实现

    在本项目"Python-达观杯文本智能处理挑战赛文本分类任务的实现"中,我们主要探讨了如何利用Python编程语言以及相关的机器学习和深度学习库来解决文本分类问题。文本分类是自然语言处理(NLP)领域的一个关键任务,其...

    NLP实战之sklearn+逻辑回归进行THUCNews文本分类python

    1. **THUCNews数据集**:THUCNews是由清华大学提供的一个中文新闻语料库,包含大量新闻标题,覆盖了多个主题类别,适合进行文本分类的研究。该数据集分为训练集、测试集和验证集,如cnews.train.txt、cnews.test.txt...

    Python项目案例开发从入门到实战源代码第18章 机器学习案例——基于朴素贝叶斯算法的文本分类.rar

    在本项目案例中,我们将深入探讨如何使用Python进行机器学习,特别是通过朴素贝叶斯算法进行文本分类。朴素贝叶斯算法是一种基于概率的分类方法,它在处理文本数据时表现出色,因为其简单且效率高。这个项目是Python...

    Python-数据科学笔记本分类任务使用sklearn和Tensorflow实现

    在数据科学领域,Python语言是首选工具之一,其丰富的库如sklearn(Scikit-learn)和TensorFlow为机器学习提供了强大的支持。本项目聚焦于一个数据科学笔记本的分类任务,我们将探讨如何利用这两个库来构建一个有效...

    sklearn机器学习旧金山犯罪分类数据

    这里提到的"sklearn机器学习旧金山犯罪分类数据"是一个用于训练和测试机器学习模型的数据集,它源自知名的数据竞赛平台Kaggle。这个数据集用于解决多分类问题,即预测不同类型的犯罪事件。 首先,我们要理解数据集...

    Python机器学习(scikit-learn):监督学习 - 朴素贝叶斯(分类器)-谢TS的博客.pdf

    朴素贝叶斯分类器的适用场景不仅限于文本分类,也可以应用于其他领域,只要特征之间的独立性假设成立,或者即使不完全成立,但在实际应用中仍然能够提供相当好的预测效果。在模型选择时,应考虑数据的特性以及对训练...

    K-Means文本聚类python实现

    文本聚类是机器学习领域的一种无监督学习方法,主要用于对大量文本数据进行分类,而无需预先知道具体的类别信息。在本案例中,我们将探讨如何使用Python实现K-Means算法来对文本数据进行聚类。K-Means是一种广泛应用...

    THUCNews新闻文本分类数据集

    THUCNews数据集因其丰富的新闻内容和明确的分类标签,被广泛应用在学术研究和工业实践中,帮助推动了文本分类技术的发展。同时,它也为初学者提供了很好的实践平台,有助于他们了解和掌握文本分类的全过程。

    Sklearn 与 TensorFlow 机器学习实用指南_机器学习_

    7. 实战项目:通过实际案例,展示如何综合运用Scikit-Learn和TensorFlow解决具体问题,如图像分类、文本情感分析等。 本书对于想要提升机器学习技能的读者来说是一份宝贵的资源,无论是想深入了解传统机器学习方法...

    sklearn-deltatfidf:scikit-learn的DeltaTfidfVectorizer

    **正文** `sklearn-deltatfidf` ...总之,`sklearn-deltatfidf` 是一个强大的工具,能够帮助数据科学家和机器学习工程师更好地理解和分析文本数据序列中的动态变化,尤其适合于需要捕捉文本序列中细微变化的应用场景。

    最大熵的文本分类

    最大熵模型(MaxEnt,Maximum Entropy Model)是一种在统计学和机器学习领域广泛使用的分类方法,尤其适用于文本分类。它基于熵最大化原则,即在所有可能的概率分布中,选择使得不确定性最大的那个,以此来避免对...

    基于朴素贝叶斯实现的文本分类

    朴素贝叶斯(Naive Bayes)是一种基于概率论的机器学习算法,尤其在文本分类领域表现出色。它依赖于贝叶斯定理,并假设特征之间相互独立,这是其“朴素”的体现。在这个项目中,我们将深入探讨如何利用Python来实现...

    机器学习sklearn 和tensorflow 的资料总结

    在NLP(自然语言处理)部分,可能会讨论到词嵌入(如Word2Vec、GloVe)、文本分类、情感分析、命名实体识别(NER)、机器翻译以及使用Transformer模型等现代技术。 总之,这份资料总结将带你深入理解Sklearn和...

    使用python编写的基于逻辑回归的文本分类

    在本示例中,我们看到一个使用Python进行文本分类的案例,主要依赖于逻辑回归算法。文本分类是自然语言处理中的一个关键任务,它涉及将文本数据分配到预定义的类别中。在这个例子中,作者使用了电影评论数据集,这...

Global site tag (gtag.js) - Google Analytics