機器學(xué)習(xí)實戰(zhàn)之knn算法pandas
機器學(xué)習(xí)實戰(zhàn)之knn算法pandas,供大家參考,具體內(nèi)容如下
開始學(xué)習(xí)機器學(xué)習(xí)實戰(zhàn)這本書,打算看完了再回頭看 周志華的 機器學(xué)習(xí)。機器學(xué)習(xí)實戰(zhàn)的代碼都是用numpy寫的,有些麻煩,所以考慮用pandas來實現(xiàn)代碼,也能回顧之前學(xué)的 用python進行數(shù)據(jù)分析。感覺目前章節(jié)的測試方法太渣,留著以后學(xué)了更多再回頭寫。
# coding: gbk import pandas as pd import numpy as np def getdata(path): data = pd.read_csv(path, header=None, sep='\t') character = data.iloc[:, :-1] label = data.iloc[:, -1] chara_max = character.max() chara_min = character.min() chara_range = chara_max - chara_min normal_chara = (character - chara_min) / chara_range return normal_chara, label # 獲得歸一化特征值和標(biāo)記 def knn(inX, normal_chara, label, k): data_sub = normal_chara - inX data_square = data_sub.applymap(np.square) data_sum = data_square.sum(axis=1) data_sqrt = data_sum.map(np.sqrt) dis_sort = data_sqrt.argsort() k_label = label[dis_sort[:k]] label_sort = k_label.value_counts() res_label = label_sort.index[0] return res_label # knn算法分類
小編為大家分享一段代碼:機器學(xué)習(xí)--KNN基本實現(xiàn)
# _*_ coding _*_
import numpy as np
import math
import operator
def get_data(dataset):
x = dataset[:,:-1].astype(np.float)
y = dataset[:,-1]
return x,y
# def cal_dis(a,b):
# x1,y1 = a[:]
# x2,y2 = b[:]
# dist = math.sqrt(math.pow(2,x2)-math.pow(2,x1))
def knnclassifer(dataset,predict,k=3):
x,y = get_data(dataset)
dic = {}
distince = np.sum((predict-x)**2,axis=1)**0.5
sorted_dict = np.argsort(distince)#[2 1 0 3 4]
countLabel = {}
for i in range(k):
label = y[sorted_dict[i]]
# print(i,sorted_dict[i],label)
countLabel[label] = countLabel.get(label,0)+1
new_dic = sorted(countLabel,key=operator.itemgetter(0),reverse=True)
return new_dic[0][0]
if __name__ == '__main__':
dataset = np.loadtxt("dataset.txt",dtype=np.str,delimiter=",")
predict = [2,2]
label = knnclassifer(dataset,predict,3)
print(label)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python 基于空間相似度的K-means軌跡聚類的實現(xiàn)
這篇文章主要介紹了python 基于空間相似度的K-means軌跡聚類的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
解決django跨域的問題小結(jié)(Hbuilder X)
使用Django開發(fā)時,可能會遇到跨域問題,尤其是當(dāng)后端與HbuilderX開發(fā)的前端結(jié)合使用時,解決此問題的關(guān)鍵步驟包括安裝django-cors-headers庫,并在Django的settings.py中進行相應(yīng)配置,本文給大家介紹解決django跨域的問題小結(jié),感興趣的朋友一起看看吧2024-10-10
Python namedtuple命名元組實現(xiàn)過程解析
這篇文章主要介紹了Python namedtuple命名元組實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實現(xiàn)方法,實例分析了Python根據(jù)pymongo不同版本操作ObjectId的技巧,需要的朋友可以參考下2015-05-05
python 列出面板數(shù)據(jù)所有變量名的示例代碼
在Python中,處理面板數(shù)據(jù)(Panel Data)通常使用pandas庫,特別是當(dāng)數(shù)據(jù)以DataFrame或Panel,這篇文章主要介紹了python 列出面板數(shù)據(jù)所有變量名,需要的朋友可以參考下2024-06-06
Python協(xié)程asyncio模塊的演變及高級用法
網(wǎng)上很多關(guān)于Python協(xié)程asyncio模塊的教程都是基于老版Python的, 本文將以對比方式展示新老Python版本下協(xié)程的寫法有什么不同并總結(jié)了asyncio的一些高級用法, 包括如何獲取協(xié)程任務(wù)執(zhí)行結(jié)果,gather和wait方法的區(qū)別以及如何給任務(wù)添加回調(diào)函數(shù)。2021-05-05
python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系詳解
image.open和cv2.imread都是Python中用于讀取圖像文件的函數(shù),但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系,需要的朋友可以參考下2024-07-07

