您好,登錄后才能下訂單哦!
KNN核心算法函數(shù),具體內(nèi)容如下
#! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cn import math def getMaxLocate(target): # 查找target中最大值的locate maxValue = float("-inFinIty") for i in range(len(target)): if maxValue < target[i]: maxValue = target[i] flag = i return flag def KDistance(K, dest, source): destlen = len(dest) source1len = len(source[1]) sourcelen = len(source) KNN = [] locate = source # 準(zhǔn)備從source中剔除N-K個最大值 if destlen == source1len: for i in range(sourcelen): delta = 0 for j in range(source1len):# 畢達哥拉斯公式 delta += (dest[j] - source[i][j])*(dest[j] - source[i][j]) KNN.append(math.sqrt(delta)) for k in range(sourcelen, K, -1): flag = getMaxLocate(KNN) #print("%s 最大元素位置為%d" % (KNN, flag)) KNN.remove(KNN[flag]); locate.remove(locate[flag])# 移除對應(yīng)位置的元素 #print(locate) return locate # 返回最終K個最接近的元素 else: return None
假設(shè)你在伯克利開個小小的面包店,每天都做新鮮面包,需要根據(jù)如下一組特征預(yù)測當(dāng)天該烤多少條面包:
a. 天氣指數(shù)1~5(1表示天氣很糟,5表示天氣非常好);
b. 是不是周末或節(jié)假日(周末或節(jié)假日為1,否則為0);
c. 有沒有活動(1表示有,0表示沒有)。
已知
historyA(5, 1, 0) = 300
historyB(3, 1, 1) = 225
historyC(1, 1, 0) = 75
historyD(4, 0, 1) = 200
historyE(4, 0, 0) = 150
historyF(2, 0, 0) = 50
回歸:周末,天氣不錯
Now(4, 1, 0) = ?
#! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cn if __name__ == "__main__": history = {} history[5, 1, 0] = 300 history[3, 1, 1] = 225 history[1, 1, 0] = 75 history[4, 0, 1] = 200 history[4, 0, 0] = 150 history[2, 0, 0] = 50 dest = [4, 1, 0] source = [] for i in history: source.append(i) print(source) from KNNdistance import KDistance K = 4 locate = KDistance(K, dest, source) avg = 0 for i in range(len(locate)): avg+=history[locate[i]] avg/=K print("回歸結(jié)果:今天應(yīng)該烤%d個面包" % round(avg))
KNN算法:
samples:
a. 垃圾郵件過濾器, 使用一種簡單算法——樸素貝葉斯分類器(Naive Bayes classifier)
b. 預(yù)測股票市場, 使用機器學(xué)習(xí)來預(yù)測股票市場的漲跌真的很難。對于股票市場,如何挑選合適的特征呢?股票昨天漲了,今天也會漲,這樣的特征合適嗎?又或者每年五月份股票市場都以綠盤報收,這樣的預(yù)測可行嗎?在根據(jù)以往的數(shù)據(jù)來預(yù)測未來方面,沒有萬無一失的方法。未來很難預(yù)測,由于涉及的變量太多,這幾乎是不可能完成的任務(wù)。
conclude:
機器學(xué)習(xí)是個很有趣的領(lǐng)域,只要下定決心,你就能很深入地了解它。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。