gro*_*ark 1 python numpy linear-regression pandas polynomials
我收到错误:
类型错误: x 的预期一维向量
关于这一行:
系数 = np.polyfit(x1, y1, 1)
coefficients = np.polyfit(x1, y1, 1)
polynomial = np.poly1d(coefficients)
ys = polynomial(x1)
Run Code Online (Sandbox Code Playgroud)
x1 和 y1 是;
x = frame_query("select * from table",db)
y = frame_query("select * from table",db)
x1 = np.array(x)
y1 = np.array(y)
Run Code Online (Sandbox Code Playgroud)
由736行数据组成。我想将一行回归到另一行。有人可以帮忙吗?
谢谢。
您需要将数据框转换为一维数组。首先让我创建一个数据框
import pandas
d = pandas.DataFrame([[1,2],[3,4],[5,6]],columns=['x1','y1'])
Run Code Online (Sandbox Code Playgroud)
我认为以下内容可以满足您的要求:
import numpy
x1 = numpy.array(d['x1'])
y1 = numpy.array(d['y1'])
numpy.polyfit(x1,y1,1)
Run Code Online (Sandbox Code Playgroud)
我认为您遇到的问题是您创建的数组有一个额外的维度。例如,下面的数组a和b“看起来”就像x1和y1,
a = numpy.array([[1,3,5]])
b = numpy.array([[2,4,6]])
Run Code Online (Sandbox Code Playgroud)
但由于双括号 ( [[...]]),它们实际上是二维的。我可以通过仅选择第 0 列来减小维度:
x1 = a[0,:]
y1 = b[0,:]
Run Code Online (Sandbox Code Playgroud)
然后polyfit就可以工作了。编辑:如果您查看数组的形状(例如x1.shape),您应该能够判断是否有“额外维度”。
| 归档时间: |
|
| 查看次数: |
30301 次 |
| 最近记录: |