Error in Chapter 9 lesson 7


I run all codes of the chapters in collab,
In lesson 7, chapter 9 notebook has just one error.
I searched in stack overflow to fix it, but I couldn’t fix it
and I rerun all code, but there is the same error
Did anyone see this error in this chapter?

xs_filt2 = xs_filt.drop('fiModelDescriptor', axis=1)
valid_xs_time2 = valid_xs_time.drop('fiModelDescriptor', axis=1)
m2 = rf(xs_filt2, y_filt)
m_rmse(m, xs_filt2, y_filt), m_rmse(m2, valid_xs_time2, valid_y)

Returns

ValueError                                Traceback (most recent call last)
<ipython-input-110-3c2713eabff4> in <module>()
      2 valid_xs_time2 = valid_xs_time.drop('fiModelDescriptor', axis=1)
      3 m2 = rf(xs_filt2, y_filt)
----> 4 m_rmse(m, xs_filt2, y_filt), m_rmse(m2, valid_xs_time2, valid_y)
-----------------------------------------------------------------------------------------------
/usr/local/lib/python3.6/dist-packages/sklearn/tree/_classes.py in _validate_X_predict(self, X, check_input)
    389                              "match the input. Model n_features is %s and "
    390                              "input n_features is %s "
--> 391                              % (self.n_features_, n_features))
    392 
    393         return X

ValueError: Number of features of the model must match the input. Model n_features is 15 and input n_features is 14 

I had the same issue. I believe it may be a typo. Changing the last line to this:

m_rmse(m, xs_filt, y_filt), m_rmse(m2, valid_xs_time2, valid_y) # changed xs_filt2 -> xs_filt

produces an output, but I would need to go through the notebook more thoroughly before I can tell you if it’s the correct output.

3 Likes

Someone also noticed this in the MOOC.

Thanks, Sturzgefahr. it worked

But after this cell,
the next cell:

cat_nn.remove('fiModelDescriptor')

returns error

ValueError                                Traceback (most recent call last)
<ipython-input-105-7422a4dc0a4f> in <module>()
----> 1 cat_nn.remove('fiModelDescriptor')
ValueError: list.remove(x): x not in list

What all edits did you do in this notebook after this error?

I didn’t make any other edits. I think you may have run this cell twice

cat_nn.remove('fiModelDescriptor')

You can only run this command once. If you run it twice, it’ll throw an error, since you’re trying to remove something you’ve already removed. My advice is reinitialize cat_nn by running this cell again:

cont_nn,cat_nn = cont_cat_split(df_nn_final, max_card=9000, dep_var=dep_var)
1 Like

Thanks again, it worked well

Happy to help.

After this cell in the next cell

procs_nn = [Categorify, FillMissing, Normalize]
to_nn = TabularPandas(df_nn_final, procs_nn, cat_nn, cont_nn, splits=splits, y_names=dep_var)

receives the following error in Google colab:


ValueError Traceback (most recent call last)
in ()
1 procs_nn = [Categorify, FillMissing, Normalize]
----> 2 to_nn = TabularPandas(df_nn_final, procs_nn, cat_nn, cont_nn, splits=splits, y_names=dep_var)

14 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/ops/init.py in to_series(right)
464 if len(left.columns) != len(right):
465 raise ValueError(
–> 466 msg.format(req_len=len(left.columns), given_len=len(right))
467 )
468 right = left._constructor_sliced(right, index=left.columns)

ValueError: Unable to coerce to Series, length must be 1: given 0

Did anyone see this error in this chapter as well?

1 Like

I think the issue is the continuous column saleElapsed has dtype=object (which you can discover with df_nn_final.info()). You can fix this with by adding df_nn_final.saleElapsed = df_nn_final.saleElapsed.astype(float).

If you get a SettingWithCopyError then change
df_nn_final = df_nn[list(xs_final_time.columns) + [dep_var]]
(from a few cells earlier) to
df_nn_final = df_nn[list(xs_final_time.columns) + [dep_var]].copy()

1 Like

I think the typo should be correct as:

m_rmse(m2, xs_filt2, y_filt), m_rmse(m2, valid_xs_time2, valid_y) # changed m -> m2

But I’m still working it through so I might be wrong.

I have same error. have you found a solution?
Never mind.
chaseos is right. My mistake.