Это мой 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