【Python】支持向量機SVM

示例代碼:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'KaiTi', 'SimSun']  # 使用系統自帶字體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題
# 1. 生成模擬數據
X, y = make_blobs(n_samples=100, centers=2,random_state=6, cluster_std=1.2)
print("這是X")
print(X)
print("這是y")
print(y)
# 2. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 創建SVM分類器(使用線性核)
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X_train, y_train)# 4. 預測測試集
y_pred = clf.predict(X_test)print(y_pred)
print(y_test)# 5. 評估模型性能
print(f"測試集準確率: {accuracy_score(y_test, y_pred):.2f}")
print("\n分類報告:")
print(classification_report(y_test, y_pred))# 6. 可視化結果
plt.figure(figsize=(10, 6))# 繪制訓練數據
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train,cmap='coolwarm', edgecolors='k', label='訓練數據')# 繪制測試數據
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test,cmap='coolwarm', marker='s', s=100,edgecolors='k', alpha=0.7, label='測試數據')# 繪制決策邊界
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()# 創建網格評估模型
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)# 繪制決策邊界和間隔
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1],alpha=0.5, linestyles=['--', '-', '--'])
ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1],s=100, linewidth=1, facecolors='none',edgecolors='k', label='支持向量')plt.title('SVM分類結果可視化')
plt.xlabel('特征1')
plt.ylabel('特征2')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()

可視化結果:

資料來源于:周志華-機器學習,如有侵權請聯系刪除

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

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

相關文章

當AI學會“抄近路”:殘差網絡如何突破深度學習的極限

**——解讀《Deep Residual Learning for Image Recognition》**今天我想帶大家回到2015年,見證人工智能領域的一場“捷徑革命”——由何愷明等人提出的**深度殘差學習框架(ResNet)**。這篇論文解決了困擾AI界多年的“深度詛咒”,…

HCIP--BGP綜合實驗

