diff --git a/multimodal/datasets/data_sample.py b/multimodal/datasets/data_sample.py index 29fd0e60abdee29e2070bd80c71c1a386333e0e0..377eea8f7662ee5612248987cc2a6733f41a76fd 100644 --- a/multimodal/datasets/data_sample.py +++ b/multimodal/datasets/data_sample.py @@ -361,7 +361,10 @@ class MultiModalArray(np.ndarray, MultiModalData): try: new_data = np.asarray(data) if views_ind is None: - views_ind = np.array([0, new_data.shape[1]]) + if new_data.shape[1] > 1: + views_ind = np.array([0, new_data.shape[1] // 2, new_data.shape[1]]) + else: + views_ind = np.array([0, new_data.shape[1]]) except Exception as e: raise ValueError('Reshape your data') if new_data.ndim < 2 : diff --git a/multimodal/kernels/mkernel.py b/multimodal/kernels/mkernel.py index d1c432f56b2db83c4e56e15e9556eb4a27c31baa..45ba9bff994cd74d9471496d4ec7807c62385de7 100644 --- a/multimodal/kernels/mkernel.py +++ b/multimodal/kernels/mkernel.py @@ -85,7 +85,7 @@ class MKernel(metaclass=ABCMeta): if not isinstance(X_, MultiModalArray): try: X_ = np.asarray(X) - X_ = MultiModalArray(X_) + X_ = MultiModalArray(X_, views_ind) except Exception as e: pass # raise TypeError('Reshape your data') diff --git a/multimodal/kernels/mvml.py b/multimodal/kernels/mvml.py index edcf0935d2f4928e12887ed5a07b70064b3010e7..29df9f918a41f36cdf37395b36f0cbec91bbb30e 100644 --- a/multimodal/kernels/mvml.py +++ b/multimodal/kernels/mvml.py @@ -104,36 +104,17 @@ class MVML(MKernel, BaseEstimator, ClassifierMixin): >>> from multimodal.kernels.mvml import MVML >>> from sklearn.datasets import load_iris >>> X, y = load_iris(return_X_y=True) + >>> y[y>0] = 1 >>> views_ind = [0, 2, 4] # view 0: sepal data, view 1: petal data >>> clf = MVML() - clf.get_params() + >>> clf.get_params() {'eta': 1, 'kernel': 'linear', 'kernel_params': None, 'learn_A': 1, 'learn_w': 0, 'lmbda': 0.1, 'n_loops': 6, 'nystrom_param': 1.0, 'precision': 0.0001} >>> clf.fit(X, y, views_ind) # doctest: +NORMALIZE_WHITESPACE - MumboClassifier(base_estimator=None, best_view_mode='edge', - n_estimators=50, random_state=0) + MVML(eta=1, kernel='linear', kernel_params=None, learn_A=1, learn_w=0, + lmbda=0.1, n_loops=6, nystrom_param=1.0, precision=0.0001) >>> print(clf.predict([[ 5., 3., 1., 1.]])) - [1] - >>> views_ind = [[0, 2], [1, 3]] # view 0: length data, view 1: width data - >>> clf = MumboClassifier(random_state=0) - >>> clf.fit(X, y, views_ind) # doctest: +NORMALIZE_WHITESPACE - MumboClassifier(base_estimator=None, best_view_mode='edge', - n_estimators=50, random_state=0) - >>> print(clf.predict([[ 5., 3., 1., 1.]])) - [1] + 0 - >>> from sklearn.tree import DecisionTreeClassifier - >>> base_estimator = DecisionTreeClassifier(max_depth=2) - >>> clf = MumboClassifier(base_estimator=base_estimator, random_state=0) - >>> clf.fit(X, y, views_ind) # doctest: +NORMALIZE_WHITESPACE - MumboClassifier(base_estimator=DecisionTreeClassifier(class_weight=None, - criterion='gini', max_depth=2, max_features=None, - max_leaf_nodes=None, min_impurity_decrease=0.0, - min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, - min_weight_fraction_leaf=0.0, presort=False, random_state=None, - splitter='best'), - best_view_mode='edge', n_estimators=50, random_state=0) - >>> print(clf.predict([[ 5., 3., 1., 1.]])) - [1] """ # r_cond = 10-30 def __init__(self, lmbda=0.1, eta=1, nystrom_param=1.0, kernel="linear", @@ -471,8 +452,8 @@ class MVML(MKernel, BaseEstimator, ClassifierMixin): return pred else: pred = np.sign(pred) - pred[pred==-1] = 0 pred = pred.astype(int) + pred = np.where(pred == -1, 0 , pred) return np.take(self.classes_, pred)