協同過濾,KNN,貝葉斯Bayes,聚類Cluster,文本分析TF-IDF,核函數

協同過濾,KNN,貝葉斯,Bayes,,聚類Cluster,文本分析的TF-IDF,各種核函數等算法

自己寫的算法準確率不是很高,比SKLEARN 的庫要低0.15左右 因為時間比較緊,這裡的圖片採用的是目前在做項目的圖片,不是原始圖片,但算法是相同的,且用原算法都能跑通! 有不足之處,還望指教!

貝葉斯Bayes的實現,使用PANDAS處理數據,MATPLOTLIB來調優

協同過濾,KNN,貝葉斯Bayes,聚類Cluster,文本分析TF-IDF,核函數

KNN算法的實現,及調優,使用歐氏距離

協同過濾,KNN,貝葉斯Bayes,聚類Cluster,文本分析TF-IDF,核函數

KNN算法的實現,及調優,使用餘弦距離

協同過濾,KNN,貝葉斯Bayes,聚類Cluster,文本分析TF-IDF,核函數

協同過濾的實現,調優

協同過濾,KNN,貝葉斯Bayes,聚類Cluster,文本分析TF-IDF,核函數


協同過濾算法展示:

from math import sqrt

from numpy import *

import operator

from algroithms.kernels import cossim

from process.processmain import processReturn

def classifyperson(inputdata,data,lable,k):#傳入測試數據,總數據,總數據類別,K個

resultdata=[]#結果類別

dataSetSize=data.shape[0]

for indata in inputdata:

sortdistance=[]

for tran in data:

simnum=cossim(indata,tran)##############修改函數

sortdistance.append(simnum)

sortdistance=array(sortdistance)

sortdistance=argsort(-sortdistance)

classcount={}

for i in range(k):

vote=lable[sortdistance[i]]

classcount[vote] = classcount.get(vote,0)+1

sortdic=sorted(classcount.items(),key=operator.itemgetter(1),reverse=True)

resultdata.append(sortdic[0][0])#返回最近的所有點排序,選第一個

return resultdata

def knn(wordNum,pro,k1,k2):#knn運算,抽取的字數,訓練比率

returnlist, classifylist, doctorlist = processReturn(wordNum)

a=int(len(classifylist)*pro)

trainlable=array(classifylist[:a])

traindata=array(returnlist[:a])

goallable=classifylist[a:]

goaldata=array(returnlist[a:])

for num in range(k1,k2):

right = 0

result=classifyperson(goaldata,traindata,trainlable,num)

for i in range(len(goallable)):

if goallable[i]==result[i]:

right=right+1

print("第",num,"個的準確率: ",(right/len(goallable)))

knn(300,0.75,3,10)



代碼下載地址:

https://github.com/515791278/Algorithms.git


分享到:


相關文章: