機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之knn算法pandas
機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之knn算法pandas,供大家參考,具體內(nèi)容如下
開(kāi)始學(xué)習(xí)機(jī)器學(xué)習(xí)實(shí)戰(zhàn)這本書(shū),打算看完了再回頭看 周志華的 機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)實(shí)戰(zhàn)的代碼都是用numpy寫的,有些麻煩,所以考慮用pandas來(lái)實(shí)現(xiàn)代碼,也能回顧之前學(xué)的 用python進(jìn)行數(shù)據(jù)分析。感覺(jué)目前章節(jié)的測(cè)試方法太渣,留著以后學(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算法分類
小編為大家分享一段代碼:機(jī)器學(xué)習(xí)--KNN基本實(shí)現(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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python實(shí)戰(zhàn)基礎(chǔ)之Pandas統(tǒng)計(jì)某個(gè)數(shù)據(jù)列的空值個(gè)數(shù)
- Pandas如何對(duì)Categorical類型字段數(shù)據(jù)統(tǒng)計(jì)實(shí)戰(zhàn)案例
- Pandas如何將表格的前幾行生成html實(shí)戰(zhàn)案例
- 五個(gè)Pandas?實(shí)戰(zhàn)案例帶你分析操作數(shù)據(jù)
- Python實(shí)戰(zhàn)之利用Geopandas算出每個(gè)省面積
- pandas去除重復(fù)值的實(shí)戰(zhàn)
- pandas實(shí)戰(zhàn):分析三國(guó)志人物示例實(shí)現(xiàn)
相關(guān)文章
python 基于空間相似度的K-means軌跡聚類的實(shí)現(xiàn)
這篇文章主要介紹了python 基于空間相似度的K-means軌跡聚類的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
解決django跨域的問(wèn)題小結(jié)(Hbuilder X)
使用Django開(kāi)發(fā)時(shí),可能會(huì)遇到跨域問(wèn)題,尤其是當(dāng)后端與HbuilderX開(kāi)發(fā)的前端結(jié)合使用時(shí),解決此問(wèn)題的關(guān)鍵步驟包括安裝django-cors-headers庫(kù),并在Django的settings.py中進(jìn)行相應(yīng)配置,本文給大家介紹解決django跨域的問(wèn)題小結(jié),感興趣的朋友一起看看吧2024-10-10
Python namedtuple命名元組實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python namedtuple命名元組實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了python操作mongodb根據(jù)_id查詢數(shù)據(jù)的實(shí)現(xiàn)方法,實(shí)例分析了Python根據(jù)pymongo不同版本操作ObjectId的技巧,需要的朋友可以參考下2015-05-05
python 列出面板數(shù)據(jù)所有變量名的示例代碼
在Python中,處理面板數(shù)據(jù)(Panel Data)通常使用pandas庫(kù),特別是當(dāng)數(shù)據(jù)以DataFrame或Panel,這篇文章主要介紹了python 列出面板數(shù)據(jù)所有變量名,需要的朋友可以參考下2024-06-06
Python協(xié)程asyncio模塊的演變及高級(jí)用法
網(wǎng)上很多關(guān)于Python協(xié)程asyncio模塊的教程都是基于老版Python的, 本文將以對(duì)比方式展示新老Python版本下協(xié)程的寫法有什么不同并總結(jié)了asyncio的一些高級(jí)用法, 包括如何獲取協(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

