協同過濾,KNN,貝葉斯,Bayes,,聚類Cluster,文本分析的TF-IDF,各種核函數等算法
自己寫的算法準確率不是很高,比SKLEARN 的庫要低0.15左右 因為時間比較緊,這裡的圖片採用的是目前在做項目的圖片,不是原始圖片,但算法是相同的,且用原算法都能跑通! 有不足之處,還望指教!
貝葉斯Bayes的實現,使用PANDAS處理數據,MATPLOTLIB來調優
KNN算法的實現,及調優,使用歐氏距離
KNN算法的實現,及調優,使用餘弦距離
協同過濾的實現,調優
協同過濾算法展示:
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
閱讀更多 Python樂園 的文章