學習筆記(24): 機器學習之數據預處理Pandas和轉換成張量格式[2]

學習筆記(24): 機器學習之數據預處理Pandas和轉換成張量格式[2]

學習機器學習,需要學習如何預處理原始數據,這里用到pandas,將原始數據轉換為張量格式的數據。

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1]-CSDN博客

下面介紹下:處理缺失值(刪除法)

為什么要這樣做?

這種處理缺失值的策略很實用,當某列的缺失值比例過高時,保留該列可能會對后續分析造成負面影響。刪除缺失值最多的列可以避免在缺失值填充時引入過多噪聲,提高數據質量。

原始數據:
? ?NumRoos Alley ? Price
0 ? ? ?NaN ?Pave ?127500
1 ? ? ?2.0 ? NaN ?106000
2 ? ? ?4.0 ? NaN ?178100
3 ? ? ?NaN ? NaN ?140000

1、處理缺失值(刪除法)

? ? ? “NaN”項代表缺失值。 為了處理缺失的數據,典型的方法包括插值法和刪除法, 其中插值法用一個替代值彌補缺失值,而刪除法則直接忽略缺失值。 在這里,我們將考慮刪除法。

1.1、代碼

# 處理缺失值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 轉換 NumRoos 列為數值類型(將 'NA' 轉為 NaN)
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'],errors='coerce')# 計算每列的缺失值數量
miss_counts = inputs.isna().sum()
print("\n各列缺失值數量:")
print(miss_counts)# 找出缺失值最多的列
if not miss_counts.empty:max_miss = miss_counts.max()  # 計算最大缺失值數量,結果為3(Alley列有3個缺失值print(max_miss)clos_drop = miss_counts[miss_counts ==max_miss].index.tolist() #篩選出缺失值數量等于最大值的列,miss_counts == max_miss 返回布爾 Seriesinputs = inputs.drop(columns=clos_drop)  #刪除篩選出的列print(f"\n已刪除缺失值最多的列: {clos_drop}")# 用均值填充 NumRoos 列的缺失值
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())print("\n處理后的數據:")
print(inputs)

代碼解析如下

1. 數據分割:提取輸入特征和輸出標簽
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]

inputs:提取數據的前兩列(索引 0 和 1)作為特征(NumRoos和Alley)。
outputs:提取第三列(索引 2)作為目標變量(Price)。
2. 將NumRoos列轉換為數值類型
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'], errors='coerce')

pd.to_numeric(..., errors='coerce'):將字符串類型的數值轉換為數字,無法轉換的(如NA)會被轉為NaN(缺失值)。
3. 計算每列的缺失值數量
miss_counts = inputs.isna().sum()
print("\n各列缺失值數量:")
print(miss_counts)
inputs.isna():返回一個布爾型 DataFrame,標記每個位置是否為缺失值。
.sum():統計每列的True(缺失值)數量。

#篩選出缺失值數量等于最大值的列

clos_drop = miss_counts[miss_counts == max_miss].index.tolist()

這行代碼主要做了三件事:篩選、提取索引、轉換為列表。

1、篩選操作?missing_counts[...]

? ? ?miss_counts == max_miss 返回布爾 Series
? ? ?miss_counts[...] 篩選出值為True的行(即Alley)。

# 結果:
# NumRoos ? ?False
# Alley ? ? ? True
# dtype: bool

2、.index?獲取列名

篩選結果是一個新的 Series,我們需要它的索引(也就是列名)

# 結果:
# Index(['Alley'], dtype='object')

3、.tolist()?轉換為列表

.index.tolist() 將列名轉為列表 ['Alley']。

為什么要轉換為列表?

你可能會問:為什么不直接用索引對象,而非要轉成列表呢?這主要是為了兼容drop()方法。drop()方法的columns參數可以接受列名列表或索引對象,但列表更靈活,方便后續處理。

關鍵細節總結
1、缺失值處理策略:
優先刪除缺失比例最高的列(Alley列缺失率 75%)。
對剩余列(NumRoos)用均值填充。
2、數據類型轉換:
pd.to_numeric(..., errors='coerce') 是處理含缺失值的數值列的常用方法。
3、邊緣情況處理:
當有多個列缺失值數量相同時(如兩列均有 3 個缺失值),會同時刪除這些列。
if not miss_counts.empty 確保無缺失值時不會報錯。

# 用均值填充 NumRoos 列的缺失值

inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())

inputs['NumRoos'].mean():計算NumRoos列的均值(結果為 3.0,因為有效數值為 2 和 4)。
.fillna(...):將NumRoos列的缺失值(NaN)填充為均值 3.0。

