機器學習 --- KNN算法

機器學習 — KNN算法


文章目錄

  • 機器學習 --- KNN算法
  • 一,sklearn機器學習概述
  • 二,KNN算法---分類
    • 2.1樣本距離判斷
    • 2.2 KNN算法原理
    • 2.3 KNN缺點
    • 2.4 API
    • 2.5 使用sklearn中鳶尾花數據集實現KNN


一,sklearn機器學習概述

獲取數據、數據處理、特征工程后,就可以交給預估器進行機器學習,流程和常用API如下。

1.實例化預估器(估計器)對象(estimator), 預估器對象很多,都是estimator的子類(1)用于分類的預估器sklearn.neighbors.KNeighborsClassifier k-近鄰sklearn.naive_bayes.MultinomialNB 貝葉斯sklearn.linear_model.LogisticRegressioon 邏輯回歸sklearn.tree.DecisionTreeClassifier 決策樹sklearn.ensemble.RandomForestClassifier 隨機森林(2)用于回歸的預估器sklearn.linear_model.LinearRegression線性回歸sklearn.linear_model.Ridge嶺回歸(3)用于無監督學習的預估器sklearn.cluster.KMeans 聚類
2.進行訓練,訓練結束后生成模型estimator.fit(x_train, y_train)
3.模型評估(1)方式1,直接對比y_predict = estimator.predict(x_test)y_test == y_predict(2)方式2, 計算準確率accuracy = estimator.score(x_test, y_test)
4.使用模型(預測)
y_predict = estimator.predict(x_true)

二,KNN算法—分類

2.1樣本距離判斷

  • 歐氏距離
    在這里插入圖片描述
  • 曼哈頓距離
    在這里插入圖片描述

2.2 KNN算法原理

K-近鄰算法(K-Nearest Neighbors,簡稱KNN),根據K個鄰居樣本的類別來判斷當前樣本的類別;

如果一個樣本在特征空間中的k個最相似(最鄰近)樣本中的大多數屬于某個類別,則該類本也屬于這個類別

比如: 有10000個樣本,選出7個到樣本A的距離最近的,然后這7個樣本中假設:類別1有2個,類別2有3個,類別3有2個.那么就認為A樣本屬于類別2,因為它的7個鄰居中 類別2最多(近朱者赤近墨者黑)

2.3 KNN缺點

? 對于大規模數據集,計算量大,因為需要計算測試樣本與所有訓練樣本的距離。

? 對于高維數據,距離度量可能變得不那么有意義,這就是所謂的“維度災難”

? 需要選擇合適的k值和距離度量,這可能需要一些實驗和調整

