dataframe數據標準化處理_數據預處理——標準化/歸一化(實例)

這次我們來說說關于數據預處理中的數據標準化及歸一化的問題。主要以理論+實例的方式為大家展示。

本次實驗也將會展示部分數據以及代碼,有興趣的小伙伴可以自己動手試試~

在本次實例過程中,我們使用的數據是:2010-2018年間廣州市經濟與環境的時間序列資料,數據來源為《廣州市統計年鑒》及《國民經濟和社會發展統計公報》,感興趣的同學也可利用其它數據進行實例操作。(本次實驗的Excel數據附在文后)

一、歸一化(Normalization)

描述:

將數據映射到指定的范圍,如:把數據映射到0~1或-1~1的范圍之內處理。

作用:1、數據映射到指定的范圍內進行處理,更加便捷快速。

2、把有量綱表達式變成無量綱表達式,便于不同單位或量級的指標能夠進行比較和加權。經過歸一化后,將有量綱的數據集變成純量,還可以達到簡化計算的作用。

常見做法:Min-Max歸一化

python實現:

(1)導入數據并刪除我們不要的列:

import numpy as np

import pandas as pd

df=pd.read_excel('C://Users/Administrator/Desktop/data_py.xlsx',sheet_name='廣州',encoding='utf-8')

df.drop(columns="時間",axis=1,inplace=True)

df.set_index([[2010,2011,2012,2013,2014,2015,2016,2017,2018]],inplace=True)

df.drop(columns=['第二產業產值占比','第三產業產值占比','一般工業固體廢物綜合利用率'],axis=1,inplace=True)

(2)查看數據:

可以看到,數據前三列特征的數量級明顯大于后面的特征很多,如果這個時候我們想要利用這個數據表來衡量廣州市的發展情況時,地區生產總值、公共財政收入、人均生產總值這三項特征就會起到主導作用從而遮蓋住其他的特征,這樣的模型效果是很差的,因此我們可以通過歸一化來解決這個問題。

(3)Min-Max歸一化:

for i in list(df.columns):

# 獲取各個指標的最大值和最小值

Max = np.max(df[i])

Min = np.min(df[i])

df[i] = (df[i] - Min)/(Max - Min)

(4)查看歸一化結果:

二、標準化(Normalization)

注:在英文翻譯中,歸一化和標準化的翻譯是一致的,而在實際使用中,我們需要根據實際的公式(或用途)去理解~

數據標準化方法有多種,如:直線型方法(如極值法、標準差法)、折線型方法(如三折線法)、曲線型方法(如半正態性分布)。不同的標準化方法,對系統的評價結果會產生不同的影響。其中,最常用的是Z-Score 標準化。

Z-Score 標準化

其中,

為數據均值(mean),

為標準差(std)。

描述:

將原數據轉換為符合均值為0,標準差為1的標準正態分布的新數據。

作用:1、提升模型的收斂速度(加快梯度下降的求解速度)

2、提升模型的精度(消除量級和量綱的影響)

3、簡化計算(與歸一化的簡化原理相同)

python實現:

(1)(這里我們重置一下數據表df,避免實驗的偶然性)

from sklearn import preprocessing

df=pd.read_excel('C://Users/Administrator/Desktop/data_py.xlsx',sheet_name='廣州',encoding='utf-8')

df.drop(columns="時間",axis=1,inplace=True)

df.set_index([[2010,2011,2012,2013,2014,2015,2016,2017,2018]],inplace=True)

df.drop(columns=['第二產業產值占比','第三產業產值占比','一般工業固體廢物綜合利用率'],axis=1,inplace=True)

(2)Z-Score 標準化,最簡便、也是L推薦的方法是用:sklearn庫里的StandardScaler()。

實例化:

zscore = preprocessing.StandardScaler()

# zscore標準化

zscore = zscore.fit_transform(df)

查看標準化后的數據:

df_zscore = pd.DataFrame(zscore,index=df.index,columns=df.columns)

df_zscore

使用歸一化/標準化會改變數據原來的規律嗎?

歸一化/標準化實質是一種線性變換,線性變換有很多良好的性質,這些性質決定了對數據改變后不會造成“失效”,反而能提高數據的表現,這些性質是歸一化/標準化的前提。比如有一個很重要的性質:線性變換不會改變原始數據的數值排序。

如果是單純想實現消除量級和量綱的影響,用Min-Max還是用Z-Score?

1、數據的分布本身就服從正態分布,使用Z-Score。

2、有離群值的情況:使用Z-Score。

這里不是說有離群值時使用Z-Score不受影響,而是,Min-Max對于離群值十分敏感,因為離群值的出現,會影響數據中max或min值,從而使Min-Max的效果很差。相比之下,雖然使用Z-Score計算方差和均值的時候仍然會受到離群值的影響,但是相比于Min-Max法,影響會小一點。

當數據出現離群點時,用什么方法?

