国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)器學(xué)習(xí)之KNN(K近鄰)算法

這篇具有很好參考價值的文章主要介紹了機(jī)器學(xué)習(xí)之KNN(K近鄰)算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 KNN算法介紹

KNN算法又叫做K近鄰算法,是眾多機(jī)器學(xué)習(xí)算法里面最基礎(chǔ)入門的算法。KNN算法是最簡單的分類算法之一,同時,它也是最常用的分類算法之一。KNN算法是有監(jiān)督學(xué)習(xí)中的分類算法,它看起來和Kmeans相似(Kmeans是無監(jiān)督學(xué)習(xí)算法),但卻是有本質(zhì)區(qū)別的。

KNN算法基于實例之間的相似性進(jìn)行分類或回歸預(yù)測。在KNN算法中,要解決的問題是將新的數(shù)據(jù)點分配給已知類別中的某一類。該算法的核心思想是通過比較距離來確定最近鄰的數(shù)據(jù)點,然后利用這些鄰居的類別信息來決定待分類數(shù)據(jù)點的類別。其核心思想為:“近朱者赤近墨者黑”

knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

1.1 KNN算法三要素

  • 距離度量算法:一般使用的是歐氏距離。也可以使用其他距離:曼哈頓距離、切比雪夫距離、閔可夫斯基距離等。
  • k值的確定:k值越小,模型整體變得越復(fù)雜,越容易過擬合。通常使用交叉驗證法來選取最優(yōu)k值
  • 分類決策:一般使用多數(shù)表決,即在 k 個臨近的訓(xùn)練點鐘的多數(shù)類決定輸入實例的類。可以證明,多數(shù)表決規(guī)則等價于經(jīng)驗風(fēng)險最小化

1.2 KNN是一種非參的,惰性的算法模型。

  • 非參:并不是說這個算法不需要參數(shù),而是意味著這個模型不會對數(shù)據(jù)做出任何的假設(shè),與之相對的是線性回歸總會假設(shè)線性回歸是一條直線。KNN建立的模型結(jié)構(gòu)是根據(jù)數(shù)據(jù)來決定的,這也比較符合現(xiàn)實的情況。
  • 惰性:同樣是分類算法,邏輯回歸需要先對數(shù)據(jù)進(jìn)行大量訓(xùn)練,最后會得到一個算法模型。而KNN算法卻不需要,它沒有明確的訓(xùn)練數(shù)據(jù)的過程,或者說這個過程很快。

1.3 KNN算法的優(yōu)缺點

(1)KNN算法具有以下優(yōu)點:

  • 簡單易懂:KNN算法的基本思想直觀簡單,易于理解和實現(xiàn)。

  • 無需訓(xùn)練過程:KNN算法是一種基于實例的學(xué)習(xí)方法,不需要顯式的訓(xùn)練過程。它直接利用已有的訓(xùn)練數(shù)據(jù)進(jìn)行分類或回歸預(yù)測。

  • 適用于多類別問題:KNN算法可以應(yīng)用于多類別問題,不受類別數(shù)目的限制。

  • 對于不平衡數(shù)據(jù)集有效:KNN算法在處理不平衡數(shù)據(jù)集時相對較為有效,因為它不假設(shè)數(shù)據(jù)分布的先驗知識。

(2)KNN算法的一些缺點:

  • 計算復(fù)雜度高:在進(jìn)行分類或回歸預(yù)測時,KNN算法需要計算待分類數(shù)據(jù)點與所有訓(xùn)練數(shù)據(jù)點之間的距離。當(dāng)訓(xùn)練數(shù)據(jù)集較大時,計算復(fù)雜度會顯著增加。

  • 對特征空間維度敏感:KNN算法對于特征空間的維度敏感。當(dāng)特征空間維度較高時,由于所謂的"維度災(zāi)難",KNN算法的性能可能會下降。在高維數(shù)據(jù)中,距離度量變得不準(zhǔn)確,所有數(shù)據(jù)點都變得離得很遠(yuǎn),失去了近鄰的意義。

  • 需要選擇合適的K值:KNN算法的性能很大程度上取決于選擇合適的最近鄰數(shù)量K。選擇過小的K值可能導(dǎo)致模型過于敏感,容易受到噪聲的影響;選擇過大的K值可能導(dǎo)致模型過于平滑,無法捕捉到細(xì)微的類別特征。

  • 不適用于大規(guī)模數(shù)據(jù)集:由于KNN算法需要在預(yù)測階段計算待分類數(shù)據(jù)點與所有訓(xùn)練數(shù)據(jù)點的距離,因此對于大規(guī)模數(shù)據(jù)集來說,存儲和計算的開銷可能會非常大。