2.4 API

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm='auto')
參數:                                             
(1)n_neighbors: int, default=5, 默認情況下用于kneighbors查詢的近鄰數,就是K
(2)algorithm:{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’。找到近鄰的方式,注意不是計算距離		的方式,與機器學習算法沒有什么關系,開發中請使用默認值'auto'
方法:(1) fit(x, y) 使用X作為訓練數據和y作為目標數據  (2) predict(X)	預測提供的數據,得到預測數據 

2.5 使用sklearn中鳶尾花數據集實現KNN

# 引入數據集
from sklearn.datasets import load_iris
# 引入KNN算法
from sklearn.neighbors import KNeighborsClassifier
# 引入標準化工具
from sklearn.preprocessing import StandardScaler
#引入數據集劃分
from sklearn.model_selection import train_test_split
#引入joblib
import joblib#訓練函數
def train():#加載數據iris = load_iris()#加載鳶尾花數據集X = iris.data#鳶尾花特征數據y = iris.target#鳶尾花標簽數據#數據集劃分X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=22)#數據標準化transfer = StandardScaler()X_train = transfer.fit_transform(X_train)#創建knn模型model = KNeighborsClassifier(n_neighbors=5)#使用訓練集訓練模型model.fit(X_train,y_train)#測試集的預測結果X_test = transfer.transform(X_test)score = model.score(X_test,y_test)print("準確率:",score)#保存模型if score  > 0.9:joblib.dump(model,"./model/knn.pkl")joblib.dump(transfer,"./model/transfer.pkl")else:print("模型效果不佳,重新訓練")# 推理函數
# 新數據預測
def detect():#加載數據model = joblib.load("./model/knn.pkl")transfer = joblib.load("./model/transfer.pkl")#新數據推理x_new = [[1,2,3,4]]x_new = transfer.transform(x_new)y_pred = model.predict(x_new)print("預測結果:",y_pred)if __name__ == '__main__':train()detect()
準確率: 0.9333333333333333
預測結果: [1]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905696.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905696.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 中的重試機制

Retryable 注解簡介 Retryable 注解是 Spring Retry 模塊提供的,用于自動重試可能會失敗的方法。在微服務架構和分布式系統中,服務之間的調用可能會因為網絡問題、服務繁忙等原因失敗。使用 Retryable 可以提高應用的穩定性和容錯能力 1。 使用步驟 &…

FPGA生成隨機數的方法

FPGA生成隨機數的方法,目前有以下幾種: 1、震蕩采樣法 實現方式一:通過低頻時鐘作為D觸發器的時鐘輸入端,高頻時鐘作為D觸發器的數據輸入端,使用高頻采樣低頻,利用亞穩態輸出隨機數。 實現方式二:使用三個…

(五)毛子整潔架構(分布式日志/Redis緩存/OutBox Pattern)

文章目錄 項目地址一、結構化日志1.1 使用Serilog1. 安裝所需要的包2. 注冊服務和配置3. 安裝Seq服務 1.2 添加分布式id中間件1. 添加中間件2. 注冊服務3. 修改Application的LoggingBehavior 二、Redis緩存2.1 添加緩存1. 創建接口ICaching接口2. 實現ICaching接口3. 注冊Cachi…

Vue.js 全局導航守衛:深度解析與應用

在 Vue.js 開發中,導航守衛是一項極為重要的功能,它為開發者提供了對路由導航過程進行控制的能力。其中,全局導航守衛更是在整個應用的路由切換過程中發揮著關鍵作用。本文將深入探討全局導航守衛的分類、作用以及參數等方面內容。 一、全局…

使用FastAPI和React以及MongoDB構建全棧Web應用05 FastAPI快速入門

一、FastAPI概述 1.1 什么是FastAPI FastAPI is a modern, high-performance Python web framework designed for building APIs. It’s rapidly gaining popularity due to its ease of use, speed, and powerful features. Built on top of Starlette, FastAPI leverages a…

如何查看打開的 git bash 窗口是否是管理員權限打開

在 git bash 中輸入: net session >nul 2>&1 && (echo Ok) || (echo Failed) 顯示 OK 》是管理員權限; 顯示 Failed 》不是管理員權限。 如何刪除此步生成的垃圾文件: 新建一個 .txt 文件,輸入以下代碼…

得物0509面試手撕題目解答

題目 使用兩個棧(一個無序棧和一個空棧)將無序棧中的元素轉移到空棧,使其有序,不允許使用其他數據結構。 示例:輸入:[3, 1, 6, 4, 2, 5],輸出:[6, 5, 4, 3, 2, 1] 思路與代碼 如…

基于 Nexus 在 Dockerfile 配置 yum, conda, pip 倉庫的方法和參考

在 Nexus 配置代理倉庫的方法,可參考 pypi 的配置博客:https://hellogitlab.com/CI/docker/create_your_nexus_2 更多代理格式,參考官方文檔,如 pypi:https://help.sonatype.com/en/pypi-repositories.html 配置 yum…

[6-8] 編碼器接口測速 江協科技學習筆記(7個知識點)

1 2 在STM32微控制器的定時器模塊中,CNT通常指的是定時器的計數器值。以下是CNT是什么以及它的用途: 是什么: ? CNT:代表定時器的當前計數值。在STM32中,定時器從0開始計數,直到達到預設的自動重裝載值&am…

RabbitMQ ③-Spring使用RabbitMQ

Spring使用RabbitMQ 創建 Spring 項目后&#xff0c;引入依賴&#xff1a; <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency><groupId>org.springframework.boot</groupId><artifac…

海外IP被誤封解決方案

這里使用Google Cloud和Cloudflare來實現&#xff0c;解決海外服務器被誤封IP&#xff0c;訪問不到的問題。 這段腳本的核心目的&#xff0c;是自動監測你在 Cloudflare 上管理的 VPS 域名是否可達&#xff0c;一旦發現域名無法 Ping 通&#xff0c;就會幫你更換IP&#xff1a…

一個基于 Spring Boot 的實現,用于代理百度 AI 的 OCR 接口

一個基于 Spring Boot 的實現&#xff0c;用于代理百度 AI 的 OCR 接口 BaiduAIController.javaBaiduAIConfig.java在 application.yml 或 application.properties 中添加配置&#xff1a;application.yml同時&#xff0c;需要在Spring Boot應用中配置RestTemplate&#xff1a;…

GPT-4o 遇強敵?英偉達 Eagle 2.5 視覺 AI 王者登場

前言&#xff1a; 在人工智能領域&#xff0c;視覺語言模型的競爭愈發激烈。GPT-4o 一直是該領域的佼佼者&#xff0c;但英偉達的 Eagle 2.5 橫空出世&#xff0c;憑借其 80 億參數的精簡架構&#xff0c;在長上下文多模態任務中表現出色&#xff0c;尤其是在視頻和高分辨率圖像…

將語言融入醫學視覺識別與推理:一項綜述|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Integrating language into medical visual recognition and reasoning: A survey 將語言融入醫學視覺識別與推理&#xff1a;一項綜述 01 文獻速遞介紹 檢測以及語義分割&#xff09;是無數定量疾病評估和治療規劃的基石&#xff08;利特延斯等人&#xff0c…

Ubuntu24.04版本解決RK3568編譯器 libmpfr.so.4: cannot open shared object

問題描述 在Ubuntu24.04版本上編譯RK3568應用程序關于libmpfr.so.4: cannot open shared object問題&#xff0c;如下所示&#xff1a; /tools/ToolsChain/rockchip/rockchip_rk3568/host/bin/../libexec/gcc/aarch64-buildroot-linux-gnu/9.3.0/cc1plus: error while loadin…

產線視覺檢測設備技術方案:基于EFISH-SCB-RK3588/SAIL-RK3588的國產化替代賽揚N100/N150全場景技術解析

一、核心硬件選型與替代優勢? ?1. 算力與AI加速能力? ?異構八核架構?&#xff1a;采用4Cortex-A76&#xff08;2.4GHz&#xff09;4Cortex-A55&#xff08;1.8GHz&#xff09;設計&#xff0c;支持視覺算法并行處理&#xff08;如模板匹配、缺陷分類&#xff09; 相機采…

python如何合并excel單元格

在Python中合并Excel單元格&#xff0c;常用openpyxl庫實現。以下是詳細步驟和示例代碼&#xff1a; 方法一&#xff1a;使用 openpyxl 庫 步驟說明&#xff1a; 安裝庫&#xff1a; pip install openpyxl導入庫并加載文件&#xff1a; from openpyxl import load_workbook# …

高考備考1-集合

高考數學知識點總結—快手視頻講解 高考數學集合—快手視頻講解

Rust 數據結構:Vector

Rust 數據結構&#xff1a;Vector Rust 數據結構&#xff1a;Vector創建數組更新數組插入元素刪除元素 獲取數組中的元素迭代數組中的值使用枚舉存儲多個類型刪除一個數組會刪除它的元素 Rust 數據結構&#xff1a;Vector vector 來自標準庫&#xff0c;在內存中連續存儲相同類…

深度學習入門:深度學習(完結)

目錄 1、加深網絡1.1 向更深的網絡出發1.2 進一步提高識別精度1.3 加深層的動機 2、深度學習的小歷史2.1 ImageNet2.2 VGG2.3 GoogleNet2.4 ResNet 3、深度學習的高速化3.1 需要努力解決的問題3.2 基于GPU的高速化3.3 分布式學習3.4 運算精度的位數縮減 4、深度學習的應用案例4…