Удалить отдельные точки и вывести наклонный питон - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь удалить одну пару координат x и y из набора из 10 точек данных и получить наклон для остальных 9 точек.

Как мне решить эту проблему?

Прилагается изображение того, что я пытаюсь выяснить:

data

На изображении выше столбец B представляет собой ось X и столбец.C - это ось Y.

Столбец D имеет несколько уклонов для каждого удаленного элемента данных.

В разделе комментариев рассказывается, как был получен каждый уклон.

Пример: уклон 0,3741 былполучено путем удаления B6 и C6 из набора данных.

Это чрезвычайно сложная тема для меня, чтобы выяснить, какой путь выбрать.Любая помощь в этом аспекте очень ценится.


Код, который я использую, чтобы найти общий наклон для осей 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 голосов
/ 28 сентября 2018

Возможно, вы можете попробовать это:

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)
0 голосов
/ 28 сентября 2018

https://pythonprogramming.net/how-to-program-best-fit-line-slope-machine-learning-tutorial/

Эта страница может быть полезна для вас, если вы ищете наиболее подходящий уклон.

Чтобы получить уклон для 9 из 10 баллов.

xs = np.array([1,2,3,4,5,6,7,8,9,10], dtype=np.float64)
ys = np.array([5,4,6,5,6,4,5,6,7,5], dtype=np.float64)
slope = []

for n in range (0,9):
    tmp_x = np.delete(xs,n)
    tmp_y = np.delete(ys,n)
    slope[n] = best_fit_slope(tmp_x,tmp_y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...