資料預處理

2021-10-12 04:19:03 字數 2396 閱讀 5154

缺失值填充

獨熱變數

標準化分箱

預處理的重要性:無論是分類還是**,都可以提高準確率

字串轉數值型

字串分類變數一般都是object

x = rawdata.iloc[:,

0:-1

]x.dtypes

"object"

for col in x.columns:

if x[col]

.dtype ==

"o":

x[col]

= pd.categorical(x[col]

).codes

好處是快,缺點是不知道對映的規則是啥。如果想要自定義——

x["marital"

]= x[

"marital"].

map或者:

x.replace(

dict

(primary=

1, secondary=

2, tertiary=3)

, inplace=

true

)dataset.loc[:,

"contact"

].replace(

dict

(cellular=

0, telephone=1)

, inplace=

true

)

如果類別特別多可以採用以下方法——

x["job"

]= x[

"job"].

mapprint

(enumerate

(set

(x["job"])

))可以通過set(x["job"])觀察對應關係,缺點是不能自定義

直接檢視資料集,replace即可

dataset[

"job"

].value_counts(

) dataset.loc[:,

"job"

].replace(np.nan,

"blue-collar"

, inplace=

true

)

必須在編碼之後完成。原理是取最相似的n個樣本在該屬性下的平均值。

from sklearn.impute import knnimputer

imputer = knnimputer(n_neighbors=5)

dataset_knn = pd.dataframe(imputer.fit_transform(dataset)

, columns=dataset.columns)

注意:

fit_transform得到新的np.array,需要重新賦值;

sklearn庫自帶的knnimputer似乎只能取平均值,不能取頻次最多的數。所以不適合分類變數。

對分類變數的處理:(四捨五入了一下)

dataset_knn.loc[:,

"education"

]= np.

round

(dataset_knn[

"education"

], decimals=

0)

注意:pandas dataframe dtype必須是「o」。字串可以,數值不行

把所有的object都變成獨熱變數

y = pd.get_dummies(y)
屬性取值多的話時間較長。

from sklearn.preprocessing import standardscaler

dataset.loc[:,

"age"

]= standardscaler(

).fit_transform(np.array(dataset[

"age"])

.reshape(-1

,1))

reshape(-1,1)的作用是把array打平成1列(2維array)

基本是按照經驗來分。cut等寬,qcut等頻

age = pd.cut(x[

"age"],

10, labels=[1

,2,3

,4,5

,6,7

,8,9

,10])

balance = pd.qcut(x[

"balance"],

5, labels=[1

,2,3

,4,5

])

資料預處理

現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...

資料預處理

常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...

資料預處理

用cut函式分箱 有時把數值聚集在一起更有意義。例如,如果我們要為交通狀況 路上的汽車數量 根據時間 分鐘資料 建模。具體的分鐘可能不重要,而時段如 上午 下午 傍晚 夜間 深夜 更有利於 如此建模更直觀,也能避免過度擬合。這裡我們定義乙個簡單的 可復用的函式,輕鬆為任意變數分箱。def binni...