Einführung in das Zeichnen einer robusten linearen Regression mithilfe der maschinellen Lernbibliothek von Python sckit-learn. In diesem Artikel habe ich ein Diagrammobjekt mit der Python-Zeichnungsbibliothek altair erstellt und mit Streamlit ein Diagrammobjekt erstellt ota / items / a18f158389f1585a9aa0) wird zur Anzeige im Browser verwendet.
Es ist weniger anfällig für Abweichungen als die lineare Regression nach der Methode der kleinsten Quadrate.
Verwenden Sie HuberRegressor, um eine robuste Regressionslinie zu erstellen.
Beachten Sie, dass streamlit mit streamlit run file name.py
ausgeführt wird
streamlit_robust_linear.py
import streamlit as st
import numpy as np
import pandas as pd
import altair as alt
from sklearn.linear_model import HuberRegressor
from sklearn.datasets import make_regression
#Demo-Datengenerierung
rng = np.random.RandomState(0)
x, y, coef = make_regression( n_samples=200, n_features=1, noise=4.0, coef=True, random_state=0)
x[:4] = rng.uniform(10, 20, (4, 1))
y[:4] = rng.uniform(10, 20, 4)
df = pd.DataFrame({
'x_axis': x.reshape(-1,),
'y_axis': y
})
#Stellen Sie Parameter für eine robuste Regression ein
epsilon = st.slider('Select epsilon',
min_value=1.00, max_value=10.00, step=0.01, value=1.35)
#Robuste Regressionsausführung
huber = HuberRegressor(epsilon=epsilon
).fit(
df['x_axis'].values.reshape(-1,1),
df['y_axis'].values.reshape(-1,1)
)
#Erzeugung von Streudiagrammen
plot = alt.Chart(df).mark_circle(size=40).encode(
x='x_axis',
y='y_axis',
tooltip=['x_axis', 'y_axis']
).properties(
width=500,
height=500
).interactive()
#Ermitteln Sie den Koeffizienten der robusten linearen Regression
a1 = huber.coef_[0]
b1 = huber.intercept_
#Geben Sie den Definitionsbereich der Regressionslinie an
x_min = df['x_axis'].min()
x_max = df['x_axis'].max()
#Erstellen einer Regressionslinie
points = pd.DataFrame({
'x_axis': [x_min, x_max],
'y_axis': [a1*x_min+b1, a1*x_max+b1],
})
line = alt.Chart(points).mark_line(color='steelblue').encode(
x='x_axis',
y='y_axis'
).properties(
width=500,
height=500
).interactive()
#Grafik anzeigen
st.write(plot+line)
Epsilon ist eine reelle Zahl größer oder gleich 1 und repräsentiert den Grad des Einflusses von Ausreißern. Die Standardeinstellung ist 1.35.
Je größer das Epsilon ist, desto größer ist die Wirkung von Ausreißern. (Das Bild ist epsilon = 10
)
Durch Ersetzen von HuberRegressor durch LinearRegression können Sie eine lineare Regressionslinie mit der Methode der kleinsten Quadrate erstellen.
Recommended Posts