機器學習基本概念(附代碼)

這里的“機器”指的是計算機軟硬件組織,而非傳統的機械裝置;而“學習”,則是指軟件通過訓練過程,其性能得以提升的過程。

一、算法與模型的關系

在機器學習領域,算法和模型是兩個核心概念。算法是一種偏抽象的概念,它定義了計算機解決問題的步驟和流程。而模型則是更加具體的概念,通過代碼實現特定算法來完成任務。數學上,一個簡單的模型可以表示為 y=f(x),其中 x 是樣本特征,y 是樣本標簽,模型的目標就是將輸入特征 x 映射到輸出標簽 y。

二、機器學習算法分類

機器學習可以根據樣本是否包含標簽分為兩大類:有監督學習和無監督學習。

2.1 有監督學習(Supervised Learning)

在有監督學習中,樣本不僅包含特征 X,還包含對應的標簽 y。基于預測目標的不同,可以進一步細分為分類和回歸問題。

  • 分類算法:用于預測離散量。

    • 邏輯回歸:雖然名字中有“回歸”,但它實際上是一種分類方法,常用于二分類問題。
    • KNN回歸:K近鄰算法不僅可以用于分類,還可以用于回歸任務。
    • 樸素貝葉斯:基于貝葉斯定理并假設特征之間相互獨立的一種簡單快速的分類方法。
    • 決策樹:通過構建樹狀模型來進行決策的算法,易于理解和實現。
    • 支持向量機(SVM):尋找能夠最大化類別間間隔的超平面來分類數據點。
    • 集成學習:如隨機森林、梯度提升等方法,通過組合多個弱學習器來提高預測性能。
  • 回歸算法:用于預測連續量。

    • 線性回歸:試圖找到自變量與因變量之間的線性關系。
    • KNN回歸:與KNN分類類似,但輸出是連續值。
    • 決策樹回歸:使用決策樹結構進行回歸分析。
    • 支持向量機回歸(SVR):SVM的一個變種,適用于回歸任務。
    • 集成學習:同樣適用于回歸任務,如隨機森林回歸等。

2.2 無監督學習(Unsupervised Learning)

在無監督學習中,我們只有特征 X,沒有標簽 y。這類學習主要用于探索數據內部結構或模式。

  • 聚類算法

    • KMeans:一種常用的聚類技術,它試圖將數據劃分成K個簇,使得每個簇內的點盡可能相似。

三、機器學習項目流程

