日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python機器學(xué)習(xí)之底層實現(xiàn)KNN

瀏覽:110日期:2022-06-16 11:07:57
一、導(dǎo)入數(shù)據(jù)

借助python自帶的pandas庫導(dǎo)入數(shù)據(jù),很簡單。用的數(shù)據(jù)是下載到本地的紅酒集。

代碼如下(示例):

import pandas as pddef read_xlsx(csv_path): data = pd.read_csv(csv_path) print(data) return data二、歸一化

KNN算法中將用到距離,因此歸一化是一個重要步驟,可以消除數(shù)據(jù)的量綱。我用了歸一化,消除量綱也可以用標準化,但是作為新手,我覺得歸一化比較簡單。

其中最大最小值的計算用到了python中的numpy庫,pandas導(dǎo)入的數(shù)據(jù)是DateFrame形式的,np.array()用來將DateFrame形式轉(zhuǎn)化為可以用numpy計算的ndarray形式。

代碼如下(示例):

import numpy as npdef MinMaxScaler(data): col = data.shape[1] for i in range(0, col-1):arr = data.iloc[:, i]arr = np.array(arr) #將DataFrame形式轉(zhuǎn)化為ndarray形式,方便后續(xù)用numpy計算min = np.min(arr)max = np.max(arr)arr = (arr-min)/(max-min)data.iloc[:, i] = arr return data三、分訓(xùn)練集和測試集

先將數(shù)據(jù)值和標簽值分別用x和y劃分開,設(shè)置隨機數(shù)種子random_state,若不設(shè)置,則每次運行的結(jié)果會不相同。test_size表示測試集比例。

def train_test_split(data, test_size=0.2, random_state=None): col = data.shape[1] x = data.iloc[:, 0:col-1] y = data.iloc[:, -1] x = np.array(x) y = np.array(y) # 設(shè)置隨機種子,當隨機種子非空時,將鎖定隨機數(shù) if random_state:np.random.seed(random_state)# 將樣本集的索引值進行隨機打亂# permutation隨機生成0-len(data)隨機序列 shuffle_indexs = np.random.permutation(len(x)) # 提取位于樣本集中20%的那個索引值 test_size = int(len(x) * test_size) # 將隨機打亂的20%的索引值賦值給測試索引 test_indexs = shuffle_indexs[:test_size] # 將隨機打亂的80%的索引值賦值給訓(xùn)練索引 train_indexs = shuffle_indexs[test_size:] # 根據(jù)索引提取訓(xùn)練集和測試集 x_train = x[train_indexs] y_train = y[train_indexs] x_test = x[test_indexs] y_test = y[test_indexs] # 將切分好的數(shù)據(jù)集返回出去 # print(y_train) return x_train, x_test, y_train, y_test四、計算距離

此處用到歐氏距離,pow()函數(shù)用來計算冪次方。length指屬性值數(shù)量,在計算最近鄰時用到。

def CountDistance(train,test,length): distance = 0 for x in range(length):distance += pow(test[x] - train[x], 2)**0.5 return distance五、選擇最近鄰

計算測試集中的一條數(shù)據(jù)和訓(xùn)練集中的每一條數(shù)據(jù)的距離,選擇距離最近的k個,以少數(shù)服從多數(shù)原則得出標簽值。其中argsort返回的是數(shù)值從小到大的索引值,為了找到對應(yīng)的標簽值。

tip:用numpy計算眾數(shù)的方法

import numpy as np#bincount():統(tǒng)計非負整數(shù)的個數(shù),不能統(tǒng)計浮點數(shù)counts = np.bincount(nums)#返回眾數(shù)np.argmax(counts)

少數(shù)服從多數(shù)原則,計算眾數(shù),返回標簽值。

def getNeighbor(x_train,test,y_train,k): distance = [] #測試集的維度 length = x_train.shape[1] #測試集合所有訓(xùn)練集的距離 for x in range(x_train.shape[0]):dist = CountDistance(test, x_train[x], length)distance.append(dist) distance = np.array(distance) #排序 distanceSort = distance.argsort() # distance.sort(key= operator.itemgetter(1)) # print(len(distance)) # print(distanceSort[0]) neighbors =[] for x in range(k):labels = y_train[distanceSort[x]]neighbors.append(labels)# print(labels) counts = np.bincount(neighbors) label = np.argmax(counts) # print(label) return label

調(diào)用函數(shù)時:

getNeighbor(x_train,x_test[0],y_train,3)六、計算準確率

用以上KNN算法預(yù)測測試集中每一條數(shù)據(jù)的標簽值,存入result數(shù)組,將預(yù)測結(jié)果與真實值比較,計算預(yù)測正確的個數(shù)與總體個數(shù)的比值,即為準確率。

def getAccuracy(x_test,x_train,y_train,y_test): result = [] k = 3 # arr_label = getNeighbor(x_train, x_test[0], y_train, k) for x in range(len(x_test)):arr_label = getNeighbor(x_train, x_test[x], y_train, k)result.append(arr_label) correct = 0 for x in range(len(y_test)):if result[x] == y_test[x]: correct += 1 # print(correct) accuracy = (correct / float(len(y_test))) * 100.0 print('Accuracy:', accuracy, '%') return accuracy總結(jié)

KNN算是機器學(xué)習(xí)中最簡單的算法,實現(xiàn)起來相對簡單,但對于我這樣的新手,還是花費了大半天時間才整出來。

在github上傳了項目:https://github.com/chenyi369/KNN

