Python數據分析之機器學習基礎

Python 數據分析重點知識點

本系列不同其他的知識點講解,力求通過例子讓新同學學習用法,幫助老同學快速回憶知識點

可視化系列:

  1. Python基礎
  2. 數據分析工具
  3. 數據處理與分析
  4. 數據可視化
  5. 機器學習基礎
五、機器學習基礎
  • 了解機器學習概念、分類及常見算法
    • 監督學習:使用標注數據,訓練模型預測輸出,如分類、回歸任務。以下應用都是監督學習
    • 無監督學習:處理未標注數據,尋找數據模式,如聚類、降維等。
  • 模型評估與選擇
    • 掌握模型評估指標,使用交叉驗證選最優模型。
  • 實踐應用
    • 用 scikit-learn 等庫構建簡單機器學習模型解決實際問題。

應用1

# 使用KNN對鳶尾花數據集進行分類
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split#導入鳶尾花數據集并查看數據特征iris=datasets.load_iris()print('數據集結構:',iris.data.shape)# 獲取屬性
iris_x=iris.data
print(iris_x) #對應萼片長度、萼片寬度、花瓣長度和花瓣寬度
# 獲取類別
iris_y=iris.target 
print(iris_y) #相應的類型,山鳶尾(Setosa),雜色鳶尾(Versicolor)和維吉尼亞鳶尾(Virginica)
# 劃分成測試集合訓練集
iris_train_x,iris_test_x,iris_train_y,iris_test_y=train_test_split(iris_x,iris_y,test_size=0.2,random_state=0)
#分類器初始化
knn=KNeighborsClassifier()
# 對數據集進行訓練
knn.fit(iris_train_x,iris_train_y)
# 對測試集數據的鳶尾花類型進行預測
predict_result=knn.predict(iris_test_x)
print('測試集大小:',iris_test_x.shape)
print('真實結果:',iris_test_y)
print('預測結果:',predict_result)
#顯示預測精確率
print('預測精確率:',knn.score(iris_test_x,iris_test_y))

在這里插入圖片描述
應用2

# 使用KNN方法來實現手寫數字識別
# coding=utf-8
import numpy as np
from os import listdirdef loadDataSet():# 獲取訓練數據集print("1.Loading trainSet...")trainFileList=listdir("source/HWdigits/trainSet")trainNum=len(trainFileList)trainX=np.zeros((trainNum,32*32))trainY=[]for i in range(trainNum):trainFile=trainFileList[i]# 將訓練數據集向量化trainX[i,:]=img2vector('source/HWdigits/trainSet/%s'% trainFile,32,32)label=int(trainFile.split('_')[0]) # 讀取文件名的第一位作為標記trainY.append(label)#獲取測試數據集print("2.Loading testSet...")testFileList=listdir("source/HWdigits/testSet")testNum=len(testFileList)testX=np.zeros((testNum,32*32))testY=[]for i in range(testNum):testFile=testFileList[i]# 將測試數據集向量化testX[i,:]=img2vector('source/HWdigits/testSet/%s'% testFile,32,32)label=int(testFile.split('_')[0]) # 讀取文件名的第一位作為標記testY.append(label)return trainX,trainY,testX,testY
def img2vector(filename,h,w):imgVector=np.zeros((1,h*w))fileIn=open(filename)for row in range(h):lineStr=fileIn.readline()for col in range(w):imgVector[0,row*32+col]=int(lineStr[col])return imgVector
def myKNN(testDigit,trainX,trainY,k):numSamples=trainX.shape[0]   # shape[0] 代表行,每一行一個圖片,得到樣本個數#計算歐式距離diff=[]for n in range(numSamples):diff.append(testDigit-trainX[n])  # 每個個體差diff=np.array(diff)             # 轉變為ndarray# 對差求平方和,然后取和的平方根squaredDiff=diff ** 2squaredDist=np.sum(squaredDiff,axis=1)distance=squaredDist**0.5# 2.按距離進行排序sortedDistIndices=np.argsort(distance)classCount={}        # 存放各類的個體數量for i in range(k):#3.按順序讀取標簽voteLabel=trainY[sortedDistIndices[i]]#4.計算該標簽次數classCount[voteLabel]=classCount.get(voteLabel,0)+1# 5.查找出現次數最多的類別,作為分類結果maxCount=0for key,value in classCount.items():if value>maxCount:maxCount=valuemaxIndex=keyreturn maxIndextrain_x,train_y,test_x,test_y=loadDataSet()
numTestSamples=test_x.shape[0]
matchCount=0
print("3.Find the most frequent label int k-nearest...")
print("4.show the result...")
for i in range(numTestSamples):predict=myKNN(test_x[i],train_x,train_y,3)print("result is: %d, real answer is: %d"%(predict,test_y[i]))if predict == test_y[i]:matchCount+=1
accuracy=float(matchCount)/numTestSamples
# 5.輸出結果
print("5. Show the accuracy...")
print("   The total number of errors is: %d"%(numTestSamples-matchCount))
print("   The classsify accuracy is: %.2f%%"%(accuracy*100))