1.2、執行結果

2、轉換為張量格式

現在inputsoutputs中的所有條目都是數值類型,它們可以轉換為張量格式。

2.1、代碼

import torch
print("\n轉換成張量數據:")
x = torch.tensor(inputs.to_numpy(dtype=float))
print(x)
y = torch.tensor(outputs.to_numpy(dtype=float))
print(y)

2.2、執行結果

  • pandas軟件包是Python中常用的數據分析工具中,pandas可以與張量兼容。

  • pandas處理缺失的數據時,我們可根據情況選擇用插值法和刪除法。

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

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

相關文章

LeetCode 2297. 跳躍游戲 VIII(中等)

題目描述 給定一個長度為 n 的下標從 0 開始的整數數組 nums。初始位置為下標 0。當 i < j 時&#xff0c;你可以從下標 i 跳轉到下標 j: 對于在 i < k < j 范圍內的所有下標 k 有 nums[i] < nums[j] 和 nums[k] < nums[i] , 或者對于在 i < k < j 范圍…

【前端】緩存相關

本知識頁參考&#xff1a;https://zhuanlan.zhihu.com/p/586060532 1. 概述 1.1 應用場景 靜態資源 場景&#xff1a;圖片、CSS、JS 文件等靜態資源實現&#xff1a;使用 HTTP 緩存控制頭&#xff0c;或者利用 CDN 進行邊緣緩存 數據緩存 場景&#xff1a;請求的返回結果實現…

獵板硬金鍍層厚度:高頻通信領域的性能分水嶺

在 5G 基站、毫米波雷達等高頻場景中&#xff0c;硬金鍍層厚度的選擇直接決定了 PCB 的信號完整性與長期可靠性。獵板硬金工藝&#xff1a; 1.8μm 金層搭配羅杰斯 4350B 基材的解決方案&#xff0c;在 10GHz 頻段實現插入損耗&#xff1c;0.15dB/cm&#xff0c;較常規工藝降低…

第35次CCF計算機軟件能力認證-5-木板切割

原題鏈接&#xff1a; TUOJ 我自己寫的35分正確但嚴重超時的代碼 #include <bits/stdc.h> using namespace std; int main() {int n, m, k;cin >> n >> m >> k;vector<unordered_map<int, int>> mp(2);int y;for (int i 1; i < n; …

【藍橋杯】包子湊數

包子湊數 題目描述 小明幾乎每天早晨都會在一家包子鋪吃早餐。他發現這家包子鋪有 NN 種蒸籠&#xff0c;其中第 ii 種蒸籠恰好能放 AiAi? 個包子。每種蒸籠都有非常多籠&#xff0c;可以認為是無限籠。 每當有顧客想買 XX 個包子&#xff0c;賣包子的大叔就會迅速選出若干…

pikachu通關教程-目錄遍歷漏洞(../../)

目錄遍歷漏洞也可以叫做信息泄露漏洞、非授權文件包含漏洞等. 原理:目錄遍歷漏洞的原理比較簡單&#xff0c;就是程序在實現上沒有充分過濾用戶輸入的../之類的目錄跳轉符&#xff0c;導致惡意用戶可以通過提交目錄跳轉來遍歷服務器上的任意文件。 這里的目錄跳轉符可以是../…

[概率論基本概念4]什么是無偏估計

關鍵詞&#xff1a;Unbiased Estimation 一、說明 對于無偏和有偏估計&#xff0c;需要了解其敘事背景&#xff0c;是指整體和抽樣的關系&#xff0c;也就是說整體的敘事是從理論角度的&#xff0c;而估計器原理是從實踐角度說事&#xff1b;為了表明概率理論&#xff08;不可…

面試題——計算機網絡:HTTP和HTTPS的區別?

HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;作為互聯網上應用最廣泛的網絡通信協議&#xff0c;HTTP是基于TCP/IP協議族的應用層協議。它采用標準的請求-響應模式進行通信&#xff0c;通過簡潔的報文格式&#xff08;包含請求行、請求頭、請求體等&a…

uni-app學習筆記十九--pages.json全局樣式globalStyle設置

pages.json 頁面路由 pages.json 文件用來對 uni-app 進行全局配置&#xff0c;決定頁面文件的路徑、窗口樣式、原生的導航欄、底部的原生tabbar 等。 導航欄高度為 44px (不含狀態欄)&#xff0c;tabBar 高度為 50px (不含安全區)。 它類似微信小程序中app.json的頁面管理部…

SQL思路解析:窗口滑動的應用