KNN算法是一種簡單但強(qiáng)大的分類和回歸方法,適用于多種問題領(lǐng)域。但在使用時需要注意計算復(fù)雜度、維度敏感性、合適的K值選擇以及適應(yīng)大規(guī)模數(shù)據(jù)集的挑戰(zhàn)。

2 KNN算法的應(yīng)用場景

KNN算法的優(yōu)點包括簡單易懂、無需訓(xùn)練過程、適用于多類別問題等。KNN算法在許多領(lǐng)域中都有廣泛的應(yīng)用,KNN算法常見的應(yīng)用場景如下:

  • 分類問題:KNN算法可以用于分類問題,如文本分類、圖像分類、語音識別等。通過比較待分類數(shù)據(jù)點與已知數(shù)據(jù)點之間的相似性,KNN可以將新的數(shù)據(jù)點分配到最相似的類別中。

  • 回歸問題:KNN算法也可以用于回歸問題,如房價預(yù)測、股票價格預(yù)測等。通過計算最近鄰數(shù)據(jù)點的平均值或加權(quán)平均值,KNN可以預(yù)測待分類數(shù)據(jù)點的數(shù)值屬性。

  • 推薦系統(tǒng):KNN算法可以應(yīng)用于推薦系統(tǒng),根據(jù)用戶之間的相似性來推薦相似興趣的物品。通過比較用戶之間的行為模式或興趣偏好,KNN可以找到與當(dāng)前用戶最相似的一組用戶,并向其推薦相似的物品。

  • 異常檢測:KNN算法可以用于檢測異常數(shù)據(jù)點,如信用卡欺詐、網(wǎng)絡(luò)入侵等。通過計算數(shù)據(jù)點與其最近鄰之間的距離,KNN可以識別與大多數(shù)數(shù)據(jù)點不同的異常數(shù)據(jù)點。

  • 文本挖掘:KNN算法可以用于文本挖掘任務(wù),如文本分類、情感分析等。通過比較文本之間的相似性,KNN可以將新的文本數(shù)據(jù)點歸類到相應(yīng)的類別中。

  • 圖像處理:KNN算法可以應(yīng)用于圖像處理領(lǐng)域,如圖像識別、圖像檢索等。通過比較圖像之間的像素值或特征向量,KNN可以識別和檢索相似的圖像。

然而,該算法的缺點是計算復(fù)雜度高,特別是當(dāng)訓(xùn)練數(shù)據(jù)集較大時,需要計算大量的距離。此外,KNN算法對于特征空間的維度敏感,對于高維數(shù)據(jù)的處理可能會出現(xiàn)問題。

針對部分?jǐn)?shù)據(jù)(特征空間維度大,數(shù)據(jù)容量大)為了提高KNN算法的性能,可以使用特征選擇和降維技術(shù)來減少特征空間的維度,以及采用KD樹等數(shù)據(jù)結(jié)構(gòu)來加速最近鄰搜索過程。

KD Tree 是一種平衡二叉樹,目的是實現(xiàn)對 k 維空間的劃分。

knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

KDTree形似二叉搜索樹,其實KDTree就是二叉搜索樹的變種。這里的K = 3(維度).

KD樹的組織原則

將每一個元組按0排序(第一項序號為0,第二項序號為1,第三項序號為2),在樹的第n層,第 n%3 項被用粗體顯示,而這些被粗體顯示的樹就是作為二叉搜索樹的key值,比如,根節(jié)點的左子樹中的每一個節(jié)點的第一個項均小于根節(jié)點的的第一項,右子樹的節(jié)點中第一項均大于根節(jié)點的第一項,子樹依次類推。

對于這樣的一棵樹,對其進(jìn)行搜索節(jié)點會非常容易,給定一個元組,首先和根節(jié)點比較第一項,小于往左,大于往右,第二層比較第二項,依次類推。
?

KD樹檢索

