1. 程式人生 > 其它 >資料預處理:sklearn-preprocessing

資料預處理:sklearn-preprocessing

  1. preprocessing.scale(x)

    去均值的中心化(均值變為0);方差的規模化(方差變為1)。

  2. # 這是相當好的一個功能。可以對訓練資料,測試資料應用相同的轉換,以後有新的資料進來也可以直接呼叫,不用再重新把資料放在一起再計算一次了。
    # 呼叫fit方法,根據已有的訓練資料 x 建立一個標準化的轉換器
    # 另外,StandardScaler()中可以傳入兩個引數:with_mean,with_std.這兩個都是布林型的引數,
    # 預設情況下都是true,但也可以自定義成false.即不要均值中心化或者不要方差規模化為1.

    scaler = preprocessing.StandardScaler().fit(x)

    # 好了,比如現在又來了一組新的樣本,也想得到相同的轉換
    new_x = [[-1., 1., 0.]]

    scaler.transform(new_x)


  3. x_normalized = preprocessing.normalize(x, norm='l2')

    函式normalize 提供了一個快速有簡單的方式在一個單向量上來實現這正則化的功能。正則化有l1,l2等。

  4. x = np.array([[1., -1., 2.],
                  [2., 0., 0.],
                  [0., 1., -1.]])
    
    binarizer = preprocessing.Binarizer(threshold=1.5)
    binarizer.transform(x)

    將數值型的特徵資料轉換成0,1的值。

  5. enc = preprocessing.OneHotEncoder()
    enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])    # fit來學習編碼
    enc.transform([[0, 1, 3]]).toarray()    # 進行編碼

    OneHot Encoder

  6. from sklearn.Imputer import SimpleImputer
    imp = preprocessing.Imputer(missing_values=np.nan, strategy='mean')

    x_0 =
    [[1, 2], [np.nan, 3], [7, 6]]
    imp.fit(x_0)
    
    x = [[np.nan, 2], [6, np.nan], [7, 6]]
    imp.transform(x)  # 填補值為x_0各列的均值

    #
    imp.fit_transform(x) 相當於 fit() + transform()
    
    
    

    彌補缺失資料

  7. sex = pd.Series(["male", "female", "female", "male"])
    
    le = preprocessing.LabelEncoder()    #獲取一個LabelEncoder
    le = le.fit(["male", "female"])      #訓練LabelEncoder, 把male編碼為0,female編碼為1
    sex = le.transform(sex)    #使用訓練好的LabelEncoder對原資料進行編碼
    print(sex)
    
    # [1 0 0 1]
    
    le.inverse_transform([1,0,0,1])
    
    # array(['male', 'female', 'female', 'male'], dtype='<U6')

    將n個類別編碼為0~n-1之間的整數(包含0和n-1)。

參考連結:

https://blog.csdn.net/weixin_40807247/article/details/82793220

https://www.cnblogs.com/sench/p/10134094.html