目錄 &#x1f3af; 問題目標 第一步&#xff1a;從數據中我們能直接得到什么&#xff1f; 第二步&#xff1a;我們想要的“7天窗口”長什么樣&#xff1f; 第三步&#xff1a;SQL 怎么表達“某一天的前六天”&#xff1f; &#x1f50d;JOIN 比窗口函數更靈活 第四步&am…

解決MyBatis參數綁定中參數名不一致導致的錯誤問題

前言 作為一名Java開發者&#xff0c;我在實際項目中曾多次遇到MyBatis參數綁定的問題。其中最常見的一種情況是&#xff1a;在Mapper接口中定義的參數名與XML映射文件中的占位符名稱不一致&#xff0c;導致運行時拋出Parameter xxx not found類異常。這類問題看似簡單&#x…

黑馬程序員TypeScript課程筆記—類型兼容性篇

類型兼容性的說明 因為傳入的時候只有一個參數 對象之間的類型兼容性 接口之間的類型兼容性 函數之間的類型兼容性&#xff08;函數參數個數&#xff09; 和對象的兼容性正好相反 函數之間的類型兼容性&#xff08;函數參數類型&#xff09; 函數參數的兼容性就不要從接口角度…

智能電視的操作系統可能具備哪些優勢

豐富的應用資源&#xff1a; 操作系統內置了應用商店&#xff0c;提供了豐富的應用資源&#xff0c;涵蓋視頻、游戲、教育等多個領域&#xff0c;滿足不同用戶的多樣化需求。用戶可以輕松下載并安裝所需的應用&#xff0c;享受更多元化的娛樂和學習體驗。 流暢的操作體驗&…

Xget 正式發布:您的高性能、安全下載加速工具!

您可以通過 star 我固定的 GitHub 存儲庫來支持我&#xff0c;謝謝&#xff01;以下是我的一些 GitHub 存儲庫&#xff0c;很有可能對您有用&#xff1a; tzst Xget Prompt Library 原文 URL&#xff1a;https://blog.xi-xu.me/2025/06/02/xget-launch-high-performance-sec…

精美的軟件下載頁面HTML源碼:現代UI與動畫效果的完美結合

精美的軟件下載頁面HTML源碼&#xff1a;現代UI與動畫效果的完美結合 在數字化產品推廣中&#xff0c;一個設計精良的下載頁面不僅能提升品牌專業度&#xff0c;還能顯著提高用戶轉化率。本文介紹的精美軟件下載頁面HTML源碼&#xff0c;通過現代化UI設計與豐富的動畫效果&…

麒麟v10+信創x86處理器離線搭建k8s集群完整過程

前言 最近為某客戶搭建內網的信創環境下的x8s集群&#xff0c;走了一些彎路&#xff0c;客戶提供的環境完全與互聯網分離&#xff0c;通過yum、apt這些直接拉依賴就別想了&#xff0c;用的操作系統和cpu都是國產版本&#xff0c;好在仍然是x86的&#xff0c;不是其他架構&…

Pycharm的使用技巧總結

目錄 一、高效便捷的快捷鍵 二、界面漢化處理 1.設置 2.插件 3.漢化插件安裝 三、修改字體大小、顏色 1.選擇文件-設置 2.選擇編輯器-配色方案-python 3.修改注釋行顏色 4.修改編輯器字體顏色 一、高效便捷的快捷鍵 序號快捷鍵功能場景效果1Ctrl /快速注釋/取消注釋…

安全編碼規范與標準:對比與分析及應用案例

在軟件開發領域&#xff0c;尤其是涉及安全關鍵系統的開發中&#xff0c;遵循編碼規范和標準是確保軟件質量和安全性的重要手段。除了CERT C、CERT Java和MISRA外&#xff0c;還有其他多個與安全相關的編碼規范和標準&#xff0c;以下是一些主要標準的對比說明&#xff1a; 一…

FFmpeg學習筆記

1. 播放器的架構 2. 播放器的渲染流程 3. ffmpeg下載與安裝 3.0 查看PC是否已經安裝了ffmpeg ffmpeg 3.1 下載 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解壓 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …

大寬帶怎么做

我有10個G的寬帶資源&#xff0c;怎樣運行P2P才能將收益巨大化&#xff0c;主要有以下幾種方式&#xff1a; 1.多設備匯聚模式&#xff1a;使用多臺支持千兆網絡的服務器或專用PCDN設備&#xff08;如N1盒子&#xff09;&#xff0c;將10條寬帶分別接入不同設備&#xff0c;通過…