Невозможно выполнить уменьшение гибкого типа - PullRequest
1 голос
/ 08 ноября 2019

Выполнение линейной регрессии для нахождения оценочного коэффициента и построение для него линии регрессии, которая дает мне ошибку ... Невозможно выполнить уменьшение с типом flexile. что не так в коде .... где должна быть определена переменная!

import numpy as np
import matplotlib.pyplot as plt
x="GarageArea"
y="SalePrice"
def estimate_coef(x, y):

    n = np.size(x)
    m_x, m_y = np.mean(x), np.mean(y)

    SS_xy = np.sum(y*x) - n*m_y*m_x
    SS_xx = np.sum(x*x) - n*m_x*m_x

    b_1 = SS_xy / SS_xx
    b_0 = m_y - b_1*m_x
    return(GarageArea)
def plot_regression_line(x, y, b):

    plt.scatter(x, y, color = "m", marker = "o", s = 30)


    y_pred = b[0] + b[1]*x


    plt.plot(x, y_pred, color = "g")
    plt.xlabel('x')
    plt.ylabel('y')

    plt.show()

# Visualize your results

b=estimate_coef(x,y)
plot_regression_line(GarageArea,GarageArea,b)

1 Ответ

0 голосов
/ 08 ноября 2019

Вы не определили x или y в своем коде, но пытаетесь передать их в plot_regression_line. Не уверен, если вы предполагали, что когда вы передали GarageArea и SalePrice в вашу функцию estimate_coef, которая отображает их локально на x, y, вы думали, что все равно можете ссылаться на них как на это. Однако x и y в функции estimate_coef локально ограничены в функции и не существуют вне ее, поэтому на них нельзя ссылаться.

Предполагая, что вы хотите передать GarageArea и SalePrice вместо x и y в функцию plot_regression_line.

import numpy as np
import matplotlib.pyplot as plt

def estimate_coef(x, y):
    n = np.size(x)
    m_x, m_y = np.mean(x), np.mean(y)

    SS_xy = np.sum(y*x) - n*m_y*m_x
    SS_xx = np.sum(x*x) - n*m_x*m_x

    b_1 = SS_xy / SS_xx
    b_0 = m_y - b_1*m_x

    return(b_0, b_1)

def plot_regression_line(x, y, b):

    plt.scatter(x, y, color = "m", marker = "o", s = 30)


    y_pred = b[0] + b[1]*x


    plt.plot(x, y_pred, color = "g")


    plt.xlabel('x')
    plt.ylabel('y')

    plt.show()

# Visualize your results
b=estimate_coef(GarageArea,SalePrice)
plot_regression_line(GarageArea,GarageArea,b)

Это предположение, что выdditn определяет x и y в вашем коде, но я могу ошибаться, поскольку вы также используете GarageArea и SalePrice, которые не определены в коде, который вы опубликовали. Если это не отвечает на ваш вопрос, вы должны отредактировать вопрос и опубликовать трассировку в стеке полученной ошибки.

...