目錄 BGP綜合實驗報告 一、實驗拓撲 二、實驗要求 三、實驗思路 (一)IP地址規劃 (二)整體思路 四、實驗步驟 (一) IP地址配置 (二) AS2內部配置OSPF協議 (三&a…

Java 基礎編程案例:從輸入交互到邏輯處理

在Java編程學習中,輸入輸出、循環控制和邏輯判斷是核心基礎。本文整理了10個經典案例,涵蓋Scanner輸入處理、斐波那契數列、成績統計、登錄驗證等場景,幫助初學者掌握編程邏輯與實用技巧。 一、Scanner輸入交互:獲取用戶輸入并處理…

LeetCode 面試經典 150_數組/字符串_整數轉羅馬數字(18_12_C++_中等)(模擬)(對各位進行拆解)

LeetCode 面試經典 150_數組/字符串_整數轉羅馬數字(18_12_C_中等)題目描述:輸入輸出樣例:題解:解題思路:思路一(模擬):思路二(對各位進行拆解)&a…

計算機網絡摘星題庫800題筆記 第6章 應用層

第6章 應用層 6.1 網絡應用的架構 考點 1 CS 架構 題組闖關 1.DNS 是基于 ( ) 模式的分布式系統。 A. C/S B. B/S C. P2P D. 以上均不正確 1.【參考答案】A 【解析】本題考查網絡應用模型。 DNS 作為分布式應用,是一種典型的 C/S 模式,是隨著 Internet 技…

BLUCK電路的輸入電容應該怎么選取

借用TI的BULK芯片討論一下輸入電容怎么選取的問題,BULK電源是我們常用的電源,它的原理請看之前的文章: 高壓差為何不用LDO?DCDC效率更高!-CSDN博客 本文我們探討一下輸入電容,輸入電容是控制紋波的關鍵&a…

CAN仲裁機制的原理

我們來詳細講 CAN 仲裁機制 的原理和工作方式,這是 CAN 總線最核心的特性之一。 1?? 基本概念 CAN 總線是 多主機、多節點的串行總線,所有節點共享一根差分信號線(CAN_H / CAN_L)。 每個節點都可以隨時發送消息(多主機機制) 總線只能同時有一個節點成功發送 仲裁 用…

【GPT入門】第46課 vllm安裝、部署與使用

【GPT入門】第46課 vllm安裝、部署與使用 1.準備服務器 2. 安裝 conda環境,隔離base環境 3. vllm使用 3.1 在線推理, openai兼容服務器 3.2 模型離線調用 4. 沒有使用GPU問題分析 1.準備服務器 cuda 版本選12.1 vllm官網介紹: https://vllm.hyper.ai/docs/getting-started/…

【從網絡基礎到實戰】理解TCP/IP協議體系的核心要點(包含ARP協議等其他協議介紹)

前言: 學習計算機網絡不僅是軟件開發的基礎功,更是成為一名合格后端工程師、網絡工程師的重要門檻。本文將基于 TCP/IP 協議體系,系統梳理網絡層、數據鏈路層、以及相關協議的核心知識,并結合實際案例與代碼示例幫助理解。一、網絡…

Python 元類基礎:從理解到應用的深度解析

在 Python 的高級編程中,元類(metaclass) 無疑是最神秘又最強大的特性之一。它不僅是構建類的“工廠”,更是 Python 靈活對象模型的體現。本文將帶你從基礎概念入手,深入理解元類的本質、工作機制以及實際應用&#xf…

Nginx 配置代理服務器的詳細方法

一、什么是代理服務器? 類型說明正向代理客戶端通過代理訪問目標服務器(隱藏客戶端身份)反向代理客戶端訪問代理服務器,由代理服務器請求后端服務器(隱藏后端服務器) 二、Nginx 反向代理配置方法&#xff…

Lombok插件介紹及安裝(Eclipse)

一、Lombok 的用途 Lombok是一個 Java 庫,通過注解的方式簡化 Java 代碼的編寫。它能夠自動生成常見的代碼,如getter、setter、toString、equals、hashCode等方法,從而減少樣板代碼,使代碼更加簡潔、易讀。 Lombok 通過添加**Dat…

硬核操作!Go 語言生成 “會爬墻的清潔機器人”,玻璃外墻自己擦

本文聚焦于利用 Go 語言開發 “會爬墻的清潔機器人” 這一硬核技術,圍繞該機器人如何實現玻璃外墻自主清潔展開。首先介紹開發背景與需求,接著闡述 Go 語言在其中的優勢,詳細講解機器人的核心技術,包括吸附系統、運動控制、清潔機…

Qt——實現”Hello World“、認識對象樹與Qt坐標系

在創建項目時,使用的基類Base Class為QWidget 1. 使用圖形化界面的方式實現“Hello World” 雙擊文件:widget.ui,進入designer模式:在“控件盒子”的“Display Widgets”中找到“Label”,并拖放到白板中雙擊剛剛拖放到…

智能合約開發全流程實戰指南

目錄 靈感探索與概念驗證合約開發常見問題 Hardhat 初始化項目問題合約編譯錯誤處理智能合約設計缺陷 合約測試最佳實踐 單元測試環境配置測試用例編寫技巧測試覆蓋率和策略常見測試失敗原因 合約部署實戰指南 部署到不同網絡部署前準備事項部署后驗證方法部署費用和Gas優化 合…

IPA1299至為芯替代TI ADS1299的腦機接口芯片

在腦機接口、神經科學研究和醫療電子設備領域,腦電信號采集芯片是連接生物電信號與數字世界的重要組件。目前,TI等國際廠商憑借技術優勢占據市場主要份額,國內廠商在成本控制、供貨周期和技術自主性方面面臨挑戰。英集芯推出的IPA1299低噪聲多…

「數據獲取」《中國海洋生態環境狀況公報》(2001-2023年)(獲取方式看綁定的資源)

01、數據簡介在 2023 年的海洋環境監測工作中,監測范圍廣泛且細致。全年對 1359 個海洋環境質量國家控制點位進行了水質監測,這些點位分布在我國管轄的各大海域,能夠全面反映海洋整體水質狀況;對 230 個入海河流國家控制斷面開展監…

通過限制網絡訪問來降低服務器被攻擊風險的方法

限制網絡訪問是降低服務器被攻擊風險的核心思路之一,因為絕大多數入侵都是從開放的網絡入口開始的。思路是“減少暴露面 精確授權”,讓服務器只對必要的人、必要的業務開放。我給你分成幾個層次來說明,從最外層網絡入口到最內層系統配置都涉…

python與JavaScript的區別

Python 與 JavaScript 的主要區別(按常用維度劃分)維度PythonJavaScript誕生時間 / 背景1991 年,由 Guido van Rossum 設計,目標是“一種易讀、易寫的通用腳本語言”。1995 年,由 Brendan Eich 為 Netscape 瀏覽器誕生…

Java 比較器解析

一、比較器的核心作用與應用場景在 Java 編程中&#xff0c;數據比較是一個基礎但重要的操作。對于基本數據類型&#xff08;如 int、double、boolean、char 等&#xff09;&#xff0c;Java 語言本身就提供了完整的比較運算符&#xff08;>、<、、>、<、!&#xf…