欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用pandas模塊實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化操作

 更新時(shí)間:2021年05月14日 11:29:30   作者:也許會(huì)_hui  
這篇文章主要介紹了使用pandas模塊實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如下所示:

3σ 原則 (u-3*σ ,u+3*σ )
離差標(biāo)準(zhǔn)化 (x-min)/(max-min)
標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化 (x-u)/σ
小數(shù)定標(biāo)標(biāo)準(zhǔn)化

x/10**k

k=np.ceil(log10(max(|x|)))

1.3σ原則

u 均值

σ 標(biāo)準(zhǔn)差

正太分布的數(shù)據(jù)基本都分布在(u-3σ,u+3σ)范圍內(nèi)

其他的數(shù)據(jù)

import pandas as pd
import numpy as np
def three_sigma(se):
    """
    自實(shí)現(xiàn)3σ原則,進(jìn)行數(shù)據(jù)過(guò)濾
    :param se:傳進(jìn)來(lái)的series結(jié)構(gòu)數(shù)據(jù)
    :return:去除異常值之后的series數(shù)據(jù)
    """
    bool_id=((se.mean()-3*se.std())<se) & (se<(se.mean()+3*se.std()))
    print(bool_id)
    return se[bool_id]
 
#加載數(shù)據(jù)
detail=pd.read_excel('./meal_order_detail.xlsx')
#進(jìn)行異常值處理
res=three_sigma(detail['amounts'])
print(detail.shape)
print(res.shape)

2.離差標(biāo)準(zhǔn)化

(x-min)/(max-min)
import pandas as pd
import numpy as np
 
def minmax_sca(data):
    """
    離差標(biāo)準(zhǔn)化
    param data:傳入的數(shù)據(jù)
    return:標(biāo)準(zhǔn)化之后的數(shù)據(jù)
    """
    new_data=(data-data.min())/(data.max()-data.min())
    return new_data
 
#加載數(shù)據(jù)
detail=pd.read_excel('./meal_order_detail.xlsx')
res=minmax_sca(detail[['amounts','counts']])
print(res)
data=res
bool_id=data.loc[:,'count']==1
print(data.loc[bool_id],'counts')

3.標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化

(x-u)/σ

異常值對(duì)標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化的影響不大

轉(zhuǎn)化之后的數(shù)據(jù)--->均值0 標(biāo)準(zhǔn)差1

import pandas as pd
import numpy as np
def stand_sca(data):
    """
    標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化
    :param data:傳入的數(shù)據(jù)
    :return:標(biāo)準(zhǔn)化之后的數(shù)據(jù)
    """
    new_data=(data-data.mean())/data.std()
    return new_data
 
#加載數(shù)據(jù)
detail=pd.read_excel('./meal_order_detail.xlsx')
res=stand_sca(detail[['amounts','counts']])
print(res)
print('res的均值:',res.mean())
print('res的標(biāo)準(zhǔn)差:',res.std())

4.小數(shù)定標(biāo)標(biāo)準(zhǔn)化

x/(10^k)
k=math.ceil(log10(max(|x|)))

以10為底,x的絕對(duì)值的最大值的對(duì)數(shù) 最后進(jìn)行向上取整

import pandas as pd
import numpy as np
def deci_sca(data):
    """
    自實(shí)現(xiàn)小數(shù)定標(biāo)標(biāo)準(zhǔn)化
    :param data: 傳入的數(shù)據(jù)
    :return: 標(biāo)準(zhǔn)化之后的數(shù)據(jù)
    """
    new_data=data/(10**(np.ceil(np.log10(data.abs().max()))))
    return new_data
#加載數(shù)據(jù)
detail = pd.read_excel('./meal_order_detail.xlsx')
res = deci_sca(detail[['amounts', 'counts']])
print(res)

補(bǔ)充:pandas數(shù)據(jù)處理基礎(chǔ)之標(biāo)準(zhǔn)化與標(biāo)簽數(shù)值化

fit(): Method calculates the parameters μ and σ and saves them as internal objects.

解釋:簡(jiǎn)單來(lái)說(shuō),就是求得訓(xùn)練集X的均值,方差,最大值,最小值,這些訓(xùn)練集X固有的屬性。