數據集鏈接

應用3

# 使用支持向量機SVM算法對隨機數進行訓練分類
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt#隨機生成兩組數據,并通過(-2,2)距離調整為明顯的0/1兩類
data = np.concatenate((np.random.randn(30, 2) - [-2, 2], np.random.randn(30, 2) + [-2, 2]))
target=[0]*30+[1]*30#建立SVC模型
clf=svm.SVC(kernel='linear')
clf.fit(data,target)#顯示結果
w=clf.coef_[0]
a=-w[0]/w[1]
print('參數 w:',w)
print("參數 a:",a)
print("支持向量機:",clf.support_vectors_)
print("參數 coef_",clf.coef_)#使用結果參數生成分類線
xx=np.linspace(-5,5)
yy=a*xx-(clf.intercept_[0]/w[1])#繪制穿過正支持向量的虛線
b=clf.support_vectors_[0]
yy_Neg=a*xx+(b[1]-a*b[0])
#繪制穿過負支持向量的虛線
b=clf.support_vectors_[-1]
yy_Pos=a*xx+(b[1]-a*b[0])#繪制黑色實線
plt.plot(xx,yy,'r-')
#黑色虛線
plt.plot(xx,yy_Neg,'k--')
plt.plot(xx,yy_Pos,'k--')#繪制樣本散點圖
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1])
plt.scatter(data[:,0],data[:,1],c=target,cmap=plt.cm.coolwarm)plt.xlabel("x")
plt.ylabel("y")
plt.title("Support Vector Classification")
plt.show()

在這里插入圖片描述

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

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

相關文章

我與DeepSeek讀《大型網站技術架構》(10)- 維基百科的高性能架構設計分析

目錄 網站整體架構核心組件請求處理流程圖關鍵環節說明 性能優化策略前端優化:攔截 80% 以上請求服務端優化:高性能 PHP 集群后端優化:存儲與緩存極致設計Memcached 持久化連接 性能優化策略對比表 網站整體架構 核心組件 Wikipedia 的架構…

Excel多級聯動下拉菜單設置

1.問題描述 現有數據表如下圖所示: 該表中包括省、市、縣三級目錄。 現要將其整理成數據表模板,如下圖所示: 要求制作成下拉菜單的形式,且每一級目錄的下拉菜單列表要根據上一級目錄的內容來確定。 如上圖所示,只有…

智駕技術全鏈條解析

智駕技術全鏈條解析(2025年最新版) 智駕技術涵蓋從環境感知到車輛控制的完整閉環,涉及硬件、算法、數據與系統集成等多個領域。以下結合行業最新進展(截至2025年3月)進行深度拆解: 一、感知技術&#xff1…

SpringMVC執行的流程

SpringMVC 基于 MVC 架構模式,核心流程時前端控制室 DispathcherServlet 統一調度,通過組件協作完成 http 的請求與響應。 對于 dispatchServlet 作為前端請求的控制器,全局的訪問點,首先將根據 URL 調用 HandlerMapping 獲取 Han…

Linux學習(十五)(故障排除(ICMP,Ping,Traceroute,網絡統計,數據包分析))

故障排除是任何 Linux 用戶或管理員的基本技能。這涉及識別和解決 Linux 系統中的問題。這些問題的范圍包括常見的系統錯誤、硬件或軟件問題、網絡連接問題以及系統資源的管理。Linux 中的故障排除過程通常涉及使用命令行工具、檢查系統和應用程序日志文件、了解系統進程&#…

存儲過程和自定義函數在銀行信貸業務中的應用(oracle)

數據校驗和清洗 例如,檢查客戶的年齡是否在合理范圍內,貸款金額是否符合規定的上下限等。 對于不符合規則的數據,可以進行清洗和修正。比如,將空值替換為默認值,或者對錯誤的數據進行糾正。 CREATE OR REPLACE PROC…

指令微調 (Instruction Tuning) 與 Prompt 工程

引言 預訓練語言模型 (PLMs) 在通用語言能力方面展現出強大的潛力。然而,如何有效地引導 PLMs 遵循人類指令, 并輸出符合人類意圖的響應, 成為釋放 PLMs 價值的關鍵挑戰。 指令微調 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

【c++】反轉字符串

說明 將string類型的字符串本身反轉 用到庫&#xff1a;algorithm 示例代碼 #include <iostream> #include <string> #include <algorithm> using namespace std;int main() {string str "123";reverse(str.begin(), str.end());cout <<…

