pytorch 數據預處理和常用工具

文章目錄

  • NumPy
    • Numpy數據結構
    • 安裝和使用NumPy
  • Matplotlib的安裝和導入
    • 安裝和導入Matplotlib
    • 繪制基礎圖畫
      • 折線圖
      • 散點圖
      • 柱狀圖
      • 圖例
  • 數據清洗
    • 據清洗的作用
    • Pandas進行數據清洗
      • Pandas數據結構
        • Series 數據結構
        • DataFrame數據結構
      • Pandas數據清洗常用代碼
  • 特征工程
    • 主成分分析
    • 線性判別分析
    • Scikit-learn數據預處理
      • 數據標準化
      • 特征工程

NumPy

  • NumPy(Numerical Python) 是科學計算基礎庫,提供大量科學計算相關功能,比如數據統計,隨機數生成等。其提供最核心類型為多維數組類型(ndarray),支持大量的維度數組與矩陣運算,Numpy支持向量處理ndarray對象,提高程序運算速度。
    • 多維數組支持:NumPy 提供了靈活且高效的多維數組(ndarray)結構,支持從一維到高維的數據存儲。
    • 高效的數學運算:內置了大量的數學函數,能夠在數組上進行快速的向量化計算。
    • 線性代數和隨機數生成:提供了豐富的線性代數運算(矩陣乘法、特征值分解等)和隨機數生成器。
    • 集成性:與其他科學計算庫(如SciPy、Pandas、Matplotlib)無縫銜接。

Numpy數據結構

ndarray是NumPy庫的核心數據結構,用于表示多維數組。

  • 維度:ndarray可以具有任意數量的維度,從一維(向量)到三維(立體)、四維甚至更高。每個維度的大小稱為軸長。
  • 形狀:ndarray對象具有一個描述其維度大小的元組,稱為形狀(Shape)。例如,二維數組的形狀可能是(3,4),表示有3行4列。
  • 數據類型:ndarray中的所有元素都必須是相同的數據類型。數據可以是整數、浮點數、復數等。
  • 內存布局:ndarray在內存中是連續存儲的,這意味著它允許高效的數據訪問和操作。
  • 索引和切片:ndarray支持使用方括號進行索引和切片,這允許你訪問、修改或操作數組的特定部分。
  • 廣播:ndarray支持廣播功能,這是一種機制,允許在不同形狀的數組之間進行數學運算。
  • 數學運算:ndarray支持各種數學運算,如加法、減法、乘法、除法等,這些運算可以逐元素應用于數組中的每個元素。
  • 函數:NumPy提供了許多內置函數,可以對ndarray執行各種操作,如求和、求平均值、求最大值、求最小值等。
  • 通用函數:NumPy還提供了通用函數(ufunc),這些函數可以對ndarray中的每個元素執行操作,而不需要循環。

安裝和使用NumPy

  1. 通過 pip 安裝 NumPy:
pip install numpy
  1. 基本使用示例
import numpy as np#創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("數組維度:", arr.ndim)        # 輸出:2
print("數組形狀:", arr.shape)      # 輸出:(2, 3)
print("元素類型:", arr.dtype)      # 輸出:int64#數組運算
result = np.dot(arr.T, arr)          # 計算矩陣乘法
print("結果:\n", result)
import numpy as np#創建一個二維數組
arr_a = np.array([[1, 2, 3], [4, 5, 6]])
arr_b = np.array([1, 2, 3])
c=np.add(arr_a, arr_b)print(c)
import numpy as np#創建一個二維數組
arr = np.array([[1, 2], [4, 5]])
print(arr[0])
print(arr[1])

Matplotlib的安裝和導入

  • Matplotlib是一個用于繪制圖形的Python庫,可用于實現數據的可視化展示。

安裝和導入Matplotlib

  1. 安裝和驗證命令
pip install matplotlib
import matplotlib
print(matplotlib.__version__)
  1. 導入Matplotlib和解決中文報錯
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False

繪制基礎圖畫

折線圖

import matplotlib.pyplot as plt# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.plot(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()

散點圖