transform(): Method using these calculated parameters apply the transformation to a particular dataset.

解釋:在fit的基礎(chǔ)上,進(jìn)行標(biāo)準(zhǔn)化,降維,歸一化等操作(看具體用的是哪個(gè)工具,如PCA,StandardScaler等)。

fit_transform(): joins the fit() and transform() method for transformation of dataset.

解釋:fit_transform是fit和transform的組合,既包括了訓(xùn)練又包含了轉(zhuǎn)換。 transform()和fit_transform()二者的功能都是對(duì)數(shù)據(jù)進(jìn)行某種統(tǒng)一處理(比如標(biāo)準(zhǔn)化~N(0,1),將數(shù)據(jù)縮放(映射)到某個(gè)固定區(qū)間,歸一化,正則化等)

fit_transform(trainData)對(duì)部分?jǐn)?shù)據(jù)先擬合fit,找到該part的整體指標(biāo),如均值、方差、最大值最小值等等(根據(jù)具體轉(zhuǎn)換的目的),然后對(duì)該trainData進(jìn)行轉(zhuǎn)換transform,從而實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化等等。

Note:

必須先用fit_transform(trainData),之后再transform(testData)

如果直接transform(testData),程序會(huì)報(bào)錯(cuò)

如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),雖然也能歸一化,但是兩個(gè)結(jié)果不是在同一個(gè)“標(biāo)準(zhǔn)”下的,具有明顯差異。(一定要避免這種情況)

注意:StandardScaler().fit_transform(x,fit_params),fit_params決定標(biāo)準(zhǔn)化的標(biāo)簽數(shù)據(jù),就是每個(gè)標(biāo)準(zhǔn)化的標(biāo)桿數(shù)據(jù),此參數(shù)不同,則每次標(biāo)準(zhǔn)化的過(guò)程則不同。

from sklearn import preprocessing
# 獲取數(shù)據(jù)
cols = ['OverallQual','GrLivArea', 'GarageCars','TotalBsmtSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt'] ##選取列
x = data_train[cols].values
y = data_train['SalePrice'].values  
x_scaled = preprocessing.StandardScaler().fit_transform(x) ##進(jìn)行歸一化
y_scaled = preprocessing.StandardScaler().fit_transform(y.reshape(-1,1))##先將y轉(zhuǎn)換成一列,再進(jìn)行歸一
 

還有以下形式,和上面的標(biāo)準(zhǔn)化原理一致,都是先f(wàn)it,再transform。

由ss決定標(biāo)準(zhǔn)化進(jìn)程的獨(dú)特性

# 先將數(shù)據(jù)標(biāo)準(zhǔn)化
from sklearn.preprocessing import StandardScaler
ss = StandardScaler() ##
#用測(cè)試集訓(xùn)練并標(biāo)準(zhǔn)化
ss.fit(missing_age_X_train)##首先f(wàn)it
missing_age_X_train = ss.transform(missing_age_X_train) #進(jìn)行transform
missing_age_X_test = ss.transform(missing_age_X_test)

標(biāo)簽數(shù)值化

1.當(dāng)某列數(shù)據(jù)不是數(shù)值型數(shù)據(jù)時(shí),將難以標(biāo)準(zhǔn)化,此時(shí)要將數(shù)據(jù)轉(zhuǎn)化成數(shù)據(jù)型形式。

數(shù)據(jù)處理前數(shù)據(jù)顯示:

經(jīng)過(guò)標(biāo)簽化數(shù)據(jù)處理

from sklearn import preprocessing
f_names = ['CentralAir', 'Neighborhood'] ##需要處理的數(shù)據(jù)標(biāo)簽 
for x in f_names:
    label = preprocessing.LabelEncoder()
    data_train[x] = label.fit_transform(data_train[x]) ##數(shù)據(jù)標(biāo)準(zhǔn)化

處理之后變成:

2.當(dāng)某列有對(duì)應(yīng)的標(biāo)簽值時(shí),即某個(gè)量對(duì)應(yīng)相應(yīng)確定的標(biāo)簽時(shí),例如oldtown就對(duì)應(yīng)1,sawyer就對(duì)應(yīng)2,分類的str轉(zhuǎn)換為序列類這時(shí)使用如下:

