我正在尝试从一组10个数据点中删除一对x和y坐标,并获取其他9个点的斜率。
我该如何解决这个问题?
随函附上我要弄清楚的图像:
在上图中,B列是x轴,C列是y轴。
D列的每个数据点都有多个斜率。
评论部分说明如何获得每个斜率。
示例:通过从数据集中删除B6和C6获得0.3741的斜率。
对我来说,这是一个极具挑战性的话题,要弄清楚该走哪条路。在这方面的任何帮助深表感谢。
我用于查找x和y轴的总体斜率的代码是:
import pandas as pd
import numpy as np
from scipy.stats import norm
from scipy import stats
import matplotlib.pyplot as plt
df = pd.read_excel('Slope.xlsx')
x = df['x-axis']
y = df['y-axis']
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
print(slope)
类似于查找一对x和y坐标,删除该对,然后给出其余9点的斜率。
感谢阅读。
Python新手,因此很难找到遵循该主题的方法。
答案 0 :(得分:1)
也许您可以尝试以下方法:
import numpy as np
np.random.seed(42)
x = np.random.randint(0, 25, 10)
y = np.random.randint(0, 25, 10)
print(x, y)
for i, pair in enumerate(zip(x, y)):
m, t = np.polyfit(np.delete(x, i), np.delete(y, i), 1)
print('slope', m, 'for data without pair', i, ':', pair)
据我所知,pandas
解决方案可能看起来像这样:
df = pd.DataFrame(np.array([x, y]).T, columns=['x', 'y'])
df['m'], df['t'] = df.apply(lambda row: np.polyfit(df.x.drop(row.name), df.y.drop(row.name), 1), axis=1).T.values
print(df)
答案 1 :(得分:0)
https://pythonprogramming.net/how-to-program-best-fit-line-slope-machine-learning-tutorial/
如果您正在寻找最适合的坡度,则此页面可能对您有所帮助。
获取10个点中的9个的斜率。
jshell> "1" + null
$1 ==> "1null"