使用 Python(Pandas 和 Numpy)进行线性回归

Posted

技术标签:

【中文标题】使用 Python(Pandas 和 Numpy)进行线性回归【英文标题】:Linear regression using Python (Pandas and Numpy) 【发布时间】:2016-07-21 09:35:17 【问题描述】:

我正在尝试使用 python 实现线性回归。

我做了以下步骤:

import pandas as p
import numpy as n
data = p.read_csv("...path\Housing.csv", usecols=[1]) # I want the first col
data1 = p.read_csv("...path\Housing.csv", usecols=[3]) # I want the 3rd col
x = data
y = data1

然后我尝试获得系数,并使用以下内容:

regression_coeff = n.polyfit(x,y,1)

然后我得到以下错误:

raise TypeError("expected 1D vector for x")
TypeError: expected 1D vector for x

我无法理解这一点,因为当我打印 xy 时,我可以非常清楚地看到它们都是一维向量。

有人可以帮忙吗?

数据集可以在这里找到:DataSets

原代码为:

import pandas as p
import numpy as n

data = pd.read_csv('...\housing.csv', usecols = [1])
data1 = pd.read_csv('...\housing.csv', usecols = [3])

x = data
y = data1
regression = n.polyfit(x, y, 1)

【问题讨论】:

没有并使用以下:: 我没有得到你。 您可能忘记粘贴代码了。 我用的是IDLE,到目前为止我所做的一切都在上面的问题中。 抱歉,无法调试我看不到的代码。 【参考方案1】:

这应该可行:

np.polyfit(data.values.flatten(), data1.values.flatten(), 1)

data 是一个数据框,它的值为 2D:

>>> data.values.shape
(546, 1)

flatten() 把它变成一维数组:

>> data.values.flatten().shape
(546,)

polyfit() 需要。

更简单的选择:

df = pd.read_csv("Housing.csv")
np.polyfit(df['price'], df['bedrooms'], 1)

【讨论】:

非常感谢 Mike :) 它运行良好。你能说一下为什么当你添加 flatten() 时它会起作用,它实际上做了什么? 添加了一些解释。【参考方案2】:

pandas.read_csv() 返回一个DataFrame,它有两个维度,而np.polyfit 想要一个1D vector 用于xy 以进行单一拟合。您可以使用.squeeze()read_csv() 的输出简单地转换为pd.Series 以匹配np.polyfit() 输入格式:

data = pd.read_csv('../Housing.csv', usecols = [1]).squeeze()
data1 = p.read_csv("...path\Housing.csv", usecols=[3]).squeeze()

【讨论】:

完美运行。但是,您能否给我一些基本背景,或者至少提供一个链接供参考和学习?【参考方案3】:

Python 告诉您数据格式不正确,特别是 x 必须是一维数组,在您的情况下它是一个二维熊猫数组。 您可以将数据转换为 numpy 数组并压缩它来解决您的问题。

import pandas as pd
import numpy as np

data = pd.read_csv('../Housing.csv', usecols = [1])
data1 = pd.read_csv('../Housing.csv', usecols = [3])
data = np.squeeze(np.array(data))
data1 = np.squeeze(np.array(data1))

x = data
y = data1
regression = np.polyfit(x, y, 1)

【讨论】:

2Dish 数组如何。很明显,我只取一栏。请引导我更好地理解。

以上是关于使用 Python(Pandas 和 Numpy)进行线性回归的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python(Pandas 和 Numpy)进行线性回归

使用 Python(Pandas 和 Numpy)进行线性回归

转载python安装numpy和pandas

带有 SKLEARN、PANDAS 和 NUMPY 问题的 Python 部署包?

使用 Pandas 或 NumPy 的 Python 滚动夏普比率

Python:使用pandas和numpy计算标准差的区别