在這里插入圖片描述

  • Step1: 項目分析

    首先明確項目的外部特性,包括輸入和輸出是什么,并確定這是一個分類還是回歸問題。例如,在鳶尾花識別項目中,輸入是一朵花的特征(如花萼長度、寬度等),輸出是該花所屬的子品種。

  • Step2: 數據采集
    數據采集是構建數據集的過程,基于輸入和輸出的需求進行。本質上是數理統計問題,采集總體的一個樣本集,通過樣本集的統計量來估計總體的統計量,

    人工智能項目的本質,通過對樣本的分析,來評估/估計 總體的情況

    數據采集之后的結果是結構化數據:成行成列,確保每行代表一個樣本,各行之間保持獨立同分布,每列代表一個特征,各個特征之間是獨立的,每一個列也代表一個變量,變量分為離散型變量連續型變量

    離散型變量:有限個狀態,不同的狀態值,狀態之間無大小、程度等概念,狀態之間是嚴格對立的!!!,比如男或者女,高或者矮,天晴或者下雨,

    連續型變量:無限個數值,數值之間是大小、程度的差異,內涵是一致的,長度,深度等程度問題,比如長度10.5米。

    怎么理解獨立同分布?
    這包含2個意思,獨立性同分布
    獨立性指的是樣本之間沒有直接的關系或影響。具體來說,如果兩個樣本X1和X2是獨立的,那么知道X1的信息不會給你關于X2的任何額外信息。換句話說,每個樣本點的生成過程不受其他樣本點的影響。
    同分布意味著所有樣本都來自于同一個概率分布。這意味著每一個樣本都有相同的分布函數,包括均值、方差等統計特性都是相同的。如果一個樣本集是同分布的,那么無論你選擇哪一個樣本,它都應該具有相似的概率分布特征。

  • Step3: 數據預處理
    包括數據清洗(去除重復值、缺失值、異常值、無效特征)、數據切分(訓練集、驗證集、測試集)以及數據預處理(中心化、歸一化、標準化)等步驟。

    訓練集:訓練過程中,用來訓練模型(模型的學習數據)

    驗證集:在訓練過程中,用來驗證模型的效果(不參與學習過程)

    測試集:訓練完成后,用來評估模型的效果(不參與學習過程)

    在實際工作中,經常把驗證集和測試集合并,一起使用

  • Step4: 模型選擇
    根據問題是分類還是回歸來選擇合適的模型,主要是根據標簽來判斷是分類還是回歸。例如,對于分類問題可以選擇邏輯回歸KNN樸素貝葉斯支持向量機決策樹集成學習等;對于回歸問題,則可能選擇線性回歸KNN支持向量機決策樹集成學習等。

  • Step5: 訓練模型
    使用訓練集的數據對模型進行訓練,即讓模型學習如何將輸入特征映射到輸出標簽。把訓練集的特征 X_train 和標簽 y_train 給模型 fit 方法,進行訓練,

    本質:模型學習的過程!學習如何把 X 映射為 y

  • Step6: 評估模型
    評估模型的效果,分類問題可以通過準確率accuracy召回率recall精準率precisionF1-score等指標;回歸問題則常使用MAE:平均絕對誤差MSE:平均平方誤差等指標。

  • Step7: 保存和部署模型
    最后,保存訓練好的模型以便后續加載和部署應用。

四、示例:鳶尾花識別項目

  1. 項目分析
    項目需求:鳶尾花有3個子品種,想通過機器學習算法來做分類預測!進一步思考:
- 任務:給定一朵花,讓模型識別到底是哪個子品種!
- 輸入:一朵花- 一朵花是不能直接輸入計算機中- 特征工程:- 數字化轉型- 抽取/構建跟這朵花的類別有關系的特征來代表這朵花!!!- 跟業務專家詳細咨詢:- 花萼長度 x1- 花萼寬度 x2- 花瓣長度 x3- 花瓣寬度 x4
- 輸出:子品種:- 分類問題:- 對狀態進行編碼:- N個狀態:- 0, ..., N-1- 3個類別:- 0- 1- 2

目標是對鳶尾花的3個子品種進行分類預測。輸入為花朵的四個特征(花萼長度、寬度,花瓣長度、寬度),輸出為目標子品種編碼。

  1. 加載數據
    使用sklearn.datasets.load_iris()加載鳶尾花數據集,并檢查其基本信息。
from sklearn.datasets import load_iris
result = load_iris()
dir(result)
print(result.DESCR)
X, y = load_iris(return_X_y=True)
# X.shape
# (150, 4)
# y.shape
# (150,)
['DESCR','data','data_module','feature_names','filename','frame','target','target_names']

在這里插入圖片描述

  1. 切分數據
    利用train_test_split函數按比例分割數據集。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
  1. 套用模型
    采用K近鄰算法作為模型,并對其進行訓練。
from sklearn.neighbors import KNeighborsClassifier
# 實例化對象
knn = KNeighborsClassifier()
# 訓練模型
knn.fit(X=X_train, y=y_train)
# 模型預測
y_pred = knn.predict(X=X_test)
# 預測結果
y_pred
# 真實結果
y_test
  1. 模型評估
    計算預測結果的準確性。
acc = (y_pred == y_test).mean()
# 0.9666666666666667
  1. 模型的保存和加載
    使用joblib庫保存和加載模型。
