zoukankan      html  css  js  c++  java
  • sklearn中的朴素贝叶斯模型及其应用

    1.使用朴素贝叶斯模型对iris数据集进行花分类

    尝试使用3种不同类型的朴素贝叶斯:

    高斯分布型

    多项式型

    伯努利型

    2.使用sklearn.model_selection.cross_val_score(),对模型进行验证

    from sklearn.datasets import load_iris
    iris = load_iris()
    from sklearn.naive_bayes import GaussianNB   #高斯
    gnb = GaussianNB()  #构造
    pre = gnb.fit(iris.data,iris.target)  #拟合
    y_pre = gnb.predict(iris.data)   #预测
    print(iris.data.shape[0],(iris.target != y_pre).sum())
    scores = cross_val_score(gnb,iris.data,iris.target,cv=10) #评估
    print("Accuracy:%.3f"%scores.mean())
    
    
    from sklearn.naive_bayes import BernoulliNB  #伯努利
    bnb = BernoulliNB()
    pre = bnb.fit(iris.data,iris.target)
    y_pre = bnb.predict(iris.data)
    print(iris.data.shape[0],(iris.target != y_pre).sum())
    scores = cross_val_score(bnb,iris.data,iris.target,cv=10) 
    print("Accuracy:%.3f"%scores.mean())
    
    
    from sklearn.naive_bayes import MultinomialNB  #多项式
    mnb = MultinomialNB()
    pre = mnb.fit(iris.data,iris.target)
    y_pre = mnb.predict(iris.data)
    print(iris.data.shape[0],(iris.target != y_pre).sum())
    scores = cross_val_score(mnb,iris.data,iris.target,cv=10)
    print("Accuracy:%.3f"%scores.mean())

     3. 垃圾邮件分类

    数据准备:

    • 用csv读取邮件数据,分解出邮件类别及邮件内容。
    import csv
    file_path = r"C:/Users/Administrator/Desktop/SMSSpamCollectionjsn.txt"
    sms = open(file_path,'r',encoding = 'utf-8')
    sms_data = []
    sms_label = []
    csv_reader = csv.reader(sms,delimiter='	')
    for line in csv_reader:
        sms_label.append(line[0])
        sms_data.append(line[1])
    sms.close()
    sms_data
    
    sms_label

    • 对邮件内容进行预处理:去掉长度小于3的词,去掉没有语义的词等

    import nltk
    nltk.download()
    from nltk.corpus import stopwords
    from nltk.stem import WordNetLemmatiser

    训练集和测试集数据划分

    • from sklearn.model_selection import train_test_split
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test = train_test_split(sms_data,sms_label,test_size = 0.3,random_state=0,stratify=sms_label)
    
    x_train
    x_test

  • 相关阅读:
    [树状数组]JZOJ 4658 小Z调顺序
    [差分数组]JZOJ 3187 的士
    [BFS]JZOJ 4671 World Tour
    [BFS]JZOJ 4672 Graph Coloring
    [数学]JZOJ 4673 LCS again
    shell:正则表达式和文本处理器
    开发脚本自动部署及监控
    Linux中的重启命令
    nginx和nfs
    网络相关配置
  • 原文地址:https://www.cnblogs.com/hodafu/p/9999129.html
Copyright © 2011-2022 走看看