KNN算法處理多元分類任務

概述

這個案例還是基于之前的案例進行改造。

之前的案例代碼完整如下:

from sklearn.datasets import make_blobs
# KNN 分類器
from sklearn.neighbors import KNeighborsClassifier
# 畫圖工具
import matplotlib.pyplot as plt
# 數據集拆分工具
from sklearn.model_selection import train_test_split
# 數據分析
import numpy as np# 生成樣本數為200,分類為2的數據集
data = make_blobs(n_samples=200, centers=2, random_state=8)
X, y = data# 創建knn分類器
clf = KNeighborsClassifier()
clf.fit(X, y)# 畫圖
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)# 繪制數據集
plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.spring, edgecolor='k')# 把新的數據點用五角星表示出來
plt.scatter(6.75, 4.82, marker="*", c="red", s=200)plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: KNN")plt.show()# 預測
print(clf.predict([[6.75, 4.82]]))

輸出結果如下:
在這里插入圖片描述

構造新的數據集

構造一個樣本數為500,分類數為5的數據集,然后使用散點圖進行可視化:

# 生成樣本數為500, 分類數為5的數據集
data2 = make_blobs(n_samples=500, centers=5, random_state=8)
X2, y2 = data2# 用散點圖將數據集進行可視化
plt.scatter(X2[:,0], X2[:,1], c=y2, cmap=plt.cm.spring, edgecolor='k')
plt.show()

效果預覽如下:
在這里插入圖片描述

此時的完整代碼如下:

from sklearn.datasets import make_blobs
# KNN 分類器
from sklearn.neighbors import KNeighborsClassifier
# 畫圖工具
import matplotlib.pyplot as plt
# 數據集拆分工具
from sklearn.model_selection import train_test_split
# 數據分析
import numpy as np# 生成樣本數為500, 分類數為5的數據集
data2 = make_blobs(n_samples=500, centers=5, random_state=8)
X2, y2 = data2# 用散點圖將數據集進行可視化
plt.scatter(X2[:,0], X2[:,1], c=y2, cmap=plt.cm.spring, edgecolor='k')
plt.show()

X2和y2分別是什么?

此時,X2依舊還是一個二維數組:
在這里插入圖片描述

y2是一個一維數組,記錄了每一行對應的分類是什么:
在這里插入圖片描述

使用KNN訓練模型

核心代碼:

# 訓練模型
clf  = KNeighborsClassifier()
clf.fit(X2, y2)# 畫圖
x_min, x_max = X2[:,0].min() - 1, X2[:,0].max() + 1
y_min, y_max = X2[:,1].min() - 1, X2[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1)
plt.scatter(X2[:,0], X2[:,1], c=y2, cmap=plt.cm.spring, edgecolor='k')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: KNN")
plt.show()

輸出結果:
在這里插入圖片描述

此時的完整代碼如下:

from sklearn.datasets import make_blobs
# KNN 分類器
from sklearn.neighbors import KNeighborsClassifier
# 畫圖工具
import matplotlib.pyplot as plt
# 數據集拆分工具
from sklearn.model_selection import train_test_split
# 數據分析
import numpy as np# 生成樣本數為500, 分類數為5的數據集
data2 = make_blobs(n_samples=500, centers=5, random_state=8)
X2, y2 = data2# 訓練模型
clf  = KNeighborsClassifier()
clf.fit(X2, y2)# 畫圖
x_min, x_max = X2[:,0].min() - 1, X2[:,0].max() + 1
y_min, y_max = X2[:,1].min() - 1, X2[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1)
plt.scatter(X2[:,0], X2[:,1], c=y2, cmap=plt.cm.spring, edgecolor='k')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: KNN")
plt.show()

查看模型評分

核心代碼:

clf.score(X2, y2)

輸出如下:
在這里插入圖片描述

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

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

相關文章

ur5 moveit配置過程

ros-noeticur5機械臂抓取仿真_ros機械臂視覺抓取仿真-CSDN博客

Java獲取請求參數

1.簡單參數接收 前端請求參數與Controller接受變量名一致 如果參數名不一致,接受不成功。 可以用RequestParam指定參數名,可以用username接收(不推薦)。 required true,表示參數必須傳遞,如果不傳遞會報錯…

std文件中寫入內容基礎

在C中,使用標準庫中的std::fstream類可以進行文件操作,包括文件的讀取和寫入。下面是一些常見的文件寫入模式及其介紹: 文件寫入模式 std::ofstream (Output File Stream) 專門用于文件寫入的流。默認模式下,如果文件不存在&…

連通民心,服務無界:政務熱線系統打造便捷政務新時代

一.引言 在21世紀的數字浪潮中,政府服務模式正經歷著前所未有的變革。隨著信息技術的飛速發展,民眾對于政務服務的期待已不再局限于傳統的面對面交流,而是更加傾向于高效、便捷、全天候的服務體驗。在此背景下,政務熱線系統應運而…

深入剖析Tomcat(八) 載入器與打破雙親委派機制的自定義類加載器

寫這篇文章讓我頭大了好幾天,書中描述的內容倒是不多,可能也是那會Tomcat的現狀。如今Tomcat發展了好多代,加上springboot的廣泛應用,導致現在的類加載的步驟和Tomcat資料中描述的大相徑庭。可能也是由于微服務的發展,…

環形數組介紹要點和難點具體應用實例和代碼解析

環形數組(或稱為循環數組、圓形數組)是一種邏輯結構,其中數組的末尾和開頭在邏輯上是相連的,從而形成一個環或圈。在實際的物理存儲中,環形數組通常是一個普通的線性數組,但在訪問和操作時采用特定的邏輯來處理邊界條件,使得元素可以從數組的末尾“循環”到開頭,或者從…

