1. 程式人生 > 其它 >機器學習sklearn(44): 資料處理(七) 資料無量綱化/缺失值

機器學習sklearn(44): 資料處理(七) 資料無量綱化/缺失值

1 資料無量綱化

from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
#不太熟悉numpy的小夥伴,能夠判斷data的結構嗎?
#如果換成表是什麼樣子?
import pandas as pd
pd.DataFrame(data) #實現歸一化
scaler = MinMaxScaler() #例項化
scaler = scaler.fit(data) #fit,在這裡本質是生成min(x)和max(x)
result = scaler.transform(data) #
通過介面匯出結果 result result_ = scaler.fit_transform(data) #訓練和匯出結果一步達成 scaler.inverse_transform(result) #將歸一化後的結果逆轉 #使用MinMaxScaler的引數feature_range實現將資料歸一化到[0,1]以外的範圍中 data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler = MinMaxScaler(feature_range=[5,10]) #依然例項化 result = scaler.fit_transform(data) #fit_transform一步匯出結果
result #當X中的特徵數量非常多的時候,fit會報錯並表示,資料量太大了我計算不了 #此時使用partial_fit作為訓練介面 #scaler = scaler.partial_fit(data)
from sklearn.preprocessing import StandardScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = StandardScaler() #例項化
scaler.fit(data) #fit,本質是生成均值和方差
scaler.mean_ #檢視均值的屬性mean_
scaler.var_ #
檢視方差的屬性var_ x_std = scaler.transform(data) #通過介面匯出結果 x_std.mean() #匯出的結果是一個數組,用mean()檢視均值 x_std.std() #用std()檢視方差 scaler.fit_transform(data) #使用fit_transform(data)一步達成結果 scaler.inverse_transform(x_std) #使用inverse_transform逆轉標準化

2 缺失值

import pandas as pd
data = pd.read_csv(r"C:\work\learnbetter\micro-class\
 week 3 Preprocessing\Narrativedata.csv",index_col=0)
data.head()
data.info()
#填補年齡
Age = data.loc[:,"Age"].values.reshape(-1,1) #sklearn當中特徵矩陣必須是二維
Age[:20]
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer() #例項化,預設均值填補
imp_median = SimpleImputer(strategy="median") #用中位數填補
imp_0 = SimpleImputer(strategy="constant",fill_value=0) #用0填補
imp_mean = imp_mean.fit_transform(Age) #fit_transform一步完成調取結果
imp_median = imp_median.fit_transform(Age)
imp_0 = imp_0.fit_transform(Age)
imp_mean[:20]
imp_median[:20]
imp_0[:20] #在這裡我們使用中位數填補Age
data.loc[:,"Age"] = imp_median
data.info()
#使用眾數填補Embarked
Embarked = data.loc[:,"Embarked"].values.reshape(-1,1)

imp_mode = SimpleImputer(strategy = "most_frequent")
data.loc[:,"Embarked"] = imp_mode.fit_transform(Embarked)
data.info()