1. 程式人生 > >scikit-learn中KNN演算法資料歸一化的分裝

scikit-learn中KNN演算法資料歸一化的分裝

import numpy as np

class StandardScaler:
    def __init__(self):
        """初始化"""
        """用符號和下劃線表示非使用者傳入的引數"""
        self.mean_ = None
        self.std_ = None

    def fit(self,X):
        """根據訓練資料獲得每一列的均值和方差"""
        """只處理2維的資料"""
        assert X.ndim == 2
        self.mean_ = np.array([np.mean(X[:,i]) for i in X.shape[1]])
        self.std_ = np.array([np.std(X[:,i]) for i in X.shape[1]])
        return  self

    def transform(self,X):
        """根據公式和求的均值方差求出資料歸一化的矩陣"""
        assert X.ndim  == 2
        assert self.mean_ and self.std_ is not None
        """建立一個和X大小,資料型別一樣的矩陣,用來存放歸一化後的資料"""
        resx = np.empty(shape = X.shape,dtype= float)
        for col in range(X.shape[1]):
            resx[:,col] = (X[:,col] - self.mean_[col]) /self.std_[col]
        return resx

只涉及到了均值方差的方法