import joblib
# 模型的保存
joblib.dump(value=knn, filename="knn.model")
# 模型的加載
model = joblib.load(filename="knn.model")

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

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

相關文章

前端開發知識梳理 - HTMLCSS

1. 盒模型 由內容區(content)、內邊距(padding)、邊框(border)和外邊距(margin)組成。 (1)標準盒模型(box-sizing默認值, content-box&#xff…

.NET周刊【1月第4期 2025-01-26】

國內文章 低成本高可用方案!Linux系統下SQL Server數據庫鏡像配置全流程詳解 https://www.cnblogs.com/lyhabc/p/18660810/linux-sql-server-database-mirroring-configuration-guide 本文詳細介紹了如何在Linux系統下配置SQL Server數據庫鏡像,以實現…

Nutz Dao與Spring集成

一、集成方式 1、采用Spring的IOC,但是事務還是采用Nutz自己管理控制; 2、采用Spring的聲明式事務管理控制; 二、IOC 直接依據數據源注入即可 Beanpublic NutDao nutz(DataSource dataSource) {return new NutDao (dataSource);;} 此時N…

利用 Python 爬蟲獲取按關鍵字搜索淘寶商品的完整指南

在電商數據分析和市場研究中,獲取商品的詳細信息是至關重要的一步。淘寶作為中國最大的電商平臺之一,提供了豐富的商品數據。通過 Python 爬蟲技術,我們可以高效地獲取按關鍵字搜索的淘寶商品信息。本文將詳細介紹如何利用 Python 爬蟲技術獲…

白嫖RTX 4090?Stable Diffusion:如何給線稿人物快速上色?

大家都知道,在設計的初期,我們通常會先繪制草圖,然后再進行上色處理,最終才開始進行最終的設計工作。在這個上色的過程中,配色是至關重要的一環。這不僅方便了內部同事的評審,也讓產品方和客戶可以直觀地了…

libdrm移植到arm設備

一、環境資源要求 下載libdrm Index of /libdrm 這邊使用的是2.4.114版本,版本太高對meson版本要求也很高,為了省事用apt安裝meson就不用太高版本了,1.x版本雖然使用makefile編譯方便但是太老,對應用支持不太好。 https://dri…

C# 比較兩個List集合內容是否相同

在 C# 中&#xff0c;要比較兩個 List<T> 集合的內容是否相同&#xff0c;可以通過以下幾種方法&#xff1a; 一、非自定義類的元素比較 1. 使用 SequenceEqual 方法&#xff08;順序和內容都相等&#xff09; 順序和內容都相等&#xff1a;使用 SequenceEqual。 usin…

Win10環境使用ChatBox集成Deep Seek解鎖更多玩法

Win10環境使用ChatBox集成Deep Seek解鎖更多玩法 前言 之前部署了14b的Deep Seek小模型&#xff0c;已經驗證了命令行及接口方式的可行性。但是純命令行或者PostMan方式調用接口顯然不是那么友好&#xff1a; https://lizhiyong.blog.csdn.net/article/details/145505686 純…

力扣 239.滑動窗口最大值

思路 滑動窗口 遍歷 解題思路 基本思路&#xff1a;使用滑動窗口法遍歷數組&#xff0c;動態維護當前窗口的最大值。 特殊情況&#xff1a;該方法有一個缺陷&#xff0c;如果出窗口的元素是當前窗口的最大值max時&#xff0c;接下來的窗口中的最大值就無法確定了&#xff0c;所…

【Pandas】pandas Series sum

Pandas2.2 Series Computations descriptive stats 方法描述Series.abs()用于計算 Series 中每個元素的絕對值Series.all()用于檢查 Series 中的所有元素是否都為 True 或非零值&#xff08;對于數值型數據&#xff09;Series.any()用于檢查 Series 中是否至少有一個元素為 T…

kafka服務端之日志磁盤存儲

文章目錄 頁緩存順序寫零拷貝 Kafka依賴于文件系統&#xff08;更底層地來說就是磁盤&#xff09;來存儲和緩存消息 。 那么kafka是如何讓自身在使用磁盤存儲的情況下達到高性能的&#xff1f;接下來主要從3各方面詳細解說。 頁緩存 頁緩存是操作系統實現的一種主要的磁盤緩存…

ES6 Map 數據結構是用總結

1. Map 基本概念 Map 是 ES6 提供的新的數據結構&#xff0c;它類似于對象&#xff0c;但是"鍵"的范圍不限于字符串&#xff0c;各種類型的值&#xff08;包括對象&#xff09;都可以當作鍵。Map 也可以跟蹤鍵值對的原始插入順序。 1.1 基本用法 // 創建一個空Map…

計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas)

