學習樸素貝葉斯演算法與交叉驗證C實現

2021-07-29 18:52:11 字數 1490 閱讀 3638

c語言程式設計課之樸素貝葉斯演算法

第一次接觸資料探勘,覺得好有意思啊

測試了鐵達尼號的資料,只取了年齡和性別這兩個**屬性。

測試準確率78%

還是很棒棒的

樸素貝葉斯演算法:

這個公式提供給了我們乙個方法

當我們知道在b下a發生的概率時,可以**a下發生b的概率。

就拿這個鐵達尼號的訓練集來說。

可以算出在死亡下發生年齡和性別的概率和在生存下發生年齡和性別的概率。

之後根據貝葉斯公式可以算出在在年齡和生存下發生死亡或者生存的概率

根據樣本的情況算出其死亡和生存的值

其較大的就是**結果

#include#include#include#define k 10

#define datasize 800

int people[1000][3];

void showme(int n)

printf("\n");

}}int getdata() //get the file data into internal storage

int i = 0, k = 0;

for(; i < datasize; i++)

people[i][k] = changeage(people[i][k]);}}

}//showme(n);

fclose(fp);

//changeage(n);

return 0;

}int changeage(int x)// to make the data of age discretized

else

else

else}}

}int checker(int start, int end, int typeson, int typedad, int sampleson, int sampledad)//check in [start, end)

}for(i = end; i < datasize; i++)

}return count;

}double kernel(int start, int end, int dead, int ***, int age)

int compare(int start, int end, int ***, int age)

else

}void corsstest()

}result = result + (double)correctpredict / (double)amountsample;

}double possiblity = result / k;

printf("the accuracy of this mode is %lf", possiblity);

}int main(void)

樸素貝葉斯演算法

首先樸素貝葉斯分類演算法利用貝葉斯定理來 乙個未知類別的樣本屬於各個類別的可能性,選擇可能性最大的乙個類別作為該樣本的最終類別。對於計算而言,需要記住乙個公式。p c x p x c p c p x 類似於概率論條件概率公式。其中x代表含義為最終類別,例如 yes?no。c為屬性。使用樸素貝葉斯演算...

樸素貝葉斯演算法

計算貝葉斯定理中每乙個組成部分的概率,我們必須構造乙個頻率表 因此,如果電子郵件含有單詞viagra,那麼該電子郵件是垃圾郵件的概率為80 所以,任何含有單詞viagra的訊息都需要被過濾掉。當有額外更多的特徵時,此概念的使用 利用貝葉斯公式,我們可得到如下概率 分母可以先忽略它,垃圾郵件的總似然為...

樸素貝葉斯演算法

對於樸素貝葉斯演算法,我的理解就是 使用已知的概率和結果,來 事情的條件。舉乙個例子就是,我們通過統計得到了不同年齡段喜歡吃冰激凌的比例,比如各採訪了500個青少年 中年人和老年人,得到有450個青少年 300個中年人和50個老年人喜歡吃冰激凌。我們還通過統計,知道了在社會中假設小孩子佔20 中年人...