删除各个点并输出斜率python

时间:2018-09-28 18:38:02

标签: python pandas numpy scikit-learn scipy

我正在尝试从一组10个数据点中删除一对x和y坐标,并获取其他9个点的斜率。

我该如何解决这个问题?

随函附上我要弄清楚的图像:

Data

在上图中,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新手,因此很难找到遵循该主题的方法。

2 个答案:

答案 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"