机器学习算法基础——朴素贝叶斯算法
26.樸素貝葉斯算法原理
聯合概率和條件概率
聯合概率:包含多個條件,且所有條件同時成立的概率 記作:P(A,B)
- P(A,B)=P(A)P(B)
條件概率:就是事件A在另外一個事件B已經發生條件下的發生概率 記作:P(A|B)
- 特性:P(A1,A2|B) = P(A1|B)P(A2|B)
- 注意:此條件概率的成立,是由于A1,A2相互獨立的結果
樸素貝葉斯-貝葉斯公式?
?sklearn樸素貝葉斯實現API
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
- alpha:拉普拉斯平滑系數
27.樸素貝葉斯算法對新聞進行分類案例
sklearn20類新聞分類
20個新聞組數據集包含20個主題的18000個新聞組帖子
from sklearn.datasets import fetch_20newsgroups from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB def naivebayes():news = fetch_20newsgroups(subset="all")#進行數據分割x_train, x_test, y_train, y_test = train_test_split(news.data,news.target,test_size=0.25)#對數據集進行特征抽取tf = TfidfVectorizer()# 以訓練集當中的詞的列表進行每篇文章重要性統計x_train = tf.fit_transform(x_train)print(tf.get_feature_names())x_test = tf.transform(x_test)#進行樸素貝葉斯算法mlt = MultinomialNB(alpha=1.0)print(x_train.toarray())mlt.fit(x_train,y_train)y_predict = mlt.predict(x_test)print("預測的文章類別為:",y_predict)print("準確率為:",mlt.score(x_test,y_test))return None naivebayes() [[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]...[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]] 預測的文章類別為: [ 9 10 16 ... 8 8 8] 準確率為: 0.844227504244482128.樸素貝葉斯算法總結
樸素貝葉斯分類優缺點
優點:
缺點:
29.精確率和召回率
分類模型的評估
- estimator.score() 一般最常見使用的是準確率,即預測結果正確的百分比
混淆矩陣
在分類任務下,預測結果(Predicted Condition)與正確標記(True Condition)之間存在四種不同的組合,構成混淆矩陣(適用于多分類)
精確率(Precision)與召回率(Recall)
精確率:預測結果為正例樣本中真實為正例的比例(查得準)
召回率:真實為正例的樣本中預測結果為正例的比例(查的全,對正樣本的區分能力)
其他分類標準,F1-score,反映了模型的穩健型??
分類模型評估API?
sklearn.metrics.classification_report?
classification_report
sklearn.metrics.classification_report(y_true, y_pred, target_names=None)
30.交叉驗證與網格搜索對K-近鄰算法調優
交叉驗證與網格搜索
超參數搜索-網格搜索?
通常情況下,有很多參數是需要手動指定的(如k-近鄰算法中的K值),這種叫超參數。但是手動過程繁雜,所以需要對模型預設幾種超參數組合。每組超參數都采用交叉驗證來進行評估。最后選出最優參數組合建立模型。?
| K值 | K=3 | K=5 | K=7 |
| 模型 | 模型1 | 模型2 | 模型3 |
超參數搜索-網格搜索API
- sklearn.model_selection.GridSearchCV
GridSearchCV
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
- 對估計器的指定參數值進行詳盡搜索
- estimator:估計器對象
- param_grid:估計器參數(dict){“n_neighbors”:[1,3,5]}
- cv:指定幾折交叉驗證
- fit:輸入訓練數據
- score:準確率 結果分析:
- best_score_:在交叉驗證中測試的最好結果
- best_estimator_:最好的參數模型
- cv_results_:每次交叉驗證后的測試集準確率結果和訓練集準確率結果
總結
以上是生活随笔為你收集整理的机器学习算法基础——朴素贝叶斯算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法基础——k近邻算法
- 下一篇: 机器学习算法基础——决策树和随机深林