正則表達式(復習)

文章目錄 一、[]: 一個字符集合二、{}: 重復次數三、特殊符號四、(): 分組五、python代碼示例六、注意 正則表達式(regular expression)描述了一種字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個…

ARMV8的64位指令

一、介紹 ARMv8 體系結構最大的改變是增加了一個新的 64 位的指令集&#xff0c;這是早前 ARM 指令集 的有益補充和增強。它可以處理 64 位寬的寄存器和數據并且使用 64 位的指針來訪問內存。這 個新的指令集稱為 A64 指令集&#xff0c;運行在 AArch64 狀態。 ARMv8 兼容舊的…

線性代數之矩陣特征值與特征向量的數值求解方法

文章目錄 前言1. 冪迭代法&#xff08;Power Iteration&#xff09;冪法與反冪法求解矩陣特征值冪法求最大特征值編程實現補充說明 2. 逆冪迭代法&#xff08;Inverse Iteration&#xff09;移位反冪法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩陣理論推導編程…

VScode:運行程序停止后,頻繁出現終端進程被終止

VScode里面powershell被迫關閉 bug場景排查原因解決辦法 bug場景 系統&#xff1a;Windows IDE&#xff1a;Visual Studio Code 停止運行程序后&#xff0c;按向上箭頭想要執行上一步命令&#xff0c;忽然終端頁面強行關閉&#xff0c;并報錯如下&#xff1a; 終端進程 &quo…

[MERN] 使用 socket.io 實現即時通信功能

[MERN] 使用 socket.io 實現即時通信功能 效果實現如下&#xff1a; MERN-socket.io 實現即時聊天 Github 項目地址:https://github.com/GoldenaArcher/messenger-mern 項目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 實現即時通信功能&#xff0c;并且使用了…

【菜鳥飛】Conda安裝部署與vscode的結合使用

介紹 Conda 是一個跨平臺的開源工具&#xff0c;用于管理軟件包和環境。最初由 Anaconda 公司開發&#xff0c;它的設計目標是支持數據科學和機器學習領域&#xff0c;但其功能不僅局限于此。 以下是 Conda 的核心特點&#xff1a; 包管理&#xff1a;安裝、更新、卸載各種庫…

《Android應用性能優化全解析:常見問題與解決方案》

目錄 一、UI卡頓/掉幀 二、內存泄漏&#xff08;Memory Leak&#xff09; 三、ANR&#xff08;Application Not Responding&#xff09; 四、列表滑動卡頓&#xff08;RecyclerView/ListView&#xff09; 五、冷啟動耗時過長 六、內存抖動&#xff08;Memory Churn&#x…

【MySQL是怎么運行的】0、名詞解釋

聚簇索引&#xff1a;聚簇索引和數據在一起&#xff0c;又名主鍵索引&#xff0c;是主鍵id構建的一顆B樹&#xff0c;非葉節點是主鍵id&#xff0c;葉子節點是真實數據。其他索引統稱二級索引&#xff0c;也稱為非聚簇索引。覆蓋索引&#xff1a;查找的數據就在索引樹上&#x…

深入解析 TCP 協議【真題】

傳輸控制協議&#xff08;TCP&#xff09;解析與題目解析 題目解析 關于傳輸控制協議&#xff08;TCP&#xff09;表述不正確的是&#xff1f; A. 主機尋址 B. 進程尋址 C. 流量控制 D. 差錯控制 TCP&#xff08;Transmission Control Protocol&#xff09;是面向連接、可靠傳…

單例模式的五種實現方式

1、餓漢式 ①實現&#xff1a;在類加載的時候就初始化實例 ②優點&#xff1a;線程安全 ③缺點&#xff1a;實例在類加載的時候創建&#xff0c;可能會浪費資源 //餓漢式 public class EagerSingleton{private EagerSingleton(){} //私有構造方法private static EagerSingle…

SwiftUI 讓視圖自適應高度的 6 種方法(四)

概覽 在 SwiftUI 的世界里&#xff0c;我們無數次都夢想著視圖可以自動根據布局上下文“因勢而變”?。大多數情況下&#xff0c;SwiftUI 會將每個視圖尺寸處理的井井有條&#xff0c;不過在某些時候我們還是得親力親為。 如上圖所示&#xff0c;無論頂部 TabView 容器里子視圖…

小程序SSL證書過期怎么辦?

SSL證書就像小程序的“安全鎖”&#xff0c;一旦過期&#xff0c;用戶訪問時會被提示“不安全”&#xff0c;輕則流失客戶&#xff0c;重則數據泄露&#xff01;作為企業負責人&#xff0c;如何快速解決證書過期問題&#xff1f;又該如何避免再次踩坑&#xff1f;這篇指南給你答…