假設(shè)我們的KDTree通過樣本集{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)}創(chuàng)建的。
我們來查找點(2.1,3.1),在(7,2)點測試到達(dá)(5,4),在(5,4)點測試到達(dá)(2,3),然后search_path中的結(jié)點為<(7,2), (5,4), (2,3)>,從search_path中取出(2,3)作為當(dāng)前最佳結(jié)點nearest, dist為0.141 (歐氏距離);
然后回溯至(5,4),以(2.1,3.1)為圓心,以dist=0.141為半徑畫一個圓,并不和超平面y=4相交,如下圖,所以不必跳到結(jié)點(5,4)的右子空間去搜索,因為右子空間中不可能有更近樣本點了。
于是在回溯至(7,2),同理,以(2.1,3.1)為圓心,以dist=0.141為半徑畫一個圓并不和超平面x=7相交,所以也不用跳到結(jié)點(7,2)的右子空間去搜索。
至此,search_path為空,結(jié)束整個搜索,返回nearest(2,3)作為(2.1,3.1)的最近鄰點,最近距離為0.141。
knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

再舉一個稍微復(fù)雜的例子,我們來查找點(2,4.5),在(7,2)處測試到達(dá)(5,4),在(5,4)處測試到達(dá)(4,7),然后search_path中的結(jié)點為<(7,2), (5,4), (4,7)>,從search_path中取出(4,7)作為當(dāng)前最佳結(jié)點nearest, dist為3.202;
然后回溯至(5,4),以(2,4.5)為圓心,以dist=3.202為半徑畫一個圓與超平面y=4相交,如下圖,所以需要跳到(5,4)的左子空間去搜索。所以要將(2,3)加入到search_path中,現(xiàn)在search_path中的結(jié)點為<(7,2), (2, 3)>;另外,(5,4)與(2,4.5)的距離為3.04 < dist = 3.202,所以將(5,4)賦給nearest,并且dist=3.04。
回溯至(2,3),(2,3)是葉子節(jié)點,直接平判斷(2,3)是否離(2,4.5)更近,計算得到距離為1.5,所以nearest更新為(2,3),dist更新為(1.5)
回溯至(7,2),同理,以(2,4.5)為圓心,以dist=1.5為半徑畫一個圓并不和超平面x=7相交, 所以不用跳到結(jié)點(7,2)的右子空間去搜索。
至此,search_path為空,結(jié)束整個搜索,返回nearest(2,3)作為(2,4.5)的最近鄰點,最近距離為1.5。

knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

?3 基于pytorch在MNIST數(shù)據(jù)集上實現(xiàn)數(shù)據(jù)分類

3.1 獲取MNIST數(shù)據(jù)集

(1)代碼自動下載

train_dataset = datasets.MNIST(root='data',  # 選擇數(shù)據(jù)的根目錄
                            train=True,  # 選擇訓(xùn)練集
                            transform=None,  # 不使用任何數(shù)據(jù)預(yù)處理
                            download=True)  # 從網(wǎng)絡(luò)上下載圖片

test_dataset = datasets.MNIST(root='data',  # 選擇數(shù)據(jù)的根目錄
                           train=False,  # 選擇測試集
                           transform=None,  # 不適用任何數(shù)據(jù)預(yù)處理
                           download=True)  # 從網(wǎng)絡(luò)上下載圖片

但這個自動下載可能會出錯,錯誤如下:

urllib.error.ContentTooShortError: <urlopen error retrieval incomplete: got only 5303709 out of 9912422 bytes>

?(2)手工下載數(shù)據(jù)集

下載地址:MNIST數(shù)據(jù)

下載完成后,放到data/MNIST/raw目錄下

圖片內(nèi)容展示:

digit = train_loader.dataset.data[0] 
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
print(train_loader.dataset.targets[0])

knn算法,經(jīng)典機(jī)器學(xué)習(xí)算法,算法,機(jī)器學(xué)習(xí),人工智能

3.2 KNN計算

以MNIST的60000張圖片作為訓(xùn)練集,通過KNN計算對測試數(shù)據(jù)集的10000張圖片全部打上標(biāo)簽。通過KNN算法比較測試圖片與訓(xùn)練集中每一張圖片,然后將它認(rèn)為最相似的那個訓(xùn)練集圖片的標(biāo)簽賦給這張測試圖片
具體應(yīng)該如何比較這兩張圖片呢?在本例中,比較圖片就是比較28×28的像素塊。最簡單的方法就是逐個像素進(jìn)行比較,最后將差異值全部加起來兩張圖片使用L1距離來進(jìn)行比較。逐個像素求差值,然后將所有差值加起來得到一個數(shù)值。如果兩張圖片一模一樣,那么L1距離為0,但是如果兩張圖片差別很大,那么,L1的值將會非常大。

