學習筆記:數(shù)據(jù)預處理

數(shù)據(jù)歸一化
Preprocessing.MinMaxScaler
公式 (x-min(x))/(max(x)-min(x))

import numpy as np
from sklearn.preprocessing import MinMaxScaler
# MinMaxScaler (x-min(x))/(max(x)-min(x))

data=np.random.randint(1,10,5)

scaler=MinMaxScaler()
res=scaler.fit_transform(data)

#復原
scaler.inverse_transform(res)

#feature_range數(shù)據(jù)壓縮范圍 默認[0,1]
scaler=MinMaxScaler(feature_range=[1,2])
res=scaler.fit_transform(data)

Preprocessing.StandardScaler

from sklearn.preprocessing import StandardScaler
import numpy as np

data=np.random.randint(1,10,6)
data=data.reshape(2,-1)

scaler=StandardScaler()
res=scaler.fit_transform(data)

scaler.mean_
scaler.var_

res.mean()
res.std()

scaler.inverse_transform(res)

SimpleImputer 填充空缺值 strategy= median/mean/most_frequent/constant

from sklearn.impute import SimpleImputer

Age=data.loc[:, 'Age'].values.reshape(-1,1)

imp_mean=SimpleImputer()
imp_median=SimpleImputer(strategy='median')
imp_0=SimpleImputer(strategy='constant', fill_value=0)

imp_mean=imp_mean.fit_transform(Age)
imp_median=imp_median.fit_transform(Age)
imp_0=imp_0.fit_transform(Age)


Embarked=data.loc[:, 'Embarked'].values.reshape(-1,1)
imp_most=SimpleImputer(strategy='most_frequent')
data.loc[:, 'Embarked']=imp_most.fit_transform(Embarked)

LabelEncoder 標簽類使用

from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
label=le.fit_transform(data['Embarked'])

le.classes_

le.inverse_transform(label)

OrdinalEncoder

from sklearn.preprocessing import OrdinalEncoder

data.iloc[:,1:-1]=OrdinalEncoder().fit_transform(data.iloc[:,1:-1])

OneHotEncoder 轉(zhuǎn)化為獨熱碼

from sklearn.preprocessing import OneHotEncoder

X= data['Sex']
X=pd.DataFrame(X).dropna()

enc=OneHotEncoder(categories='auto')
res=enc.fit_transform(X).toarray()

enc.get_feature_names()

Binarizer 二值化

from sklearn.preprocessing import Binarizer
import pandas as pd
X=data.iloc[:,0].values.reshape(-1,1)
X=pd.DataFrame(X).dropna()
transformer=Binarizer(threshold=30).fit_transform(X)

KBinsDiscretizer

from sklearn.preprocessing import KBinsDiscretizer

kbd=KBinsDiscretizer(n_bins=3, encode='onehot-dense', strategy='uniform')
kbd.fit_transform(X)

特征過濾
方差過濾 颜凯,以整個特征列的方差計算, 通常選擇閾值=0或是很小的閾值

import numpy as np
from sklearn.feature_selection import VarianceThreshold
selector=VarianceThreshold()
#默認刪除方差小于0的特征(列)
X_var0=selector.fit_transform(X)
X_var0

#刪除方差小于中位數(shù)的特征(列)
var_selector=VarianceThreshold(np.median(X.var().values)).fit_transform(X)

還有根據(jù)數(shù)據(jù)分布過濾 例如卡方過濾 得糜, 用到再看吧

特征選擇 SelectFromModel

from sklearn.linear_model import LogisticRegression as LR
from sklearn.datasets import load_breast_cancer
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import cross_val_score
from sklearn.feature_selection import SelectFromModel

data=load_breast_cancer()
X=data.data
y=data.target

lr=LR(penalty='l2', solver='liblinear', C=0.5)
cross_val_score(lr, X, y, cv=10).mean()
X.shape

X_embedded=SelectFromModel(LR_, norm_order=1).fit_transform(X, y)
cross_val_score(LR_, X_embedded, y, cv=10).mean()
X_embedded.shape

隨機森林回歸填充缺失值

from sklearn.linear_model import LogisticRegression as LR
from sklearn.datasets import load_breast_cancer
import numpy as np
from sklearn.metrics import accuracy_score
import pandas as pd
from sklearn.ensemble import RandomForestRegressor

data=load_breast_cancer()
X=data.data
y=data.target

X.shape

nan_index=np.random.randint(0,569, 30)
X[nan_index,3]=np.nan

X=pd.DataFrame(X)
y=pd.DataFrame(y)

y_fill=X.iloc[:,3]
y_fill.shape

y_train=y_fill[y_fill.notnull()]
y_train.shape

y_test=y_fill[y_fill.isnull()]
y_test.shape

data=pd.concat([X.iloc[:, X.columns!=3], y])

X_train=data.iloc[y_train.index, :]
X_train.shape

X_test=data.iloc[y_test.index, :]
X_test.shape

rfc=RandomForestRegressor(n_estimators=100)
rfc.fit(X_train, y_train)
pred=rfc.predict(X_test)

#填充缺失值
X.loc[X.loc[:,3].isnull(),3]=pred
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末床蜘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子油航,更是在濱河造成了極大的恐慌崭庸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谊囚,死亡現(xiàn)場離奇詭異怕享,居然都是意外死亡,警方通過查閱死者的電腦和手機镰踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門函筋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奠伪,你說我怎么就攤上這事跌帐。” “怎么了绊率?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵谨敛,是天一觀的道長。 經(jīng)常有香客問我滤否,道長脸狸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任藐俺,我火速辦了婚禮炊甲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欲芹。我一直安慰自己蜜葱,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布耀石。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滞伟。 梳的紋絲不亂的頭發(fā)上揭鳞,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音梆奈,去河邊找鬼野崇。 笑死,一個胖子當著我的面吹牛亩钟,可吹牛的內(nèi)容都是我干的乓梨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼清酥,長吁一口氣:“原來是場噩夢啊……” “哼扶镀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起焰轻,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臭觉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辱志,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝠筑,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年揩懒,在試婚紗的時候發(fā)現(xiàn)自己被綠了什乙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡已球,死狀恐怖臣镣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情和悦,我是刑警寧澤退疫,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站鸽素,受9級特大地震影響褒繁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馍忽,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一棒坏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遭笋,春花似錦坝冕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春磨澡,著一層夾襖步出監(jiān)牢的瞬間碗啄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工稳摄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稚字,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓厦酬,卻偏偏與公主長得像胆描,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仗阅,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容