機器學習sklearn(44): 資料處理(七) 資料無量綱化/缺失值
阿新 • • 發佈:2021-06-24
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()