在 python 中有不同的计算 y = mx + b 的方法吗?
Are there different ways of calculating y = mx + b in python?
我正在尝试为各种不同的数据集找到 y = mx + b。我试过使用:
slope_1, intercept_1 = linregress(values_1)
其中 values_1
是 Series 类型的数据。
bin_1
values
5th_per
10
25th_per
24
50th_per
28
75th_per
34
90th_per
50
95th_per
65
但是,每当我尝试 运行 代码时,我都会收到错误 IndexError: tuple index out of range
。
我有点理解这个错误,但不确定如何解决这个问题。关于如何解决这个问题或找到线性回归的任何其他方法有什么建议吗?
假设 values
是 y 值,索引是 x 值(例如 values = 10
有 x = 0
,values = 24
有 x = 1
,等等。 ), 那么你可以这样做:
values_1 = df.tolist("values")
# Convert values_1 to a numpy array and get x values as indices.
y = np.array(values_1, dtype=float)
x = np.arange(0, len(y), 1)
soln = np.polyfit(x, y, 1)
m, b = soln[0], soln[1]
如果您有任何问题,请告诉我。
编辑: 如果要将 bin_1
值用作 x 值,请将上面代码中的行 x = np.arange
替换为以下内容:
# Split each string according to _, creating a list for each string with the
# 1st element containing the number and the 2nd element being "per".
bins = df["bin_1"].str.split("_")
# Get the 1st element in each list using row[0].
# Then access just the number by discarding the ending "th" in each row[0].
bins = [row[0][:-2] for row in bins]
x = np.array(bins, dtype=float)
我正在尝试为各种不同的数据集找到 y = mx + b。我试过使用:
slope_1, intercept_1 = linregress(values_1)
其中 values_1
是 Series 类型的数据。
bin_1 | values |
---|---|
5th_per | 10 |
25th_per | 24 |
50th_per | 28 |
75th_per | 34 |
90th_per | 50 |
95th_per | 65 |
但是,每当我尝试 运行 代码时,我都会收到错误 IndexError: tuple index out of range
。
我有点理解这个错误,但不确定如何解决这个问题。关于如何解决这个问题或找到线性回归的任何其他方法有什么建议吗?
假设 values
是 y 值,索引是 x 值(例如 values = 10
有 x = 0
,values = 24
有 x = 1
,等等。 ), 那么你可以这样做:
values_1 = df.tolist("values")
# Convert values_1 to a numpy array and get x values as indices.
y = np.array(values_1, dtype=float)
x = np.arange(0, len(y), 1)
soln = np.polyfit(x, y, 1)
m, b = soln[0], soln[1]
如果您有任何问题,请告诉我。
编辑: 如果要将 bin_1
值用作 x 值,请将上面代码中的行 x = np.arange
替换为以下内容:
# Split each string according to _, creating a list for each string with the
# 1st element containing the number and the 2nd element being "per".
bins = df["bin_1"].str.split("_")
# Get the 1st element in each list using row[0].
# Then access just the number by discarding the ending "th" in each row[0].
bins = [row[0][:-2] for row in bins]
x = np.array(bins, dtype=float)