數(shù)據(jù)處理之前

利用轉(zhuǎn)換:

title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}#將標(biāo)簽對(duì)應(yīng)數(shù)值
train_df['Title'] = train_df['Title'].map(title_mapping)#處理數(shù)據(jù)
train_df['Title'] = train_df['Title'].fillna(0)##將其余標(biāo)簽填充為0值

處理過(guò)后:

3.多個(gè)數(shù)據(jù)標(biāo)簽需要分列采用one_hot形式時(shí),處理之前

處理之后

train_test.loc[train_test["Age"].isnull() ,"age_nan"] = 1 ##將標(biāo)簽轉(zhuǎn)換成1
train_test.loc[train_test["Age"].notnull() ,"age_nan"] = 0##將此標(biāo)簽成為0
train_test = pd.get_dummies(train_test,columns=['age_nan']) ##columns決定哪幾行分列處理,prefix參數(shù)是每列前綴

one_hot 形式轉(zhuǎn)變成功。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python RabbitMQ 使用詳細(xì)介紹(小結(jié))

    python RabbitMQ 使用詳細(xì)介紹(小結(jié))

    這篇文章主要介紹了python RabbitMQ 使用詳細(xì)介紹(小結(jié)),詳細(xì)的介紹了RabbitMQ的概念以及使用,對(duì)學(xué)習(xí)RabbitMQ有一定的幫助,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • python實(shí)現(xiàn)mean-shift聚類算法

    python實(shí)現(xiàn)mean-shift聚類算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)mean-shift聚類算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Python 制作查詢商品歷史價(jià)格的小工具

    Python 制作查詢商品歷史價(jià)格的小工具

    這篇文章主要介紹了Python 如何制作查詢商品歷史價(jià)格的小工具,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-10-10
  • python算法練習(xí)之兔子產(chǎn)子(斐波那切數(shù)列)

    python算法練習(xí)之兔子產(chǎn)子(斐波那切數(shù)列)

    這篇文章主要給大家介紹python算法練習(xí)兔子產(chǎn)子,文章先進(jìn)行問(wèn)題描述及分析然后設(shè)計(jì)算法最后再得出完整程序,需要的朋友可以參考一下 文章得具體內(nèi)容
    2021-10-10
  • python3 Scrapy爬蟲框架ip代理配置的方法

    python3 Scrapy爬蟲框架ip代理配置的方法

    Scrapy是用python實(shí)現(xiàn)的一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。使用Twisted高效異步網(wǎng)絡(luò)框架來(lái)處理網(wǎng)絡(luò)通信。這篇文章主要介紹了python3 Scrapy爬蟲框架ip代理配置,需要的朋友可以參考下
    2020-01-01
  • python使用正則表達(dá)式匹配txt特定字符串(有換行)

    python使用正則表達(dá)式匹配txt特定字符串(有換行)

    這篇文章主要給大家介紹了關(guān)于python使用正則表達(dá)式匹配txt特定字符串的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python3.6使用tesseract-ocr的正確方法

    Python3.6使用tesseract-ocr的正確方法

    今天小編就為大家分享一篇關(guān)于Python3.6使用tesseract-ocr的正確方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • 使用Python3編寫抓取網(wǎng)頁(yè)和只抓網(wǎng)頁(yè)圖片的腳本

    使用Python3編寫抓取網(wǎng)頁(yè)和只抓網(wǎng)頁(yè)圖片的腳本

    這篇文章主要介紹了使用Python3編寫抓取網(wǎng)頁(yè)和只抓網(wǎng)頁(yè)圖片的腳本,使用到了urllib模塊,需要的朋友可以參考下
    2015-08-08
  • DRF跨域后端解決之django-cors-headers的使用

    DRF跨域后端解決之django-cors-headers的使用

    這篇文章主要介紹了DRF跨域后端解決之django-cors-headers的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談Python中數(shù)據(jù)解析

    淺談Python中數(shù)據(jù)解析

    本文給大家介紹的是Python中的數(shù)據(jù)解析的集中方式,包括列表解析、字典解析、集合解析,并附上相關(guān)示例,有需要的小伙伴可以參考下。
    2015-05-05

最新評(píng)論