機器學習 從kNN開始

2021-08-01 04:07:15 字數 1266 閱讀 9244

import numpy as np

import operator

def createdataset():

#資料集

group = np.array([[1.0,1.1],

[1.0,1.0],

[0,0],

[0,0.1]])

#標籤labels = ['a','a','b','b']

return group, labels

def classify0(inx, dataset, labels, k):

#資料集的行數,即資料量

datasetsize = dataset.shape[0]

#np.tile(a,b):重複a資料b次,eg:np.tile([1,0],3),輸出array([1, 0, 1, 0, 1, 0])

diffmat = np.tile(inx, (datasetsize, 1)) - dataset

sqdiffmat = diffmat ** 2

#.sum(axis):axis =1 是按行相加,axis = 0是按列相加

sqdistances = sqdiffmat.sum(axis=1)

distances = sqdistances ** 0.5

#返回distance從小到大的索引值

sorteddistindicies = distances.argsort()

classcount = {}

for i in range(k):

voteilabel = labels[sorteddistindicies[i]]

#各種型別的個數

classcount[voteilabel] = classcount.get(voteilabel,0) + 1

print(classcount)

#dic.items():以列表返回元組陣列

#降序排列(按照第二個元素的次序排列,即按型別的數量排序),返回排序的列表

sortedclasscount = sorted(classcount.items(),key=operator.itemgetter(1),reverse = true)

print(sortedclasscount)

return sortedclasscount[0][0]

group,labels = createdataset()

print(classify0([0,0.2],group,labels,2))

從 開始機器學習

寫在前面 感覺自己學習的東西挺雜,好多都是浮於表面,沒有深度,總是會有一種不踏實的感覺,決心從這一次做起,認認真真的研究乙個方向 這是相當於第二次安裝ubuntu pyhton virtualenv tensorfloe opendv了,還記得第一次安裝的時候,總是有點小害怕,不過害怕歸害怕,錯誤是...

從0開始的機器學習 knn演算法篇(2)

scikit learn中的knn演算法 from sklearn.neighbors import kneighborsclassfier kneighborsclassifier裡面包含了封裝好的knn演算法 sklearn裡面的所有演算法都是以物件導向的形式封裝的,所以使用時候需要先建立乙個物...

從0開始的機器學習 knn演算法篇(1)

在慕課網學習的基本內容做學習總結。knn的演算法過程 設定x train是乙個資料集,裡面有一組資料。x train是其中的乙個資料點。import numpy as np from math import sqrt 呼叫了math庫中的開平方 distances 存放兩點之間的距離 for x t...