def KNN_classify(k, dis_func, train_data, train_label, test_data):
    num_test = test_data.shape[0]  # 測試樣本的數(shù)量
    label_list = []
    for idx in range(num_test):
        distances = dis_func(train_data, test_data[idx])
        nearest_k = np.argsort(distances)
        top_k = nearest_k[:k]  # 選取前k個距離
        class_count = {}
        for j in top_k:
            class_count[train_label[j]] = class_count.get(train_label[j], 0) + 1
        sorted_class_count = sorted(class_count.items(), key=operator.itemgetter(1), reverse=True)
        label_list.append(sorted_class_count[0][0])

    return np.array(label_list)

3.3 完整代碼

#!/usr/bin/env python
# coding: utf-8


import operator
import matplotlib.pyplot as plt
import numpy as np
from torchvision import datasets, transforms
from torch.utils.data import DataLoader


batch_size = 100
train_dataset = datasets.MNIST(root='data',  # 選擇數(shù)據(jù)的根目錄
                            train=True,  # 選擇訓(xùn)練集
                            transform=None,  # 不使用任何數(shù)據(jù)預(yù)處理
                            download=True)  # 從網(wǎng)絡(luò)上下載圖片

test_dataset = datasets.MNIST(root='data',  # 選擇數(shù)據(jù)的根目錄
                           train=False,  # 選擇測試集
                           transform=None,  # 不適用任何數(shù)據(jù)預(yù)處理
                           download=True)  # 從網(wǎng)絡(luò)上下載圖片

train_loader = DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=True)

print("train_data:", train_dataset.data.size())
print("train_labels:", train_dataset.data.size())
print("test_data:", test_dataset.data.size())
print("test_labels:", test_dataset.data.size())


# digit = train_loader.dataset.data[0]  # 取第一個圖片的數(shù)據(jù)
# plt.imshow(digit, cmap=plt.cm.binary)
# plt.show()
# print(train_loader.dataset.targets[0])

# 歐式頓距離計算
def e_distance(dataset_a, data_b):
    return np.sqrt(np.sum(((dataset_a - np.tile(data_b, (dataset_a.shape[0], 1))) ** 2), axis=1))

# 曼哈頓距離計算
def m_distance(dataset_a, data_b):
    return np.sum(np.abs(train_data - np.tile(test_data[i], (train_data.shape[0], 1))), axis=1)


def KNN_classify(k, dis_func, train_data, train_label, test_data):
    num_test = test_data.shape[0]  # 測試樣本的數(shù)量
    label_list = []
    for idx in range(num_test):
        distances = dis_func(train_data, test_data[idx])
        nearest_k = np.argsort(distances)
        top_k = nearest_k[:k]  # 選取前k個距離
        class_count = {}
        for j in top_k:
            class_count[train_label[j]] = class_count.get(train_label[j], 0) + 1
        sorted_class_count = sorted(class_count.items(), key=operator.itemgetter(1), reverse=True)
        label_list.append(sorted_class_count[0][0])

    return np.array(label_list)


def get_mean(data):
    data = np.reshape(data, (data.shape[0], -1))
    mean_image = np.mean(data, axis=0)
    return mean_image


def centralized(data, mean_image):
    data = data.reshape((data.shape[0], -1))
    data = data.astype(np.float64)
    data -= mean_image  # 減去圖像均值,實現(xiàn)領(lǐng)均值化
    return data


