Screen Link: Learn data science with Python and R projects
My Code:
def knn_train_test(train, target, df):
np.random.seed(1)
shuffled_index = np.random.permutation(df.index)
rand_df = df.reindex(shuffled_index)
last_train_row = int(len(rand_df)/2)
train_df = rand_df.iloc[0:last_train_row]
test_df = rand_df.iloc[last_train_row:]
k_value = [5]
k_rmses = {}
for k in k_value:
knn = KNeighborsRegressor(n_neighbors = k)
knn.fit(train_df[[train]], train_df[target])
predictions = knn.predict(test_df[[train]])
mse = mean_squared_error(test_df[target], predictions)
rmse = mse ** 0.5
k_rmses[k] = rmse
return k_rmses
k_rmse_results = {}
for n in range(2,7):
k_rmse_results['{} best features'.format(n)] = knn_train_test(
sorted_features[:n], 'price', numeric_cars)
k_rmse_results
What I expected to happen:
What actually happened:
TypeErrorTraceback (most recent call last)
<ipython-input-17-a9ec925a3809> in <module>()
29 for n in range(2,7):
30 k_rmse_results['{} best features'.format(n)] = knn_train_test(
---> 31 sorted_features[:n], 'price', numeric_cars)
32
33
<ipython-input-17-a9ec925a3809> in knn_train_test(train, target, df)
15 for k in k_value:
16 knn = KNeighborsRegressor(n_neighbors = k)
---> 17 knn.fit(train_df[[train]], train_df[target])
18
19 predictions = knn.predict(test_df[[train]])
/dataquest/system/env/python3/lib/python3.4/site-packages/pandas/core/frame.py in __getitem__(self, key)
2131 if isinstance(key, (Series, np.ndarray, Index, list)):
2132 # either boolean or fancy integer index
-> 2133 return self._getitem_array(key)
2134 elif isinstance(key, DataFrame):
2135 return self._getitem_frame(key)
/dataquest/system/env/python3/lib/python3.4/site-packages/pandas/core/frame.py in _getitem_array(self, key)
2175 return self._take(indexer, axis=0, convert=False)
2176 else:
-> 2177 indexer = self.loc._convert_to_indexer(key, axis=1)
2178 return self._take(indexer, axis=1, convert=True)
2179
/dataquest/system/env/python3/lib/python3.4/site-packages/pandas/core/indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
1254 # unique index
1255 if labels.is_unique:
-> 1256 indexer = check = labels.get_indexer(objarr)
1257
1258 # non-unique (dups)
/dataquest/system/env/python3/lib/python3.4/site-packages/pandas/core/indexes/base.py in get_indexer(self, target, method, limit, tolerance)
2700 'backfill or nearest reindexing')
2701
-> 2702 indexer = self._engine.get_indexer(target._values)
2703
2704 return _ensure_platform_int(indexer)
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_indexer()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.lookup()
/dataquest/system/env/python3/lib/python3.4/site-packages/pandas/core/indexes/base.py in __hash__(self)
1719
1720 def __hash__(self):
-> 1721 raise TypeError("unhashable type: %r" % type(self).__name__)
1722
1723 def __setitem__(self, key, value):
TypeError: unhashable type: 'Index'
I checked the index several times and can’t see anything wrong…