基于 Spring Boot 博客系統開發(十)

基于 Spring Boot 博客系統開發(十) 本系統是簡易的個人博客系統開發,為了更加熟練地掌握 SprIng Boot 框架及相關技術的使用。🌿🌿🌿 基于 Spring Boot 博客系統開發(九)&#x1f…

MySQL 開源到商業(四):MySQL 成了燙手山芋

前文提到,Monty 得知 Oracle 收購 Sun 的提案得到了美國政府的支持后,發動社區用戶向歐盟委員會請愿,希望通過反壟斷的名義讓 Oracle 知難而退,進而實現剝離 MySQL 的目的。而 Oracle 為了得到歐盟委員會的許可,迅速提…

Golang | Leetcode Golang題解之第91題解碼方法

題目&#xff1a; 題解&#xff1a; func numDecodings(s string) int {n : len(s)// a f[i-2], b f[i-1], c f[i]a, b, c : 0, 1, 0for i : 1; i < n; i {c 0if s[i-1] ! 0 {c b}if i > 1 && s[i-2] ! 0 && ((s[i-2]-0)*10(s[i-1]-0) < 26) {c…

Navicat 干貨 | 探索 PostgreSQL 中不同類型的約束

PostgreSQL 的一個重要特性之一是能夠對數據實施各種約束&#xff0c;以確保數據完整性和可靠性。今天的文章中&#xff0c;我們將概述 PostgreSQL 的各種約束類型并結合免費的 "dvdrental" 示例數據庫 中的例子探索他們的使用方法。 1. 檢查約束&#xff1a; 檢查…

顏色的表示和還原(一)

這篇文章主要提煉于ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision。里面深入淺出地講解了很多ISP中的基礎知識&#xff0c;這里主要對顏色相關的部分做一點總結。 假設不成立了 相機經常被簡單地看作是衡量光線…

STM32學習計劃

前言&#xff1a; 這里先記錄下STM32的學習計劃。 2024/05/08 今天我正在學習的是正點原子的I.MX6ULL APLHA/Mini 開發板的 Linux 之ARM裸機第二期開發的視頻教程&#xff0c;會用正點原子的I.MX6ULL開發板學習第二期ARM裸機開發的教程&#xff0c;然后是學習完正點原子的I.M…

Mybatis基礎操作-刪除

Mybatis基礎操作-刪除 刪除 package com.itheima.mapper;import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;Mapper //在運行時&#xff0c;會自動生成該接口的實現類對象&#xff08;代理對象&#xff09;&#xff0c;并且將該對象…

QT:QML與C++交互

目錄 一.介紹 二.pro文件添加模塊 三.h文件 四.cpp文件 五.注冊 六.調用 七.展示效果 八.代碼 1.qmlandc.h 2.qmlandc.cpp 3.main.cpp 4.qml 一.介紹 在 Qt 中&#xff0c;QML 與 C 交互是非常重要的&#xff0c;因為它允許開發人員充分利用 QML 和 C 各自的優勢&…

我21歲玩“擼貨”,被騙1000多萬

最近&#xff0c;擼貨業界內發生了一些頗受矚目的事件。 在鄭州&#xff0c;數碼檔口下面搶手團長跑路失聯&#xff0c;涉及金額幾百萬&#xff0c;在南京&#xff0c;一家知名的電商平臺下的收貨站點突然失聯&#xff0c;涉及金額高達一千多萬&#xff0c;令眾多交易者震驚不已…

用scp將文件夾從一個服務器備份到另一個服務器

用scp將文件夾從一個服務器備份到另一個服務器 問題描述解決辦法 問題描述 公式服務器要回收了&#xff0c;如何將數據備份到另一個服務器上。 解決辦法 代碼如下 scp -P 32660 -r /path/of/the/original/file username10.258.36.187:/path/of/the/target/filescp -P 目標…

YOLOv8改進 | 圖像修復 | 適用多種復雜場景的全能圖像修復網絡AirNet助力YOLOv8檢測(全網獨家首發)

一、本文介紹 本文給大家帶來的改進機制是一種適用多種復雜場景的全能圖像修復網絡AirNet&#xff0c;其由對比基降解編碼器&#xff08;CBDE&#xff09;和降解引導修復網絡&#xff08;DGRN&#xff09;兩個神經模塊組成&#xff0c;能夠在未知損壞類型和程度的情況下恢復受…

Java | Leetcode Java題解之第92題反轉鏈表II

題目&#xff1a; 題解&#xff1a; class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 設置 dummyNode 是這一類問題的一般做法ListNode dummyNode new ListNode(-1);dummyNode.next head;ListNode pre dummyNode;for (int i 0; …

【SQL】SQL常見面試題總結(3)

目錄 1、聚合函數1.1、SQL 類別高難度試卷得分的截斷平均值&#xff08;較難&#xff09;1.2、統計作答次數1.3、得分不小于平均分的最低分 2、分組查詢2.1、平均活躍天數和月活人數2.2、月總刷題數和日均刷題數2.3、未完成試卷數大于 1 的有效用戶&#xff08;較難&#xff09…

藍橋杯 EDA 組 歷屆國賽真題解析

一、2021年國賽真題 1.1 CN3767 太陽能充電電路 CN3767 是具有太陽能電池最大功率點跟蹤功能的 4A&#xff0c;12V 鉛酸電池充電管理集成電路。 最大功率點應指的是電池板的輸出電壓&#xff0c;跟蹤電壓其做保護。當然 CN3767 也可以直接使用直流充電&#xff0c;具體可以閱讀…