#%% md
## 散點圖
#%%
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.scatter(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()

柱狀圖

plt.show()
#%%
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.bar(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()

圖例

import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y_1=[2,4,6,8,10]
y_2=[3,5,7,9,11]#使用折線圖展示x和y的關系
plt.plot(x,y_1,label='數據1')
plt.plot(x,y_2,label='數據2')
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
# 添加圖例
plt.legend()
#顯示圖表
plt.show()

數據清洗

  • 數據清洗是數據預處理的一部分,主要是對數據進行審查和校驗,以確保其準確性、完整性、一致性和可靠性。

據清洗的作用

  • 數據清洗是機器學習和深度學習中的一個重要步驟,對模型的性能有著決定性的影響。
  • 盡管深度學習模型,尤其是深度神經網絡具有很強的特征學習能力,可以在一定程度上容忍數據的不完美,但這并不意味著可以完全忽略數據清洗的步驟。良好的數據預處理可以幫助模型更快地收斂,提高訓練效率,同時也可以防止模型過擬合。
  • 據清洗主要包括以下內容:
    • 刪除重復信息:識別并去除數據中的重復記錄,這些可能是由于數據錄入錯誤或系統錯誤產生的。
    • 糾正錯誤:查找并修正數據中的錯誤,例如小數點位置錯誤、拼寫錯誤或其他錄入錯誤。
    • 提供數據一致性:確保數據集中的信息是一致的,比如統一日期格式或文本的大小寫,以便可以進行有效的比較和分析。
    • 處理無效值或缺失值:對于數據中的無效值或缺失值,需要決定是刪除還是填充這些值,以保持數據的完整性。
    • 消除異常值:檢測并處理那些不符合常規模式的值,這些可能是由于測量錯誤或其他原因造成的。
    • 數據轉換和格式化:對數據進行調整,以滿足特定的分析需求,例如日期的轉換、數值的標準化等。

  • 可以使用Python中的NumPy、Pandas或Scikit-learn庫實現數據清洗。

Pandas進行數據清洗

  • Pandas是一個用于數據分析的Python庫,是Python中進行數據處理和分析的一個強大工具,它提供了快速、靈活且直觀的數據結構,特別適合處理關系型和標記型數據。
    Pandas的重要特性。
  • 數據結構:Pandas提供了兩種主要的數據結構:Series和DataFrame。Series是一種一維的標簽化數組;而DataFrame是一種二維的表格型數據結構,可以想象成一個Excel表格或數據庫中的表。
  • 數據處理:Pandas提供了大量的函數和方法,使得數據的清洗、轉換和分析變得更加高效和便捷。這些功能包括但不限于數據篩選、排序、分組、合并以及時間序列分析等。
  • 數據可視化:Pandas與Matplotlib等繪圖庫緊密結合,提供了一些內置的繪圖功能,方便用戶對數據進行可視化分析。

Pandas數據結構

Series 數據結構
  • Series是一種強大的一維數據結構,它不僅能夠存儲數據,還提供了豐富的方法和操作,使得數據分析變得更加高效和便捷。
  • Series具有多個特性:多種創建方式,切片和索引,缺失值檢測,自動對齊
import pandas as pd
s=pd.Series([1,2,3,4,5])
print(s)
0    1
1    2
2    3
3    4
4    5
dtype: int64
DataFrame數據結構
  • DataFrame是Pandas庫的核心數據結構,它類似于一個二維表格,可以存儲多種類型的數據,并且具有很多方便進行數據處理的功能。
  • DataFrame的關鍵特性包括:二維標簽化數據結構,潛在的異質性,數據處理,數據分析,數據存儲,查詢便捷
  • 潛在的異質性:DataFrame中的每列可以是不同的數據類型,包括數值、字符串或布爾值等。
  • DataFrame是Pandas庫中的一個類,用于創建二維表格型數據結構。
  • data是一個包含數據的字典或列表,其中字典的鍵表示列名,字典的值表示對應列的數據。如果data是一個列表,則每個元素代表一行數據。
import pandas as pddata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'City': ['New York','London','Paris']
}
s=pd.DataFrame(data)
print(s)

Pandas數據清洗常用代碼

import pandas as pd
# 讀取數據
data=pd.read_csv('data.csv')
data=pd.read_excel('data.csv')# 查看前5行信息
print(data.head())#刪除含有缺失值的行
data.dropna(inplace=True)
#使用平均值填充缺失值
data.fillna(data.mean(),inplace=True)#檢測重復行
duplicatess=data.duplicated()
#刪除重復行
data.drop_duplicates(inplace=True)
# 去除異常值
data = data[(np.abs(stats.zscore(data['column_to_clean'])) < 3)]# 數據類型轉換
data['date']= pd.to_datetime(data['date'])#篩選年齡大于或等于18歲的記錄
filtered_data = data[data['age'] >= 18]
#按年齡升序排列
sorted_data = filtered_data.sort_values(by='age', ascending=True)#假設有兩個數據集:data1和data2
merged_data = pd.merge(datal, data2, on='customer_id')

特征工程

  • 特征工程是指對原始數據進行預處理、選擇、修改和構建新的特征的過程,以便提高模型的性能。這個過程包括數據清洗、特征選擇、特征轉換和降維等。
  • 特征工程的作用包括:提高模型性能,減少過擬合,提高訓練速度,數據清洗,特征選擇,降維。

主成分分析

  • 主成為分析(PCA)是一種數據降維技術,它的核心目的是通過變換找到數據中最重要的特征,也就是主成分,以減少數據的復雜性,同時保留大部分信息。主成分分析就像是用一個濾鏡來優化你的照片,只保留最精華的部分,去掉那些不重要的雜亂背景,使得圖片更加清晰和突出重點。

線性判別分析

  • 線性判別分析是一種統計方法,它用于找到能夠最大化不同類別數據之間差異的方向。這種方法在機器學習和統計中被廣泛用于降維和分類。
  • 線性判別分析就是找到一個能夠最好地區分不同類別的方向,通過這個方向可以簡化數據,同時保留最重要的區分信息。

Scikit-learn數據預處理

  • Scikit-learn是一個開源的、廣泛使用的機器學習工具包,其提供了豐富的機器學習算法,例如回歸、聚類、降維等,同時還支持數據預處理、模型評估及參數調優等功能。
pip install scikit-learn

數據標準化

  • Min-Max標準化(極差法):這種方法通過將原始數據按照最小值和最大值進行線性變換,使得轉換后的數據落在一個特定的區間內,通常是[0,1]。這種方法簡單直觀,適用于大多數情況,特別是當數據分布相對均勻時。
  • Z-score標準化(標準差法):這種方法基于原始數據的均值和標準差進行轉換,使得轉換后的數據具有零均值和單位方差。這種方法適用于數據分布近似正態分布的情況,可以有效地消除不同量綱和數量級的影響。
#導入相關庫
import numpy as np
from sklearn.preprocessing import StandardScaler
#創建一個示例數據集
data =np.array([[1,2],[3,4],[5,6]])
#初始化StandardScaler對象
scaler = StandardScaler()
#使用fit_transform方法對數據進行標準化
normalized_data = scaler.fit_transform(data)
print("原始數據:")
print(data)
print("標準化后的數據:")
print(normalized_data)

特征工程

  1. 創建數據集:使用Pandas 庫創建一個DataFrame,包含三列數據’A’,‘B’,'C"。
  2. 特征選擇:計算各列之間的相關系數,然后選擇與C列相關系數大于0.5的列作為特征。
  3. 特征提取:使用PCA(主成分分析)方法對數據進行降維,將數據的維度從3降到2。
  4. 特征縮放:使用StandardScaler對數據進行標準化處理,使得每一列的數據都符合標準正態分布。
import pandas as pd
from sklearn.preprocessing import StandardScaler
#創建數據集
data = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
#特征選擇(以相關系數為例)
correlations = data.corr().abs()
features = correlations[correlations['C'] > 0.5].index.tolist()
#特征提取(以PCA為例)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data)
#特征縮放
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
#顯示處理后的數據
print("特征選擇結果:",features)
print("特征提取結果:",data_pca)
print("特征縮放結果:",data_scaled)

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

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

相關文章

MATLAB 中常用的微分函數介紹

MATLAB 中常用的微分函數介紹 在 MATLAB 中&#xff0c;微分運算是數值計算和符號計算中常用的功能。無論是在進行數據分析、優化算法&#xff0c;還是數學建模時&#xff0c;微分都扮演著重要的角色。本文將介紹 MATLAB 中常用的微分函數&#xff0c;并通過簡單的示例幫助大家…

按指定位置或關鍵字批量刪除工作表-Excel易用寶

在一個工作簿中有多個工作表&#xff0c;有些工作表不需要了&#xff0c;如果一個一個手動刪除&#xff0c;那實在是太慢了&#xff0c;有沒有什么好的方法可以批量刪除工作表。 批量刪除工作表很簡單&#xff0c;單擊【易用寶】→【工作表】→【批量刪除工作表】。 在打開的批…

TypeScript裝飾器:從入門到精通

TypeScript裝飾器&#xff1a;從入門到精通 什么是裝飾器&#xff1f; 裝飾器&#xff08;Decorator&#xff09;是TypeScript中一個非常酷的特性&#xff0c;它允許我們在不修改原有代碼的情況下&#xff0c;給類、方法、屬性等添加額外的功能。想象一下裝飾器就像給你的代碼…

【SSL證書系列】客戶端如何檢查中間CA簽名是否由根CA簽發

客戶端通過以下步驟檢查中間CA的簽名是否由受信任的根CA簽發&#xff1a; 1. 證書鏈的構建 服務器發送的證書鏈通常包含&#xff1a; ? 服務器證書&#xff08;由中間CA簽發&#xff09; ? 中間CA證書&#xff08;由根CA簽發&#xff09; ? 根CA證書&#xff08;通常不發送…

【android bluetooth 協議分析 12】【A2DP詳解 1】【車機側藍牙音樂免切源介紹】

“車機藍牙音樂免切源” 是近年來車載系統&#xff08;IVI&#xff0c;In-Vehicle Infotainment&#xff09;中常見的一個用戶體驗優化功能。它主要是為了簡化藍牙音樂播放流程、減少用戶操作&#xff0c;提升使用便捷性。 一、什么是“切源”&#xff1f; 在車機系統中&#…

Android usb網絡共享詳解

Android usb網絡共享詳解 文章目錄 Android usb網絡共享詳解一、前言二、USB網絡共享使用的前提1、Android設備支持adb 并且打開usb開關2、原生Settings能看到USB網絡共享開關3、代碼中檢測USB網絡共享是否支持 三、Settings 中USB網絡共享代碼的部分代碼1、Settings\res\xml\t…

Step1

項目 SchedulerSim 已搭建完成 ? ? ? 你現在擁有的&#xff1a; ? &#x1f527; 兩種調度器&#xff08;Round Robin SJF&#xff09; ? &#x1f4e6; 模擬進程類 Process ? &#x1f9f1; 清晰結構&#xff1a;OOP 風格 便于擴展 ? ?? 主函數已演示調度器運行效…

初探 Skynet:輕量級分布式游戲服務器框架實戰

在游戲服務器開發領域&#xff0c;高效、穩定且易于擴展的框架一直是開發者追求的目標。Skynet 作為一款輕量級、高性能的分布式游戲服務器框架&#xff0c;憑借其獨特的設計理念和強大的功能&#xff0c;贏得了眾多開發者的青睞 一.Skynet底層架構支持 1.Actor erlang 從語言…

Oracle數據庫中,WITH..AS 子句用法解析

前言 在Oracle數據庫中&#xff0c;WITH子句&#xff08;也成為“子查詢因子化” 或“公共表表達式”&#xff0c;Common Table Expression, CTE)用于定義一個臨時命名的結果集&#xff0c;這個結果集可以在后續的查詢中引用。 一、基本語法 WITH sjtab AS &#xff08;SELE…

什么是衛星電話?衛星電話與普通電話有什么區別?

在信息時代&#xff0c;通信技術已滲透到人類生活的方方面面&#xff0c;但傳統地面通信網絡仍存在盲區&#xff0c;無論是海洋、沙漠、高山&#xff0c;還是災害現場&#xff0c;普通手機往往因基站信號無法覆蓋而失效。此時&#xff0c;衛星電話便成為連接世界的“生命線”。…

【C/C++】高階用法_筆記

1. 模板元編程&#xff08;TMP&#xff09;與編譯時計算 (1) 類型萃取與 SFINAE 類型萃取&#xff08;Type Traits&#xff09;&#xff1a;利用模板特化在編譯時推斷類型屬性。 template<typename T> struct is_pointer { static constexpr bool value false; };templ…

鴻蒙OSUniApp 實現一個精致的日歷組件#三方框架 #Uniapp

使用 UniApp 實現一個精致的日歷組件 前言 最近在開發一個約會小程序時&#xff0c;需要實現一個既美觀又實用的日歷組件。市面上雖然有不少現成的組件庫&#xff0c;但都不太符合我們的設計需求。于是&#xff0c;我決定從零開始&#xff0c;基于 UniApp 自己實現一個功能完…

PyQt5完整指南:從入門到實踐

引言 PyQt5是Python編程語言的一個GUI&#xff08;圖形用戶界面&#xff09;工具包&#xff0c;它是Qt5應用程序框架的Python綁定。Qt是一個跨平臺的C應用程序開發框架&#xff0c;被廣泛用于開發GUI程序和非GUI程序。PyQt5讓Python開發者能夠使用Python語言享受到Qt框架的強大…

Excel的詳細使用指南

### **一、Excel基礎操作** #### **1. 界面與基本概念** - **工作簿&#xff08;Workbook&#xff09;**&#xff1a;一個Excel文件&#xff08;擴展名.xlsx&#xff09;。 - **工作表&#xff08;Worksheet&#xff09;**&#xff1a;工作簿中的單個表格&#xff08;默認名…

Linux grep -r 查找依賴包是否存在依賴類 Class

方法一&#xff1a;通過 Linux &#xff0c;grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目錄下執行&#xff0c;grep -r&#xff0c; flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…

碎片筆記|AI生成圖像溯源方法源碼復現經驗(持續更新中……)

前言&#xff1a;本篇博客分享一些溯源方法的復現經驗&#xff0c;希望能幫助到大家&#x1f389;。 目錄 1. Close-set AttributionRepmixDe-FakeDNA-Net 2. Open-set AttributionPOSE 3. Single-Model AttributionOCC-CLIPLatentTracer 1. Close-set Attribution Repmix 論…

SAP Fiori Elements Object Page

?? SAP Fiori Elements Object Page:魔法積木城堡的建造秘密 想象一下,你曾經去過一個神奇的樂高主題公園,在那里,城堡會根據你的設計圖紙自動搭建,而你只需要提供一張設計說明書,不必親自擺放每一塊積木!這就是SAP Fiori Elements Object Page的渲染魔法! ???♂…

Git 用戶名與郵箱配置全解析:精準配置——基于場景的參數選擇

目錄 一、配置查看&#xff1a;理解多層級配置體系二、精準配置&#xff1a;基于場景的參數選擇1. 倉庫級配置&#xff08;推薦&#xff09;2. 用戶級配置3. 系統級配置 三、歷史提交信息修改1. 修改最近一次提交2. 修改多個歷史提交&#xff08;危險操作&#xff09; 五、配置…

Fabric系列 - SoftHSM 軟件模擬HSM

在 fabric-ca-server 上使用軟件模擬的 HSM(密碼卡) 功能 安裝 SoftHSMv2 教程 SoftHSMv2 默認的配置文件 /etc/softhsm2.conf默認的token目錄 /var/lib/softhsm/tokens/ 初始化和啟動fabric-ca-server&#xff0c;需要設置一個管理員用戶的名稱和密碼 初始化令牌 # 初始…

醫學影像系統的集成與工作流優化

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…