Я хочу запустить линию регрессии, используя PySpark.
У меня есть следующая СДР:
WeightHeight = CleanData.map(lambda x: (float(x[2]) , float(x[3])))
Я преобразовал СДР в кадр данных:
df = WeightHeight.toDF(["x","y"])
Теперь я хотел бы получить каждый столбец кадра данных и преобразовать его в два разных массива, x и y.
Я пытался с
x = np.array(df.select('x'))
или
x = np.array(df['x'])
Но когда я запустил его в функцию (slope_intercept (x, y)), которую я создал, чтобы определить коэффициентлинии регрессии я получаю сообщение об ошибке «Объект столбца не вызывается».
Есть идеи, как это исправить?
Спасибо!
Вотфункция создана.Я проверил его с меньшими значениями, такими как x = [1,2,3,4,5,6,7] и y = [10,20,30,30,30,40,50], и он работает.
def slope_intercept (x_val, y_val):
x = np.array(x_val)
y = np.array(y_val)
m = ( ( ( np.mean(x)*np.mean(y))- np.mean(x*y)) / ((np.mean(x)*np.mean(x))- np.mean(x*x)))
m = round(m,2)
b = (np.mean(y) - np.mean(x)*m)
b = round(b,2)
return m,b