當數據中有離群點時,我們可以使用Z-Score進行標準化,但是標準化后的數據并不理想,因為異常點的特征往往在標準化后容易失去離群特征,此時就可以用RobustScaler 針對離群點做標準化處理。

三、Robust標準化(RobustScaler)

很多時候我們在機器學習中,或是其他模型都會經常見到一個詞:魯棒性。也就是Robust的音譯。

計算機科學中,健壯性(英語:Robustness)是指一個計算機系統在執行過程中處理錯誤,以及算法在遭遇輸入、運算等異常時繼續正常運行的能力。 諸如模糊測試之類的形式化方法中,必須通過制造錯誤的或不可預期的輸入來驗證程序的健壯性。很多商業產品都可用來測試軟件系統的健壯性。健壯性也是失效評定分析中的一個方面。

關于Robust,是這么描述的:

This Scaler removes the median(中位數) and scales the data according to the quantile range(四分位距離,也就是說排除了outliers).

Huber從穩健統計的角度系統地給出了魯棒性3個層面的概念:

一是模型具有較高的精度或有效性,這也是對于機器學習中所有學習模型的基本要求;

二是對于模型假設出現的較小偏差,只能對算法性能產生較小的影響;

主要是:噪聲(noise)

三是對于模型假設出現的較大偏差,不可對算法性能產生“災難性”的影響。

主要是:離群點(outlier)

在機器學習,訓練模型時,工程師可能會向算法內添加噪聲(如對抗訓練),以便測試算法的「魯棒性」。可以將此處的魯棒性理解述算法對數據變化的容忍度有多高。魯棒性并不同于穩定性,穩定性通常意味著「特性隨時間不變化的能力」,魯棒性則常被用來描述可以面對復雜適應系統的能力,需要更全面的對系統進行考慮。

使用方法

(1)和Z-Score一樣,進行實例化:

robust = preprocessing.RobustScaler()

# robust標準化處理

df_robust = robust.fit_transform(df)

(2)查看標準化后的數據:

df_robust = pd.DataFrame(df_robust,index=df.index,columns=df.columns)

df_robust

(在這里我們僅僅是做一個示范,并不是說當前這個數據表必須用Robust進行標準化)

實驗數據表:

鏈接:https://pan.baidu.com/s/1MOmda_0kDbwRNp9jJ0XOgw?pan.baidu.com

提取碼:5ca2

由于時間關系,剩下的內容我會在下次更新中一并補充~

以上便是的內容,感謝大家的細心閱讀,同時歡迎感興趣的小伙伴一起討論、學習,想要了解更多內容的可以看我的其他文章,同時可以持續關注我的動態~

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

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

相關文章

python實現自動打電話軟件_全自動手勢聯系軟件 讓你輕輕松松打電話

電話號碼超級多的童鞋們,由于手機里存儲的電話太多,每次要找某個人的電話很難找,有木有同感的?小編今天像大家推薦一款新潮的幫助你輕松找到想要的電話的模式,有沒有很想知道呢?其實小編本來是想賣個關子的…

電腦的虛擬服務器位置,如何配置基于IP地址的虛擬主機

滿意答案虛擬主機簡介:1. 把一臺運行在互聯網上的服務器分成多個虛擬的服務器。2. 每一個虛擬主機都具有獨立的域名和完整的Internet服務器(支持WWW,FTP,E-mail等)。3. 一臺服務器上的不同虛擬主機是各自獨…

VMware配置額外內存設置

配置額外內存設置 額外內存設置用于控制主機系統中的內存管理器如何將虛擬機從物理 RAM 中換出。 要配置額外內存設置,請選擇[編輯] > [首選項] > [內存]。 [調整所有虛擬機內存使其適應預留的主機 RAM] 選擇此選項會對給定時間內可以運行的虛擬機的數量和內…

Kafka.net使用編程入門(一)

最近研究分布式消息隊列,分享下! 首先zookeeper 和 kafka 壓縮包 解壓 并配置好! 我本機zookeeper環境配置如下: D:\Worksoftware\ApacheZookeeper3\conf\zoo.cfg 以下是kafka的配置 D:\Worksoftware\Apachekafka2.11\config\server.propert…

下拉推廣系統立擇火星推薦_下拉詞刪除都擇火星下拉

會員注冊發帖做推廣的人都離不開搜索引擎,就像魚離不開水,很多時候我們做SEO的朋友都在研究各大搜索引擎的機制,收錄,排名規則或者是黑帽技術,不管如何,只是希望把自己的企業,產品,服…

python包路徑有幾個_python的搜索路徑與包(package)

