Eu tenho um dataframe no qual nos são fornecidas as colunas x e y e entre elas eu quero esboçar um modelo de regressão. A ideia principal é que eu use o framework dash, pois de acordo com o teste chow, pode haver diferença entre dois modelos de regressão em valores de instância diferentes, com base no seguinte link: modelos dash
Eu escrevi o seguinte código:
import pandas as pd
from dash import Dash,html,dcc,callback,Output,Input
from sklearn.linear_model import LinearRegression
import plotly.express as px
data =pd.read_csv("regression.csv")
model =LinearRegression()
print(data)
app = Dash()
# Requires Dash 2.17.0 or later
app.layout = [
html.H1(children='Our regression Model', style={'textAlign':'center'}),
dcc.Dropdown(data.Year.unique(), '2004', id='dropdown-selection'),
dcc.Graph(id='graph-content')
]
@callback(
Output('graph-content', 'figure'),
Input('dropdown-selection', 'value')
)
def scatter_graph(value):
selected =data[data.Year==value]
return px.scatter(selected,x='x',y='y')
@callback(
Output('graph-content', 'figure'),
Input('dropdown-selection', 'value')
)
def Regression_graph(value):
selected =data[data.Year==value]
X =selected['x'].values
X =X.reshape(-1,1)
y =selected['y'].values
model.fit(X,y)
y_predicted =model.predict(X)
return px.line(selected,x='x',y=y_predicted)
if __name__ =='__main__':
app.run(debug=True)
esta parte funciona bem:
@callback(
Output('graph-content', 'figure'),
Input('dropdown-selection', 'value')
)
def scatter_graph(value):
selected =data[data.Year==value]
return px.scatter(selected,x='x',y='y')
mas o segundo decorador para o gráfico de regressão não funciona, aqui está um exemplo:
por favor me ajude como consertar isso?
Pode ser necessário adicionar todo o código em uma função e retornar ambos os números
Código funcional completo com dados aleatórios.