if __name__ == '__main__':
    # 訓(xùn)練數(shù)據(jù)
    train_data = train_loader.dataset.data.numpy()
    train_data = train_data.reshape(train_data.shape[0], 28 * 28)
    
    # 歸一化處理
    mean_image = get_mean(train_data)  # 計算所有圖像均值
    train_data = centralized(train_data, mean_image)
    
    print('train_data shape:', train_data.shape)
    train_label = train_loader.dataset.targets.numpy()
    print('train_lable shape', train_label.shape)

    # 測試數(shù)據(jù)
    test_data = test_loader.dataset.data[:1000].numpy()
    test_data = centralized(test_data, mean_image)
    test_data = test_data.reshape(test_data.shape[0], 28 * 28)
    print('test_data shape', test_data.shape)
    test_label = test_loader.dataset.targets[:1000].numpy()
    print('test_label shape', test_label.shape)

    # 訓(xùn)練
    test_label_pred = KNN_classify(5, e_distance, train_data, train_label, test_data)

    # 得到訓(xùn)練準(zhǔn)確率
    num_test = test_data.shape[0]
    num_correct = np.sum(test_label == test_label_pred)
    print(num_correct)
    accuracy = float(num_correct) / num_test
    print('Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy))

3.4 計算結(jié)果展示

train_data: torch.Size([60000, 28, 28])
train_labels: torch.Size([60000, 28, 28])
test_data: torch.Size([10000, 28, 28])
test_labels: torch.Size([10000, 28, 28])
train_data shape: (60000, 784)
train_lable shape (60000,)
test_data shape (1000, 784)
test_label shape (1000,)
963
Got 963 / 1000 correct => accuracy: 0.963000

使用歐氏距離計算,最終結(jié)果準(zhǔn)確率達(dá)到了96.3%

4 完整工程及數(shù)據(jù)下載

下載地址:代碼和數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-718443.html

到了這里,關(guān)于機(jī)器學(xué)習(xí)之KNN(K近鄰)算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Python機(jī)器學(xué)習(xí)】實驗06 KNN最近鄰算法

    【Python機(jī)器學(xué)習(xí)】實驗06 KNN最近鄰算法

    1. k k k 近鄰法是基本且簡單的分類與回歸方法。 k k k 近鄰法的基本做法是:對給定的訓(xùn)練實例點和輸入實例點,首先確定輸入實例點的 k k k 個最近鄰訓(xùn)練實例點,然后利用這 k k k 個訓(xùn)練實例點的類的多數(shù)來預(yù)測輸入實例點的類。 2. k k k 近鄰模型對應(yīng)于基于訓(xùn)練數(shù)據(jù)集對

    2024年02月15日
    瀏覽(60)
  • 【機(jī)器學(xué)習(xí)】分類算法 - KNN算法(K-近鄰算法)KNeighborsClassifier

    「作者主頁」: 士別三日wyx 「作者簡介」: CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專欄」: 對網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專欄《網(wǎng)絡(luò)安全入門到精通》 is_array() 可以 「檢測」 變量是不是 「數(shù)組」 類型。 語法 參數(shù) $var :需要檢

    2024年02月16日
    瀏覽(27)
  • 【Python】機(jī)器學(xué)習(xí)-K-近鄰(KNN)算法【文末送書】

    【Python】機(jī)器學(xué)習(xí)-K-近鄰(KNN)算法【文末送書】

    ???????? 目錄 一 . K-近鄰算法(KNN)概述? 二、KNN算法實現(xiàn) 三、 MATLAB實現(xiàn) 四、 實戰(zhàn) ????????K-近鄰算法(KNN)是一種基本的分類算法,它通過計算數(shù)據(jù)點之間的距離來進(jìn)行分類。在KNN算法中,當(dāng)我們需要對一個未知數(shù)據(jù)點進(jìn)行分類時,它會與訓(xùn)練集中的各個數(shù)據(jù)點進(jìn)

    2024年02月08日
    瀏覽(22)
  • 用K近鄰(KNN)機(jī)器學(xué)習(xí)算法進(jìn)行股票走勢預(yù)測-Python

    用K近鄰(KNN)機(jī)器學(xué)習(xí)算法進(jìn)行股票走勢預(yù)測-Python

    K近鄰(KNN,K-Nearest Neighbors)是最簡單的機(jī)器學(xué)習(xí)算法之一,可用于回歸和分類。KNN是一種“惰性”學(xué)習(xí)算法,從技術(shù)上講,它不訓(xùn)練模型來進(jìn)行預(yù)測。K近鄰的邏輯是,假設(shè)有一個觀測值,這個觀測值被預(yù)測屬于離它k個最近觀測值中所占比例最大的那一個類。KNN方法是直接嘗試

    2024年02月04日
    瀏覽(24)
  • 2.機(jī)器學(xué)習(xí)-K最近鄰(k-Nearest Neighbor,KNN)分類算法原理講解

    2.機(jī)器學(xué)習(xí)-K最近鄰(k-Nearest Neighbor,KNN)分類算法原理講解

    ??????個人主頁:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實力新星認(rèn)證,CSDN內(nèi)容合伙人,阿里云社區(qū)專家博主,新星計劃導(dǎo)師,在職數(shù)據(jù)分析師。 ???? 免費學(xué)習(xí)專欄 : 1. 《Python基礎(chǔ)入門》——0基礎(chǔ)入門 2.《Python網(wǎng)絡(luò)爬蟲》——從入門到精通 3.《Web全棧開

    2024年01月23日
    瀏覽(27)
  • C語言經(jīng)典算法之k最近鄰(K-Nearest Neighbor, KNN)算法

    目錄 前言 A.建議 B.簡介 一 代碼實現(xiàn) 二 時空復(fù)雜度 A.時間復(fù)雜度: B.空間復(fù)雜度: C.總結(jié): 三 優(yōu)缺點 A.優(yōu)點: B.缺點: 四 現(xiàn)實中的應(yīng)用 1.學(xué)習(xí)算法最重要的是理解算法的每一步,而不是記住算法。 2.建議讀者學(xué)習(xí)算法的時候,自己手動一步一步地運行算法。 k最近鄰(K

    2024年04月13日
    瀏覽(15)
  • 機(jī)器學(xué)習(xí)與模式識別2:KNN(k近鄰)

    機(jī)器學(xué)習(xí)與模式識別2:KNN(k近鄰)

    首先,隨機(jī)選擇K個對象,而且所選擇的每個對象都代表一個組的初始均值或初始的組中心值,對剩余的每個對象,根據(jù)其與各個組初始均值的距離,將他們分配各最近的(最相似)小組,然后重新計算每個小組新的均值,這個過程不斷重復(fù),直到所有的對象在K組分布中都找

    2024年02月12日
    瀏覽(26)
  • 機(jī)器學(xué)習(xí) | Python實現(xiàn)KNN(K近鄰)模型實踐

    機(jī)器學(xué)習(xí) | Python實現(xiàn)KNN(K近鄰)模型實踐

    基本介紹 一句話就可以概括出KNN(K最近鄰算法)的算法原理:綜合k個“鄰居”的標(biāo)簽值作為新樣本的預(yù)測值。更具體來講KNN分類過程,給定一個訓(xùn)練數(shù)據(jù)集,對新的樣本Xu,在訓(xùn)練數(shù)據(jù)集中找到與該樣本距離最鄰近的K(下圖k=5)個樣本,以這K個樣本的最多數(shù)所屬類別(標(biāo)簽

    2024年02月13日
    瀏覽(22)
  • 機(jī)器學(xué)習(xí)之Python使用KNN算法對鳶尾花進(jìn)行分類

    機(jī)器學(xué)習(xí)之Python使用KNN算法對鳶尾花進(jìn)行分類

    要求: (1)數(shù)據(jù)集劃分為測試集占20%; (2)n_neighbors=5; (3)評價模型的準(zhǔn)確率; (4)使用模型預(yù)測未知種類的鳶尾花。 (待預(yù)測數(shù)據(jù):X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]]) iris數(shù)據(jù)集有150組,每組4個數(shù)據(jù)。 第一步:引入所需庫 第二步:劃分測試集占20% test_size為

    2024年02月08日
    瀏覽(29)
  • 四、分類算法 - KNN算法(K-近鄰算法)

    四、分類算法 - KNN算法(K-近鄰算法)

    目錄 1、K-近鄰算法 1.1 K-近鄰算法原理 1.2 K - 近鄰算法API 1.3 案例1:鳶尾花種類預(yù)測 1.3.1 數(shù)據(jù)集介紹 1.3.2 步驟 1.4 KNN 算法總結(jié) sklearn轉(zhuǎn)換器和估算器 KNN算法 模型選擇和調(diào)優(yōu) 樸素貝葉斯算法 決策樹 隨機(jī)森林 1.3.1 數(shù)據(jù)集介紹 1.3.2 步驟 獲取數(shù)據(jù) 數(shù)據(jù)集劃分 特征工程? ?- 標(biāo)準(zhǔn)

    2024年02月22日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包