類內的全局變量有\[X,y,y\_{required},fit_{required}\]python
\[X,y\]經過__setup_input()方法將\[X,y\]變爲numpy.ndarray類型數組
若是輸入數據沒有\[y\], 則\[y\_{required} = False\]ui
處理輸入數據\[X\]的步驟以下:
1. 若X不是numpy.ndarray類型,則轉換類型;
2. 若X爲空數組,則提示值錯誤;
3. 若X的維數爲1,則X的樣本數爲1,X的特徵數目爲X.shape[0];
4. 若X的維數不爲1,則X的樣本數爲X.shape[0],X的特徵數目爲其餘維數的長度之積。
若是輸入了\[y\],則對\[y\]處理的步驟以下:
1. 若須要輸入y卻沒有輸入y,則提示錯誤;
2. 若X不是numpy.ndarray類型,則轉換類型;
3. 若輸入了y,可是大小爲0,則提示錯誤。
spa
# coding: utf-8 import numpy as np class BaseEstimator(Object): X = None y = None y_required = True fit_required = True def __setup_input(self,X,y=None): if not isinstance(X,np.ndarray): X = np.array(X) if X.size == 0: raise ValueError('Number of feautures must be > 0 ') if X.ndim == 1: self.n_samples, self.n_feautures = 1, X.shape else: self.n_samples, self.n_feautures = X.shape[0], np.prod(X.shape[1:]) self.X = X if self.y_required: if y is None: raise ValueError('Missed required argument y ') if not isinstance(y,np.ndarray): y = np.array(y) if y.size == 0: raise ValueError('Number of target y must be > 0') self.y = y def fit(self,X,y= None): self.__setup_input(X,y) def predict(self,X=None): if not isinstance(X,np.ndarray): X = np.array(X) if X is not None or not fit_required: return self._predict(X) else: raise ValueError('You must call fit before predict') def _predict(X=None): raise NotImplementedError()