資料集:
資料集本身是做二分類的。
裡面自己設計了dataloader、tester等類,簡單易懂。
匯入的標頭檔案都沒卵用,全是手寫的。
tester用了從30000條到32000條資料,當然你自己可以隨便改。
party類例項化之後是多方中的一方。
import torch
import torch.nn.modules
import torch.nn
import numpy as np
from torch.autograd import variable #torch的基本變數
import torch.nn.functional as f #裡面有很多torch的函式
import matplotlib.pyplot as plt
num_of_test_set=2000
num_of_party=5
party_data=6000
num_of_all_data=32561
class party:
def __init__(self):
self.data=
self.numoffeature=0
self.numofdata=0
def update(self):
self.numofdata=len(self.data)
self.numoffeature=len(self.data[0])
def bayespredict(self,feature):
#use=self.convertfeature(feature)
#if len(use)==0: return "feature convert failed. unable to predict"
#print('one')
half0=[item[:-1] for item in self.data if item[self.numoffeature-1]==1]#大於50k的
cnt=[0]*len(feature)
for item in half0:
for index,data in enumerate(item):
if data==feature[index]:
cnt[index]+=1
cnt=cnt[:-1]
p1 = 1
pa=len(half0)#0類分類在總分類**現的次數
if pa!=0:
#特徵事件相乘
for count in cnt:
p1 = p1*(count/pa)
#分類事件相乘
p1 = p1 * (pa/self.numofdata)
half1 = [item[:-1] for item in self.data if item[self.numoffeature - 1] == 0] # 小於50k的
cnt = [0] * len(feature)
for item in half1:
for index, data in enumerate(item):
if data == feature[index]:
cnt[index] += 1
cnt = cnt[:-1]
p2 = 1
pa = len(half1) # 0類分類在總分類**現的次數
if pa!=0:
# 特徵事件相乘
for count in cnt:
p2 = p2 * (count / pa)
# 分類事件相乘
p2 = p2 * (pa / self.numofdata)
if p1-p2<1e-11: return -1
elif p1>p2: return 1#大於50k
elif p150k'])
#print(loader.getclass['<=50k'])
parties=
for i in range(6):
temp=party()
last=0
for i in range(len(parties)):
loader.assigndata(parties[i],last,last+6000)
#print(parties[i].data[:10])
parties[i].update()
last+=6000
tester = tester()
loader.assigndata(tester,31000,32000)
'''y=
last=0
for i in range(6):
loader.assigndata(parties[0],last,last+6000)
res=tester.test(parties[0])
'''y=
last = 6000
for i in range(6):
loader.assigndata(parties[0], 0, last)
res = tester.test(parties[0])
x = [1, 2, 3, 4, 5, 6]
plt.bar(x, y)
plt.show()
樸素貝葉斯
樸素貝葉斯演算法是一種基於概率統計的分類方法,它主要利用貝葉斯公式對樣本事件求概率,通過概率進行分類。以下先對貝葉斯公式做個了解。對於事件a b,若p b 0,則事件a在事件b發生的條件下發生的概率為 p a b p a b p b 將條件概率稍作轉化即可得到貝葉斯公式如下 p a b p b a ...
樸素貝葉斯
1.準備資料 從文字中構建詞向量 2.訓練演算法 從詞向量計算概率 3.測試演算法 儲存為 bayes.py 檔案 參考 coding utf 8 from numpy import 文字轉化為詞向量 def loaddataset postinglist my dog has flea probl...
樸素貝葉斯
機器學習是將資料轉化為決策面的過程 scikit learn縮寫為sklearn 訓練乙個分類器,學習之後 其處理的準確性 def nbaccuracy features train,labels train,features test,labels test from sklearn.bayes ...