Имя: цена, тип: int64) 'является недействительным ключом - PullRequest
0 голосов
/ 22 февраля 2020

Это мой CSV-файл после преобразования его в pandas объект. Я использую многопараметрическую линейную регрессию для создания прогноза.

    area    bedrooms    age price
0   2600    3.0 20  550000
1   3000    4.0 15  565000
2   3200    NaN 18  610000
3   3600    3.0 30  595000
4   4000    5.0 8   760000


import pandas as pd
import numpy as np
from sklearn import linear_model
import math

df = pd.read_csv("/home/alie/Documents/house.csv",delimiter=",",converters={"price":int})
d = math.floor(df['bedrooms'].mean())
df.bedrooms = df.bedrooms.fillna(d)
reg = linear_model.LinearRegression()
df.columns  = df.columns.str.strip().str.lower().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
reg.fit(df[['area', 'bedrooms', 'age'],df.price])

, когда я делаю reg.fit, он выдает мне эту ошибку, любая помощь в решении проблемы будет полезна.

    TypeError                                 Traceback (most recent call last)
<ipython-input-51-05a6adc5f668> in <module>
      9 reg = linear_model.LinearRegression()
     10 df.columns  = df.columns.str.strip().str.lower().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
---> 11 reg.fit(df[['area', 'bedrooms', 'age'],df.price])

~/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2655                                  'backfill or nearest lookups')
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             except KeyError:
   2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

TypeError: '(['area', 'bedrooms', 'age'], 0    550000
1    565000
2    610000
3    595000
4    760000
Name: price, dtype: int64)' is an invalid key

1 Ответ

0 голосов
/ 22 февраля 2020

Недопустимый тип ошибки ключа обычно относится к неверному индексу при попытке доступа к фрейму данных. Проверьте строку 11 и убедитесь, что вы правильно указали df. Может быть:

reg.fit(df['area', 'bedrooms', 'age'], df.price)

Таким образом, методы подгонки получают два отдельных объекта.

...