gpt4 book ai didi

python-3.x - 为什么我得到矩阵未对齐 DataFrame 点函数的错误?

转载 作者:行者123 更新时间:2023-12-05 01:37:41 26 4
gpt4 key购买 nike

我正在尝试使用 Numpy 和 Pandas 在 Python 中实现简单的线性回归。但是我收到一个 ValueError: matrices are not aligned 调用 dot 函数的错误,该函数本质上如文档所述计算矩阵乘法。以下是代码片段:

import numpy as np
import pandas as pd

#initializing the matrices for X, y and theta
#dataset = pd.read_csv("data1.csv")
dataset = pd.DataFrame([[6.1101,17.592],[5.5277,9.1302],[8.5186,13.662],[7.0032,11.854],[5.8598,6.8233],[8.3829,11.886],[7.4764,4.3483],[8.5781,12]])
X = dataset.iloc[:, :-1]
y = dataset.iloc[:, -1]
X.insert(0, "x_zero", np.ones(X.size), True)
print(X)
print(f"\n{y}")
theta = pd.DataFrame([[0],[1]])
temp = pd.DataFrame([[1],[1]])
print(X.shape)
print(theta.shape)
print(X.dot(theta))

这是相同的输出:

   x_zero       0
0 1.0 6.1101
1 1.0 5.5277
2 1.0 8.5186
3 1.0 7.0032
4 1.0 5.8598
5 1.0 8.3829
6 1.0 7.4764
7 1.0 8.5781

0 17.5920
1 9.1302
2 13.6620
3 11.8540
4 6.8233
5 11.8860
6 4.3483
7 12.0000
Name: 1, dtype: float64
(8, 2)
(2, 1)
Traceback (most recent call last):
File "linear.py", line 16, in <module>
print(X.dot(theta))
File "/home/tejas/.local/lib/python3.6/site-packages/pandas/core/frame.py", line 1063, in dot
raise ValueError("matrices are not aligned")
ValueError: matrices are not aligned

如您所见,它们的形状属性输出,第二个轴具有相同的维度 (2) 并且 dot 函数应返回一个 8*1 数据帧。那么,为什么会报错呢?

最佳答案

这种错位不是来自形状的错位,而是来自 pandas 索引的错位。您有 2 个选项来解决您的问题:

调整 theta 赋值:

theta = pd.DataFrame([[0],[1]], index=X.columns)

所以你相乘的索引将匹配。

通过将第二个 df 移动到 numpy 来移除索引相关性:

X.dot(theta.to_numpy())

此功能在 pandas 中实际上很有用 - 它尝试智能匹配索引,您的情况只是非常具体的情况,当它变得适得其反时;)

关于python-3.x - 为什么我得到矩阵未对齐 DataFrame 点函数的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com