到此這篇關(guān)于Python機器學(xué)習(xí)之底層實現(xiàn)KNN的文章就介紹到這了,更多相關(guān)Python底層實現(xiàn)KNN內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本亚洲最大的色成网站www| 亚洲一区久久| 一区二区电影| 亚洲人成在线影院| 国产毛片久久久| 日韩av在线播放网址| 成人精品亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品自拍| 久久麻豆视频| 激情综合自拍| 亚洲欧美日本国产| 免费亚洲一区| 国产精品av一区二区| 人人爽香蕉精品| 国产探花在线精品一区二区| 精品国内亚洲2022精品成人| 久久男人av资源站| 亚洲大全视频| 日本少妇一区二区| 成人精品视频| 国产精品毛片在线| 欧美久久一区二区三区| 蜜臀国产一区| 日韩在线观看一区二区| 国产欧美一区二区三区精品观看| 日韩电影免费在线观看| 亚洲精品三级| 97精品在线| 亚洲午夜久久| 波多野结衣久久精品| 亚洲精品乱码| 九九99久久精品在免费线bt| 久久中文字幕av一区二区不卡| 亚洲有吗中文字幕| 中文字幕色婷婷在线视频| 免费在线视频一区| a国产在线视频| 日韩一区二区三免费高清在线观看 | 亚洲视频电影在线| 欧美91在线|欧美| 免费精品视频| 色偷偷色偷偷色偷偷在线视频| 国产一区白浆| 久久久久久夜| 久久精品97| 久久国产精品毛片| 在线亚洲人成| 久久爱www.| 亚洲久久一区| 亚洲免费黄色| 日韩精品免费一区二区在线观看| 欧美日韩一区二区三区四区在线观看 | 日韩精品一二三四| 日韩欧美另类一区二区| 日韩国产在线观看| 91精品1区| 黑人精品一区| 精品国产中文字幕第一页| 日本不卡视频在线观看| 9色精品在线| 91精品国产调教在线观看| 精品久久免费| 国产精品v一区二区三区| 日韩成人精品一区二区三区 | 日韩视频1区| 91九色精品| 色在线视频观看| 国产精品网站在线看| 四虎精品一区二区免费| 欧美色图国产精品| 国语精品一区| 精品免费av| 精品亚洲精品| 精品国产鲁一鲁****| 国产另类在线| 日本国产亚洲| 亚洲精品国模| 欧美在线影院| 亚洲国产专区校园欧美| 欧美日韩免费观看视频| 欧美好骚综合网| 精品高清久久| 国产精品久久久久蜜臀| 超碰99在线| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 9999国产精品| 高清久久一区| 国内精品麻豆美女在线播放视频| 国产精品a级| 美女久久久久久 | 国产手机视频一区二区| 91成人网在线观看| 国产精品毛片在线| 视频一区国产视频| 亚洲精品少妇| 日韩激情啪啪| 国产精品欧美日韩一区| 国产精品hd| 国产自产自拍视频在线观看| 欧美香蕉视频| 在线日韩电影| 夜夜嗨一区二区三区| 一区二区国产精品| 国产欧美三级| 日韩av有码| 三级精品视频| 丝袜国产日韩另类美女| 亚洲精品日本| 欧美黑人做爰爽爽爽| 新版的欧美在线视频| 九一成人免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩中文字幕在线一区| 国产精品成人3p一区二区三区| 国产精品久久久一区二区| 国产精品福利在线观看播放| 在线日韩欧美| 亚洲精品进入| 国产一区二区三区日韩精品 | 91精品国产自产观看在线| 91精品国产一区二区在线观看| 麻豆久久一区| 久久精品国产99久久| 日韩专区欧美专区| 国产精品美女午夜爽爽| 欧美成人基地 | 精品欠久久久中文字幕加勒比| 91麻豆国产自产在线观看亚洲| 美女亚洲一区| 日本aⅴ亚洲精品中文乱码| 精品中国亚洲| 成人av动漫在线观看| 91麻豆精品激情在线观看最新| 久久精品国产99| 亚洲激情不卡| 久久不卡日韩美女| 尤物精品在线| 麻豆中文一区二区| 老鸭窝毛片一区二区三区| 久久亚州av| 蜜桃一区二区三区在线观看| 精品视频在线观看网站| 国产亚洲精品v| 久久三级中文| 亚洲欧美日韩精品一区二区 | 欧美网站在线| 欧美黄页在线免费观看| 国产免费成人| 高清一区二区| 日韩在线观看一区二区三区| 色偷偷偷在线视频播放| 日韩精品国产精品| 美女毛片一区二区三区四区| 欧美国产精品| 视频一区视频二区中文| 福利在线一区| 涩涩涩久久久成人精品| 久久久久久久久丰满| 国产精品777777在线播放 | 亚洲第一精品影视| 国产日产高清欧美一区二区三区 | 香蕉成人av| 国产三级一区| 久久亚洲二区| 久久在线免费| 精品国产一区二| 亚洲开心激情| 99热精品在线| 日韩精品欧美| 水蜜桃久久夜色精品一区| 欧美综合社区国产| 国产精品美女久久久浪潮软件| 97se综合| 精品三级在线| 国产精品嫩模av在线| 中文字幕日本一区| 国产农村妇女精品一区二区| 日韩中文影院| 欧美好骚综合网| 久久精品国产在热久久| 国产麻豆一区| 亚洲综合婷婷| 免费久久99精品国产| 国产精品99一区二区| 日韩欧美精品综合| 91一区二区三区四区| 精品福利久久久| 国产精品地址| 日本少妇一区二区| 亚洲精品日本| 亚洲精品大全| 亚洲精品在线a| 亚洲欧洲美洲国产香蕉| 老司机精品久久| 男女精品网站| 老牛影视一区二区三区| 黄色亚洲大片免费在线观看| 美女网站一区| 亚洲一区二区免费看|