title: ValueError: Number of features of the model must match the input
body: <p>I'm getting this error when trying to predict using a model I built in scikit learn. I know that there are a bunch of questions about this but mine seems different from them because I am wildly off between my input and model features. Here is my code for training my model (FYI the .csv file has 45 columns with one being the known value): </p>
  
  <pre><code>import pandas as pd
  from sklearn.model_selection import train_test_split
  from sklearn import ensemble
  from sklearn.metrics import mean_absolute_error
  from sklearn.externals import joblib
  
  
  df = pd.read_csv("Cinderella.csv")
  
  
  features_df = pd.get_dummies(df, columns=['Overall_Sentiment', 'Word_1','Word_2','Word_3','Word_4','Word_5','Word_6','Word_7','Word_8','Word_9','Word_10','Word_11','Word_1','Word_12','Word_13','Word_14','Word_15','Word_16','Word_17','Word_18','Word_19','Word_20','Word_21','Word_22','Word_23','Word_24','Word_25','Word_26','Word_27','Word_28','Word_29','Word_30','Word_31','Word_32','Word_33','Word_34','Word_35','Word_36','Word_37','Word_38','Word_39','Word_40','Word_41', 'Word_42', 'Word_43'], dummy_na=True)
  
  del features_df['Slope']
  
  X = features_df.as_matrix()
  y = df['Slope'].as_matrix()
  
  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
  
  model = ensemble.GradientBoostingRegressor(
      n_estimators=500,
      learning_rate=0.01,
      max_depth=5,
      min_samples_leaf=3,
      max_features=0.1,
      loss='lad'
  )
  
  model.fit(X_train, y_train)
  
  joblib.dump(model, 'slope_from_sentiment_model.pkl')
  
  mse = mean_absolute_error(y_train, model.predict(X_train))
  
  print("Training Set Mean Absolute Error: %.4f" % mse)
  
  mse = mean_absolute_error(y_test, model.predict(X_test))
  print("Test Set Mean Absolute Error: %.4f" % mse)
  </code></pre>
  
  <p>Here is my code for the actual prediction using a different .csv file (this has 44 columns because it doesn't have any values): </p>
  
  <pre><code>from sklearn.externals import joblib
  import pandas
  
  
  model = joblib.load('slope_from_sentiment_model.pkl')
  
  df = pandas.read_csv("Slaughterhouse_copy.csv")
  
  
  features_df = pandas.get_dummies(df, columns=['Overall_Sentiment','Word_1', 'Word_2', 'Word_3', 'Word_4', 'Word_5', 'Word_6', 'Word_7', 'Word_8', 'Word_9', 'Word_10', 'Word_11', 'Word_12', 'Word_13', 'Word_14', 'Word_15', 'Word_16', 'Word_17','Word_18','Word_19','Word_20','Word_21','Word_22','Word_23','Word_24','Word_25','Word_26','Word_27','Word_28','Word_29','Word_30','Word_31','Word_32','Word_33','Word_34','Word_35','Word_36','Word_37','Word_38','Word_39','Word_40','Word_41','Word_42','Word_43'], dummy_na=True)
  
  predicted_slopes = model.predict(features_df)
  </code></pre>
  
  <p>When I run the prediction file I get: </p>
  
  <pre><code>ValueError: Number of features of the model must match the input. Model n_features is 146 and input n_features is 226.
  </code></pre>
  
  <p>If anyone could help me it would be greatly appreciated! Thanks in advance! </p>