python的搜索路徑其實是一個列表,它是指導入模塊時,python會自動去找搜索這個列表當中的路徑,如果路徑中存在要導入的模塊文件則導入成功,否則導入失敗: >>> importsys>>>sys.path [, C:\\Python33\…

配置文件管理服務器,06-配置文件管理

1配置文件管理設備運行于FIPS模式時,本特性部分配置相對于非FIPS模式有所變化,具體差異請見本文相關描述。有關FIPS模式的詳細介紹請參見“安全配置指導”中的“FIPS”。1.1 配置文件簡介配置文件是用來保存配置的文件。配置文件主要用于: …

虛擬機安裝spark配置推薦

如果虛擬機配置的內存太少,spark運行計算的時候會報: WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster uito ensure that workers are registered and have sufficient memory 資源不足的問題,導…

c++輸入一個整數判斷是否為完全平方數_matlab判斷一個整數是完全平方數

(C語言c)判斷一個數是否是 完全平方數的 整數倍#include#includeint ispow(int x){ int&用c編判斷一個數是否是完全數#include#includeintmain(){intn;printf("請輸入一個數,然后按回車鍵:\n");scanf("%d",&n);inti,p1;for(i2;i*i編…

Linux常用命令——chattr、lsattr

chattr 改變文件的擴展屬性 語法格式:chattr 【option】【mode】【files】chattr [選項] [模式] [文件或目錄]注意:chattr 命令及后面的選項和文件里,每個元素之間都要至少要有一個空格參數選項: 參數選項解釋說明-a只能向文件中…

兩個相鄰盒子的邊框怎么只顯示一個_【前端小課堂】0044 盒子

這是一個面向零基礎的前端教程,很簡單,用零散時間就可以學習。 推薦早上讀一下,晚上復習一下,如果可以奢侈一點,白天稍微練習一下下,總共花費 5~15 分鐘。就醬!已經好幾次提到塊(block)元素了&a…

scala apply方法 筆記

原文出處:http://blog.csdn.net/pzw_0612/article/details/48576569 ----------------------------------------------------- Scala比Java更面向對象的一個方面是Scala沒有靜態成員。替代品是,Scala有單例對象:singleton object。 當單例對…

轉:6.1海量數據處理

本文轉自看云,原文地址請移步:https://www.kancloud.cn/kancloud/the-art-of-programming/41608 偶然閑游,偶遇某一站點,發現這里寫的關于海量數據處理相關的思路還挺不錯,所以在這里采摘收藏,如有侵權之處還請評論區或…

python爬去中國天氣網_python爬取中國天氣網并展示最低溫度

import requestsfrom bs4 import BeautifulSoupimport lxmlimport jsonfrom echarts import Echart,Bar,Axisimport time#城市與溫度的集合weather_list []#城市集合city_list []#溫蒂集合lowest_list []#獲取溫度def getTemperature(url):result requests.get(url)#print r…

flash一個按鈕控制動畫_flutter閃屏過渡動畫,閃光占位動畫

在程序設計的理念中,講究一切都來源于物理世界,在現實世界中,人們在每接觸到一個新的事物或者說在手指觸碰到一個事物時,總是心里默許期望有一個反饋效果,這就是來源于心底深處常常被人忽略的一個潛在期望。在程序的世…

scala-wordcount

/* * Mapreduce步驟 * 1、map&#xff1a;獲取一行 * 2、按空格分隔 * 3、每個單詞統計&#xff0c;<key,1> 輸出到 reducer * 4、reducer <key,{1,1,1,1,1}> 匯總 * 5、輸出結果 */ 1、聲明一個集合&#xff0c;模仿要統計的…

動態改變_Excel中如何動態改變可編輯區域?

有這樣一個工作場景&#xff1a;我們制作一個工作報表模板給同事填寫數據&#xff0c;這個工作表格只可以在預設的可編輯區域編輯&#xff0c;其它都是受密碼保護的&#xff0c;而且這個可編輯區域是隨著日期——工作周的變化而發生變化的。也就是說在不同的工作周可編輯的區域…

java集合框架之ArrayList與LinkedList的區別

參考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedList的區別 ArrayList 插入&#xff0c;刪除數據慢LinkedList&#xff0c; 插入&#xff0c;刪除數據快ArrayList是順序結構&#xff0c;所以定位很快&#xff0c;指哪…

python語言是由誰設計并領導開發的_python語言概述 - osc_lt3ocv4d的個人空間 - OSCHINA - 中文開源技術交流社區...

python語言的發展 python語言誕生于1990年&#xff0c;由Guide van Rossum設計并領導開發。 python語言是開源項目的優秀代表&#xff0c;其解釋器的全部代碼都是開源的。 編寫Hello程序 學習編程語言有一個慣例&#xff0c;即運行最簡單的Hello程序&#xff0c;該程序功能是在…

Spark集群安裝

Spark是獨立的&#xff0c;所以集群安裝的時候&#xff0c;不像hive&#xff0c;hbase等需要先安裝hadoop&#xff0c;除非文件保存在hadoop上&#xff0c;才需要安裝hadoop集群。 如果虛擬機安裝&#xff0c;點擊閱讀推薦配置 前提環境&#xff1a; 1、安裝了JDK1.7及以上版…