sklearn進行資料縮放與標準化

2021-09-28 22:17:19 字數 1960 閱讀 4674

縮放資料: 

import numpy as np

np.random.seed(10)

x=np.matrix([np.random.randint(10,25)*1.0 for i in range(10)])

x=x.t

#minmaxscaler縮放,移動資料使得所有特徵都剛好位於0到1之間

from sklearn.preprocessing import minmaxscaler

minmax=minmaxscaler(feature_range=(0.0,1.0))

print(x)

x_t=minmax.fit_transform(x)

print(x_t)

#standardscaler縮放,確保每個特徵的平均值為0,方差為1,使得所有特徵都位於同一量級,

from sklearn.preprocessing import standardscaler

#匯入資料集

from sklearn.datasets import load_breast_cancer

cancer=load_breast_cancer()

scaler=standardscaler()

scaler.fit(cancer.data)

x_scaled=scaler.transform(cancer.data)

print(x_scaled)

#上面兩句話可以合併為x_scaled=scaler.fit_transform(cancer.data)

#robustscaler與上面是類似,也是確保每個特徵的統計屬性都位於同一範圍,但是它使用的是中位數呵四分位數而不是平均值和方差

#這樣的話,robustscaler會忽略與其他點有很大不同的資料點,比如測量誤差

from sklearn.preprocessing import robustscaler

scaler1=robustscaler()

x_scaled1=scaler1.fit_transform(cancer.data)

print(x_scaled1)

#normalizer用到一種完全不同的縮放方法,他對每個資料點進行縮放,使得特徵向量的歐式長度等於1,換句話說,他將乙個資料點投射到

#半徑為1的圓上,(對於高維度來說是球面),這意味著每個資料點的縮放比例都不相同(乘以長度的倒數),如果只是資料的方向是重要的

#而特徵向量的長度無關緊要,那麼通常會使用這種歸一化

from sklearn.preprocessing import normalizer

scaler2=normalizer()

x_scaled2=scaler2.fit_transform(cancer.data)

print(x_scaled2)

標準化:

import numpy as np

from sklearn.preprocessing import scale

#生成輸入資料

np.random.seed(10)# 隨機種子

x=[np.random.randint(10,25)*1.0 for i in range(10)]

print(x)

#x=list(np.random.randint(10,25,10)*1.0)等效上一句

#標準化操作

#只使用平均值進行縮放

x_centered=scale(x,with_mean=true,with_std=false)

#使用平均值和標準差來對資料進行標準化

x_standard=scale(x,with_mean=true,with_std=true)

#初始的x平均值為***,標準化之後為0.00,標準化差為1.00

print(x_centered)

print(x_standard)

sklearn進行資料分析

呼叫線性回歸函式 from sklearn.linear model import linearregression 匯入資料集 這裡將全部資料用於訓練,並沒有對資料進行劃分,上例中 將資料劃分為訓練和測試資料,後面會講到交叉驗證 loaded data datasets.load boston d...

PHP與Python進行資料互動

個人部落格同步文章 最近,決定在乙個專案用python做資料分析,然後這就面臨乙個問題 php和python如何進行資料互動?我解決此問題的方法是利用了php的passthru函式來呼叫命令執行python指令碼。在php中呼叫命令執行python指令碼 params value 傳遞給python...

C 與IronPython指令碼進行資料互動示例

單單執行指令碼是沒有什麼意思的,最重要的是嵌入的指令碼能和宿主語言進行互動,下面我就講講這方面的實現。ironpython指令碼最優秀的地方就是與c 或者說.net框架集 幾乎無縫整合,c 實現的類很容易就傳入到指令碼中去。目前唯感遺憾的是,ironpython指令碼還沒有支援嵌入版,希望不遠的的將...