11.理解分類與監督學習、聚類與無監督學習。


1.理解分類與監督學習、聚類與無監督學習。

簡述分類與聚類的聯系與區別。

  聯系:分類與聚類都是通過預處理使得數據能基於一個分析目標而被整理。

  區別:分類是有監督,靠的是學習;

     聚類無監督,靠的是啟發式搜索。

簡述什么是監督學習與無監督學習。

  有監督學習:事先知道訓練樣本的標簽,通過挖掘將屬於不同類別標簽的樣本分開,可利用得到的分類模型,預測樣本屬於哪個類別;

  無監督學習:事先不知道樣本的類別標簽,通過對相關屬性的分析,將具有類似屬性的樣本聚成一類。

 

2.朴素貝葉斯分類算法 實例

利用關於心臟病患者的臨床歷史數據集,建立朴素貝葉斯心臟病分類模型。

有六個分類變量(分類因子):性別,年齡、KILLP評分、飲酒、吸煙、住院天數

目標分類變量疾病:

–心梗

–不穩定性心絞痛

新的實例:–(性別=‘男’,年齡<70, KILLP=‘I',飲酒=‘是’,吸煙≈‘是”,住院天數<7)

最可能是哪個疾病?

上傳手工演算過程。 

 

 

性別

年齡

KILLP

飲酒

吸煙

住院天數

疾病

1

>80

1

7-14

心梗

2

70-80

2

<7

心梗

3

70-81

1

<7

不穩定性心絞痛

4

<70

1

>14

心梗

5

70-80

2

7-14

心梗

6

>80

2

7-14

心梗

7

70-80

1

7-14

心梗

8

70-80

2

7-14

心梗

9

70-80

1

<7

心梗

10

<70

1

7-14

心梗

11

>80

3

<7

心梗

12

70-80

1

7-14

心梗

13

>80

3

7-14

不穩定性心絞痛

14

70-80

3

>14

不穩定性心絞痛

15

<70

3

<7

心梗

16

70-80

1

>14

心梗

17

<70

1

7-14

心梗

18

70-80

1

>14

心梗

19

70-80

2

7-14

心梗

20

<70

3

<7

不穩定性心絞痛

 

2.

 

 

 

 

 

 

 

3.使用朴素貝葉斯模型對iris數據集進行花分類。

嘗試使用3種不同類型的朴素貝葉斯:

高斯分布型
多項式型
伯努利型
並使用sklearn.model_selection.cross_val_score(),對各模型進行交叉驗證。

from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB
from sklearn.naive_bayes import BernoulliNB
from sklearn.model_selection import cross_val_score

# 引入鳶尾花數據集
iris = load_iris()

# 高斯分布型
g = GaussianNB()  # 建立模型
g_model = g.fit(iris.data, iris.target)  # 模型訓練
g_pre = g_model.predict(iris.data)  # 預測模型
print("高斯分布模型准確率:", sum(g_pre == iris.target) / len(iris.target))

# 多項式型
m = MultinomialNB()
m_model = m.fit(iris.data, iris.target)
m_pre = m_model.predict(iris.data)
print("多項式模型准確率:", sum(m_pre == iris.target) / len(iris.target))

# 伯努利型
b = BernoulliNB()
b_model = b.fit(iris.data, iris.target)
b_pre = b.predict(iris.data)
print("伯努利模型准確率:", sum(b_pre == iris.target) / len(iris.target))

#交叉驗證
print("\n------交叉驗證------")
# 高斯分布型
g = GaussianNB()
g_scores = cross_val_score(g, iris.data, iris.target, cv=10)
print('高斯分布型精確度:%.2f' % g_scores.mean())

# 多項式型
m = MultinomialNB()
m_scores = cross_val_score(m, iris.data, iris.target, cv=10)
print('多項式型精確度:%.2f' % m_scores.mean())

# 伯努利型
b = BernoulliNB()
b_scores = cross_val_score(b, iris.data, iris.target, cv=10)
print('多項式型精確度:%.2f' % b_scores.mean())

 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM