【发布时间】:2019-07-01 14:54:34
【问题描述】:
我正在尝试编写具有多个变量的线性回归代码。我正在从 txt 文件中检索数据到“数据”变量。我正在尝试将前两列初始化为工作正常的变量 x。在尝试将 np.ones 数组添加到此二维数组的下一步中,我得到无法识别的数据。我在添加“np.ones”数组之前和之后添加了数组 x 的代码和值。谁能告诉我我做错了什么?谢谢。 我的代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('ex1data2.txt',header = None)
x = data.iloc[:,0:2]
y = data.iloc[:,2]
m=len(x)
y = y[:,np.newaxis]
x = (x - np.mean(x))/np.std(x)
ones = np.ones((m,1))
x = np.hstack((ones,x))
步骤 np.hstack() 之前 x 的值
0 1
0 0.131415 -0.226093
1 -0.509641 -0.226093
2 0.507909 -0.226093
3 -0.743677 -1.554392
4 1.271071 1.102205
5 -0.019945 1.102205
步骤 np.hstack() 之后的值
[[ 1.00000000e+00 1.31415422e-01 -2.26093368e-01]
[ 1.00000000e+00 -5.09640698e-01 -2.26093368e-01]
[ 1.00000000e+00 5.07908699e-01 -2.26093368e-01]
[ 1.00000000e+00 -7.43677059e-01 -1.55439190e+00]
[ 1.00000000e+00 1.27107075e+00 1.10220517e+00]
[ 1.00000000e+00 -1.99450507e-02 1.10220517e+00]]
【问题讨论】:
-
ones的 int 数组被强制浮动。你的问题到底是什么? -
在我看来,你可能对 numpy 的“科学记数法”感到困惑,0.131415 变成了 1.31415422e-01,其中 e-01 表示 10**-1
-
我不明白一个的值如何变成浮点数,而其他行在小数点后变得如此之大。因此,我在计算梯度下降时遇到了错误。
-
你的意思是,你不知道scientific notation 是什么?这是非常基本的东西,停止梯度下降并阅读该链接。请注意,这些值完全相同,只是在打印时以不同的格式表示。
标签: python arrays pandas numpy