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

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

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

1、安裝pandas

pip install pandas

2、寫入和讀取數據

>>創建一個人工數據集,并存儲在CSV(逗號分隔值)文件 ../../data/house_tiny.csv中。 以其他格式存儲的數據也可以通過類似的方式進行處理。 下面我們將數據集按行寫入CSV文件中。

2.1、代碼


import os
import pandas as pd#向上兩級目錄,然后進入data目錄
os.makedirs(os.path.join('..','..','data'),exist_ok=True)
data_file =os.path.join('..','..','data','house_tiny.csv')
#寫入csv數據
with open(data_file,'w') as f:f.write('NumRoos,Alley,Price\n')   #列名f.write('NA,Pave,127500\n')  # 每行表示一個數據樣本f.write('2,NA,106000\n')  # 每行表示一個數據樣本f.write('4,NA,178100\n')f.write('NA,NA,140000\n')#從csv讀取數據
data = pd.read_csv(data_file)
print(data)

>>從創建的CSV文件中加載原始數據集,我們導入pandas包并調用read_csv函數。該數據集有四行三列。其中每行描述了房間數量(“NumRooms”)、巷子類型(“Alley”)和房屋價格(“Price”)。

2.2、執行結果

3、處理缺失值(插值法)

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

3.1、NumRoos缺失值處理

3.1.1、代碼
# 處理缺失值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 轉換 NumRoos 列為數值類型(將 'NA' 轉為 NaN)
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'], errors='coerce')
# 用均值填充 NumRoos 列的缺失值
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())
print("\n均值填充后的數據:")
print(inputs)

? ? ? ?通過位置索引iloc,我們將data分成inputs和outputs, 其中前者為data的前兩列,而后者為data的最后一列。 對于inputs中缺少的數值,我們用同一列的均值替換“NaN”項。

3.1.2、執行結果

這段代碼解釋:

類型轉換:
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'], errors='coerce')


將 NumRoos 列從 object 類型轉為數值類型
errors='coerce' 會把無法轉換的 'NA' 轉為 NaN
均值填充:
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())


此時 NumRoos 是數值類型,mean() 能正確計算均值(3.0)

3.2、Alley字段缺失值處理

? ? ? ? 對于inputs中的類別值或離散值,我們將“NaN”視為一個類別。 由于“巷子類型”(“Alley”)列只接受兩種類型的類別值“Pave”和“NaN”,?pandas可以自動將此列轉換為兩列“Alley_Pave”和“Alley_nan”。 巷子類型為“Pave”的行會將“Alley_Pave”的值設置為1,“Alley_nan”的值設置為0。 缺少巷子類型的行會將“Alley_Pave”和“Alley_nan”分別設置為0和1。

inputs = pd.get_dummies(inputs, dummy_na=True)

  • 自動處理分類變量?Alley
  • dummy_na=True?會為缺失值創建單獨的列
3.2.1、代碼
# 對Alley變量進行缺失值處理
inputs = pd.get_dummies(inputs, dummy_na=True)
# 檢查數據類型
# print(inputs.dtypes)
# 將所有布爾列轉換為整數類型(True → 1, False → 0)
inputs = inputs.astype(int)
print("\n缺失值處理后的數據:")
print(inputs)
3.2.2、執行結果

這樣的數據就可以直接用于機器學習模型(如線性回歸、決策樹等)了。

4、轉換為張量格式

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

4.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)

4.2、執行結果

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

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

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

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

相關文章

一臺電腦聯網如何共享另一臺電腦?網線方式

前言 公司內網一個人只能申請一個賬號和一個主機設備;會檢測MAC地址;如果有兩臺設備,另一臺就沒有網;因為是聯想老電腦,共享熱點用不了,但是有一根網線,現在解決網線方式共享網絡; …

Spring Boot 基礎知識全面解析:快速構建企業級應用的核心指南

