为什么矢量减法会产生矩阵

时间:2019-07-24 19:27:35

标签: python pandas numpy linear-algebra

我试图在我根据随机数创建的数据帧上实现梯度下降。 X_b是具有拦截项(x0 = 1)和另一个特征的扩展特征矩阵,因此X_b是(80,2)ndarray。 我从train_set数据帧中提取了y-vector,并将其转换为ndarray,它的尺寸为(80,) 在将特征矩阵与theta向量相乘后,我得到了(80,1)向量,我打算从中减去y向量,但最终却得到了我不理解的(80,80)矩阵。

相反,当我用y.reshape(80, 1)重塑y向量时,它给了我预期的尺寸为(80,1)的差向量,而没有汗水。

第一种情况出了什么问题?我刚刚开始学习机器学习和Numpy,因此对任何愚蠢的错误表示歉意。谢谢。

X = np.random.rand(100, 1)
y = 4 + 3 * x + np.random.randn(100, 1)
def train_test_split_df(dataframe, test_ratio):
    shuffled_indices = np.random.permutation(len(dataframe))
    test_set_size = int(len(dataframe) * test_ratio)
    test_indices = shuffled_indices[:test_set_size]
    train_indices = shuffled_indices[test_set_size:]
    return dataframe.iloc[train_indices] , dataframe.iloc[test_indices]

train_set, test_set = train_test_split_df(X_df, 0.2)

theta = np.random.rand(2, 1)
X_b = np.c_[np.ones((len(train_set), 1)), train_set.iloc[:, :-1]]
#X_b.shape = (80, 2)
y = np.array(train_set.iloc[:, -1])
#y.shape is (80,)

#(X_b.dot(theta) - y).shape = (80, 80)

0 个答案:

没有答案