計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目錄 計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模塊3. 軟注意力與硬注意力4. 實驗…

韶音科技:消費電子行業售后服務實現數字化轉型,重塑客戶服務體系

韶音科技&#xff1a;消費電子行業售后服務實現數字化轉型&#xff0c;重塑客戶服務體系 在當今這個科技日新月異的時代&#xff0c;企業之間的競爭早已超越了單純的產品質量比拼&#xff0c;**售后服務成為了衡量消費電子行業各品牌實力與客戶滿意度的關鍵一環。**深圳市韶音…

機器學習之Transformer 模型

Transformer 模型詳解 Transformer 是由 Vaswani et al. 在 2017 年 提出的模型,最初用于 機器翻譯 任務,并迅速成為自然語言處理(NLP)領域的標準模型架構。與傳統的 RNN(循環神經網絡) 和 LSTM(長短期記憶網絡) 不同,Transformer 的核心思想是 完全基于自注意力機制…

使用 CloudDM 和釘釘流程化管理數據庫變更審批

CloudDM 是一個專為團隊協同工作打造的數據庫數據管控平臺。在管控數據庫安全變更的過程中&#xff0c;為提高效率&#xff0c;CloudDM 接入了釘釘&#xff0c;支持實時通知與移動辦公&#xff0c;滿足廣大企業用戶的實際需求。 本文將介紹如何使用 CloudDM 和釘釘實現高效的數…

【RabbitMQ的重試配置retry】重試配置不生效原因

在Spring Boot項目中&#xff0c;RabbitMQ的retry重試配置不生效可能由以下原因導致&#xff1a; 核心問題定位 retry:enabled: true # ? 配置已開啟max-attempts: 3 # ? 參數有效但實際未觸發重試&#xff0c;可能原因如下&#xff1a; 1. 容器類型不匹配 癥狀表現 配置…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是將DeepSeek功能集成到WPS中的詳細步驟&#xff0c;無需本地部署模型&#xff0c;直接通過官網連接使用&#xff1a;1. 下載并安裝OfficeAI插件 &#xff08;1&#xff09;訪問OfficeAI插件下載地址&#xff1a;OfficeAI助手 - 免費辦公智能AI助手, AI寫作&#xff0c;下載…

程序詩篇里的靈動筆觸:指針繪就數據的夢幻藍圖<7>

大家好啊&#xff0c;我是小象?(?ω?)? 我的博客&#xff1a;Xiao Xiangζ????? 很高興見到大家&#xff0c;希望能夠和大家一起交流學習&#xff0c;共同進步。 今天我們一起來學習轉移表&#xff0c;回調函數&#xff0c;qsort… 目錄 一、轉移表1.1 定義與原理1.3…

使用Jenkins實現鴻蒙HAR應用的自動化構建打包

使用Jenkins實現鴻蒙HAR應用的自動化構建打包 在軟件開發領域&#xff0c;自動化構建是提高開發效率和確保代碼質量的重要手段。特別是在鴻蒙&#xff08;OpenHarmony&#xff09;應用開發中&#xff0c;自動化構建更是不可或缺。本文將詳細介紹如何使用Jenkins命令行工具實現…