scikit-learn LinearRegression IndexError

Posted

技术标签:

【中文标题】scikit-learn LinearRegression IndexError【英文标题】: 【发布时间】:2021-12-29 14:26:11 【问题描述】:

我正在研究 LinearRegression 模型来填充特征 Rupeepersqft 的空值。当我运行代码时,我收到此错误:

IndexError                                Traceback (most recent call last)
<ipython-input-20-33d4e6d2998e> in <module>()
      1 test_data = data_with_null.iloc[:,:3]
----> 2 Rupeepersqft_predicted['Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

这是给我错误的代码:

from sklearn.linear_model import LinearRegression
linreg = LinearRegression()

data_with_null = data2[['Price (Lakhs)','Area','Area Type','Rupeepersqft','Condition','Purchase Type','Real Estate Regulation Act']].dropna()
data_without_null =  data_with_null.dropna()

train_data_x = data_without_null.iloc[:,:3]
train_data_y = data_without_null.iloc[:,3]

linreg.fit(train_data_x, train_data_y)

test_data = data_with_null.iloc[:,:3]
Rupeepersqft_predicted['Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))

data_with_null.Rupeepersqft.fillna(Rupeepersqft_predicted, inplace=True)

这是数据的样子:

谁能帮我解决这个问题?

【问题讨论】:

Rupeepersqft_predicted['Rupeepersqft'] 如果从数据框中选择一列(来自dict 的值),则可以。但显然它是一个数组,不接受字符串索引(除非它是一个结构化数组)。 【参考方案1】:

要将值分配给Pandas.DataFrame 中的列,您应该使用locators,即lociloc(用于类似数组的操作),因此要解决您的问题,请尝试更改

Rupeepersqft_predicted['Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))

到:

Rupeepersqft_predicted.loc[:, 'Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))

它将选择所有行(:)和列Rupeepersqft,并分配您在右侧的任何值。

或使用iloc:

Rupeepersqft_predicted.iloc[:, 1] = pd.DataFrame(linreg.predict(test_data))

将其分配给DataFrame1st 列的所有行(同样由: 运算符)。

只需确保右侧的值与您尝试分配给它的列的长度相同。

有关Pandas 的更多信息,您可以在this book 中找到。

干杯

【讨论】:

不客气,我很高兴它帮助了你。请考虑接受此答案(通过单击答案旁边的“v”)让遇到相同问题的其他人知道它可以解决问题。干杯伙伴。

以上是关于scikit-learn LinearRegression IndexError的主要内容,如果未能解决你的问题,请参考以下文章

[机器学习与scikit-learn-2]:如何学习Scikit-learn

Sklearn 速查

无法安装 scikit-learn

scikit-learn学习基础知识四

[机器学习与scikit-learn-3]:scikit-learn模型地图与模型选择

scikit-learn:如何使用拟合概率模型?