modAL icon indicating copy to clipboard operation
modAL copied to clipboard

TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid

Open akamil-etsy opened this issue 3 years ago • 0 comments

trying to run this notebook https://www.kaggle.com/code/kmader/active-learning-optimization-improvement/notebook

getting an error in learner.teach step (and also in pd.concat(seq_iter.compute()) step):

# initializing the learner
from modAL.models import ActiveLearner
initial_df = all_papaya_samples_df.sample(20, random_state=2018)
learner = ActiveLearner(
    estimator=SVC(kernel = 'rbf', probability=True, random_state = 2018),
    X_training=initial_df[['firmness', 'redness']], 
    y_training=initial_df['tastiness']
)
# query for labels
X_pool = all_papaya_samples_df[['firmness', 'redness']].values
y_pool = all_papaya_samples_df['tastiness'].values
query_idx, query_inst = learner.query(X_pool)
query_idx, query_inst
fig, m_axs = plt.subplots(2, 3, figsize = (12, 12))
last_pts = initial_df.shape[0]
queried_pts = []

for c_ax, c_pts in zip(m_axs.flatten(), np.linspace(20, 350, 6).astype(int)):
    for _ in range(c_pts-last_pts):
        query_idx, _ = learner.query(X_pool)
        queried_pts += [query_idx]
        learner.teach(X_pool[query_idx], y_pool[query_idx])
    last_pts = c_pts
    fit_and_show_model(learner, 
                       None, 
                       title_str = 'Sampled: {}'.format(c_pts),
                       ax = c_ax,
                       fit_model = False
                      )
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_28372/2173050794.py in <module>
      6         query_idx, _ = learner.query(X_pool)
      7         queried_pts += [query_idx]
----> 8         learner.teach(X_pool[query_idx], y_pool[query_idx])
      9     last_pts = c_pts
     10     fit_and_show_model(learner, 

/opt/conda/lib/python3.7/site-packages/modAL/models/learners.py in teach(self, X, y, bootstrap, only_new, **fit_kwargs)
     96             **fit_kwargs: Keyword arguments to be passed to the fit method of the predictor.
     97         """
---> 98         self._add_training_data(X, y)
     99         if not only_new:
    100             self._fit_to_known(bootstrap=bootstrap, **fit_kwargs)

/opt/conda/lib/python3.7/site-packages/modAL/models/base.py in _add_training_data(self, X, y)
     94         else:
     95             try:
---> 96                 self.X_training = data_vstack((self.X_training, X))
     97                 self.y_training = data_vstack((self.y_training, y))
     98             except ValueError:

/opt/conda/lib/python3.7/site-packages/modAL/utils/data.py in data_vstack(blocks)
     22         return sp.vstack(blocks)
     23     elif isinstance(blocks[0], pd.DataFrame):
---> 24         return blocks[0].append(blocks[1:])
     25     elif isinstance(blocks[0], np.ndarray):
     26         return np.concatenate(blocks)

/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py in append(self, other, ignore_index, verify_integrity, sort)
   8967                 ignore_index=ignore_index,
   8968                 verify_integrity=verify_integrity,
-> 8969                 sort=sort,
   8970             )
   8971         ).__finalize__(self, method="append")

/opt/conda/lib/python3.7/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    309                     stacklevel=stacklevel,
    310                 )
--> 311             return func(*args, **kwargs)
    312 
    313         return wrapper

/opt/conda/lib/python3.7/site-packages/pandas/core/reshape/concat.py in concat(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)
    302         verify_integrity=verify_integrity,
    303         copy=copy,
--> 304         sort=sort,
    305     )
    306 

/opt/conda/lib/python3.7/site-packages/pandas/core/reshape/concat.py in __init__(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)
    382                     "only Series and DataFrame objs are valid"
    383                 )
--> 384                 raise TypeError(msg)
    385 
    386             ndims.add(obj.ndim)

TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid

akamil-etsy avatar Jul 23 '22 19:07 akamil-etsy