一、Spring Boot 概述:重新定義 Java 開發 1.1 什么是 Spring Boot? Spring Boot 是基于 Spring 框架的快速開發框架,旨在簡化 Spring 應用的初始搭建及開發過程。它通過 「約定優于配置」(Convention Over Configuration&#…

CentOS-stream-9 Zabbix的安裝與配置

一、Web環境搭建部署Zabbix時,選擇合適的MariaDB、PHP和Nginx版本非常重要,以確保兼容性和最佳性能。以下是建議版本:Zabbix 6.4 MariaDB:官方文檔推薦使用MariaDB 10.3或更高版本。對于CentOS Stream 9,建議使用Maria…

CppCon 2014 學習:Adventures in Updating a Legacy Vintage Codebase

“VINTAGE” 部分是對現實中飛行模擬系統中遺留系統復雜性的描述。以下是對關鍵點的理解與拆解: 飛行模擬系統的背景 多環境、多語言、多硬件: 編程語言: 混用的“遺留語言”:Ada, C, C, Fortran, Jovial, PL/M, Pascal不同語言…

【計算機】計算機存儲器的分類與特性

文章目錄 一、按作用層次分類1. 主存儲器(內存)2. 輔助存儲器(外存)3. 高速緩沖存儲器(Cache) 二、按存儲介質分類1. 半導體存儲器2. 磁存儲技術3. 光存儲發展 三、按存取方式分類1. 隨機存儲器技術細節2. …

Redisson - 實現延遲隊列

Redisson 延遲隊列 Redisson 是基于 Redis 的一款功能強大的 Java 客戶端。它提供了諸如分布式鎖、限流器、阻塞隊列、延遲隊列等高可用、高并發組件。 其中,RDelayedQueue 是對 Redis 數據結構的高階封裝,能讓你將消息延遲一定時間后再進入消費隊列。…

上門服務小程序訂單系統框架設計

一、邏輯分析 上門服務小程序訂單系統主要涉及服務展示、用戶下單、訂單處理、服務人員接單與服務完成反饋等核心流程。 服務展示:不同類型的上門服務(如家政、維修等)需要在小程序中展示詳細信息,包括服務名稱、價格、服務內容介…

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時 Dex2oat (dalvik excutable file to optimized art file) ,對 dex 文件進行編譯優化,Android 虛擬機可識別的是dex文件,應用運行過程如果每次都將dex文件加載內存&#xff…

winrm登錄失敗,指定的憑據被服務器拒絕

winrm登錄失敗,指定的憑據被服務器拒絕。 異常提示:the specified credentials were rejected by the server 在windows power shell執行 set-executionpolicy remotesigned winrm quickconfig winrm set winrm/config/service/auth {Basic"true…

Unity3D ET框架游戲腳本系統解析

前言 ET框架在Unity3D中實現的GamePlay腳本系統是一種革命性的、基于ECS(實體-組件-系統)架構的設計,它徹底改變了傳統的基于MonoBehaviour的游戲邏輯編寫方式。其核心思想是追求高性能、高解耦、易熱更新,特別適合大型復雜的網絡…

android與Qt類比

一、概念對應關系 Android RecyclerView 組件類比描述Qt 模型 - 視圖組件Qt 類比描述RecyclerView畫板(容器)QAbstractItemView視圖(展示數據的容器,如列表、表格)RecyclerView.Adapter畫布(數據橋梁&…

Jenkins 2.479.1安裝和郵箱配置教程

1.安裝 在JDK安裝并設置環境變量完成后,下載官網對應的war版本,在對應目錄下打開命令行窗口并輸入 java -jar jenkins.war其余參數感興趣可以自行查閱,這里啟動的 jenkins 服務默認占用8080端口,在瀏覽器輸入 localhost:8080進入…

多分辨率 LCD 的 GUI 架構設計與實現

1.1多分辨率顯示系統的挑戰與解決方案 1.1.1 分辨率適配的核心問題 在嵌入式系統中,同時支持不同分辨率的 LCD(如 240160、320480 等)面臨以下挑戰: 布局適配:同一界面元素在不同分辨率下需要調整大小和位置 字體顯示:小分辨率屏幕需要更小的字體,而大分辨率需要更清…

11. MySQL事務管理(上)

1. CURD不加控制&#xff0c;會有什么問題&#xff1f; 火車票售票系統tickets表 id name nums 10 西安<->蘭州 1 客戶端A 客戶端B if (nums > 0) { if (nums > 0) { 賣票 賣票 // update numsnums - 1 update numsnums - 1 } } 當客戶端A檢查還有一張票時&#xf…

Beta分布Dirichlet分布

目錄 Beta分布Dirichlet分布Beta分布&Dirichlet分布從Dirichlet分布生成Beta樣本Beta分布&Dirichlet分布應用 Beta分布 Beta分布是定義在區間 [ 0 , 1 ] [0, 1] [0,1]上的連續概率分布&#xff0c;通常用于模擬概率或比例的隨機變量。Beta分布的概率密度函數&#xff…

嵌入式系統中常用的開源協議

目錄 1、GNU通用公共許可證&#xff08;GPL&#xff09; 2、GNU寬松通用公共許可證&#xff08;LGPL&#xff09; 3、MIT許可證 4、Apache許可證2.0 5、BSD許可證 6、如何選擇合適的協議 在嵌入式系統開發中&#xff0c;開源軟件的使用已成為主流趨勢。從物聯網設備到汽車…

告別延遲,擁抱速度:存儲加速仿真應用的解決方案【1】

需求分析 現代仿真&#xff08;如CFD流體動力學、FEA結構分析、電磁仿真、氣候模擬、自動駕駛場景仿真、芯片設計等&#xff09;會產生PB級甚至EB級的數據。海量數據的生成、處理和存儲&#xff0c;主要體現在以下幾個關鍵方面&#xff1a; 數據量爆炸式增長&#xff1a;高分…

vue封裝gsap自定義動畫指令

1、指令文件封裝 import { gsap } from gsap;// 動畫類型配置 const ANIMATION_TYPES {// 縮放scale: {from: { scale: 0.5, opacity: 0 },to: { scale: 1, opacity: 1 },hide: { scale: 0.5, opacity: 0 },},// 透明度fade: {from: { opacity: 0 },to: { opacity: 1, ease: …

HTTP 如何升級成 HTTPS

有一個自己的項目需要上線&#xff0c;域名解析完成后&#xff0c;發現只能使用 http 協議&#xff0c;這在瀏覽器上會限制&#xff0c;提示用戶不安全&#xff0c;所以需要把 HTTP 升級成 HTTPS 協議&#xff0c;但又不想花錢。 前提條件&#xff1a; 已經配置好 Nginx 服務器…

測試面試題總結一

目錄 列表、元組、字典的區別 nvicat連接出現問題如何排查 mysql性能調優 python連接mysql數據庫方法 參數化 pytest.mark.parametrize 裝飾器 list1 [1,7,4,5,5,6] for i in range(len(list1): assert list1[i] < list1[i1] 這段程序有問題嘛&#xff1f; pytest.i…