logo

Python | Лінійна регресія з використанням sklearn

Необхідна умова: Лінійна регресія

Лінійна регресія — це алгоритм машинного навчання, заснований на керованому навчанні. Він виконує завдання регресії. Регресія моделює цільове прогнозоване значення на основі незалежних змінних. Здебільшого використовується для з’ясування зв’язку між змінними та прогнозуванням. Різні моделі регресії відрізняються залежно від типу зв’язку між залежними та незалежними змінними, які вони розглядають, і кількості незалежних змінних, що використовуються. У цій статті буде продемонстровано, як використовувати різні бібліотеки Python для реалізації лінійної регресії на заданому наборі даних. Ми продемонструємо бінарну лінійну модель, оскільки це буде легше візуалізувати. У цій демонстрації модель використовуватиме градієнтний спуск для навчання. Ви можете дізнатися про це тут.



Крок 1: Імпорт усіх необхідних бібліотек

Python3








хакерська обробка

import> numpy as np> import> pandas as pd> import> seaborn as sns> import> matplotlib.pyplot as plt> from> sklearn>import> preprocessing, svm> from> sklearn.model_selection>import> train_test_split> from> sklearn.linear_model>import> LinearRegression>

>

>

Крок 2: Читання набору даних:

Python3




df>=> pd.read_csv(>'bottle.csv'>)> df_binary>=> df[[>'Salnty'>,>'T_degC'>]]> > # Taking only the selected two attributes from the dataset> df_binary.columns>=> [>'Sal'>,>'Temp'>]> #display the first 5 rows> df_binary.head()>

>

>

Вихід:

крок 3: Вивчення розкиду даних

Python3




#plotting the Scatter plot to check relationship between Sal and Temp> sns.lmplot(x>=>'Sal'>, y>=>'Temp'>, data>=> df_binary, order>=> 2>, ci>=> None>)> plt.show()>

>

>

Вихід:

крок 4: Очищення даних

Python3




# Eliminating NaN or missing input numbers> df_binary.fillna(method>=>'ffill'>, inplace>=> True>)>

>

>

крок 5: Навчання нашої моделі

Python3




X>=> np.array(df_binary[>'Sal'>]).reshape(>->1>,>1>)> y>=> np.array(df_binary[>'Temp'>]).reshape(>->1>,>1>)> > # Separating the data into independent and dependent variables> # Converting each dataframe into a numpy array> # since each dataframe contains only one column> df_binary.dropna(inplace>=> True>)> > # Dropping any rows with Nan values> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.25>)> > # Splitting the data into training and testing data> regr>=> LinearRegression()> > regr.fit(X_train, y_train)> print>(regr.score(X_test, y_test))>

коли вийшла win 7

>

>

Вихід:

Крок 6: Вивчення наших результатів

Python3




скільки років Піту Девідсону
y_pred>=> regr.predict(X_test)> plt.scatter(X_test, y_test, color>=>'b'>)> plt.plot(X_test, y_pred, color>=>'k'>)> > plt.show()> # Data scatter of predicted values>

>

>

Вихід:

Низький показник точності нашої моделі свідчить про те, що наша регресивна модель не дуже добре відповідає наявним даним. Це означає, що наші дані не підходять для лінійної регресії. Але іноді набір даних може прийняти лінійний регресор, якщо ми розглядаємо лише його частину. Давайте перевіримо таку можливість.

Крок 7: Робота з меншим набором даних

Python3




df_binary500>=> df_binary[:][:>500>]> > # Selecting the 1st 500 rows of the data> sns.lmplot(x>=>'Sal'>, y>=>'Temp'>, data>=> df_binary500,> >order>=> 2>, ci>=> None>)>

>

>

Вихід:

Ми вже бачимо, що перші 500 рядків відповідають лінійній моделі. Продовжуйте ті самі дії, що й раніше.

Python3




зображення як фон в css
df_binary500.fillna(method>=>'fill'>, inplace>=> True>)> > X>=> np.array(df_binary500[>'Sal'>]).reshape(>->1>,>1>)> y>=> np.array(df_binary500[>'Temp'>]).reshape(>->1>,>1>)> > df_binary500.dropna(inplace>=> True>)> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.25>)> > regr>=> LinearRegression()> regr.fit(X_train, y_train)> print>(regr.score(X_test, y_test))>

>

>

Вихід:

Python3




y_pred>=> regr.predict(X_test)> plt.scatter(X_test, y_test, color>=>'b'>)> plt.plot(X_test, y_pred, color>=>'k'>)> > plt.show()>

>

>

Вихід:

Крок 8: Оцінювальні метрики для регресії

Нарешті, ми перевіряємо продуктивність моделі лінійної регресії за допомогою метрик оцінки. Для алгоритмів регресії ми широко використовуємо показники mean_absolute_error і mean_squared_error для перевірки ефективності моделі.

Python3




from> sklearn.metrics>import> mean_absolute_error,mean_squared_error> > mae>=> mean_absolute_error(y_true>=>y_test,y_pred>=>y_pred)> #squared True returns MSE value, False returns RMSE value.> mse>=> mean_squared_error(y_true>=>y_test,y_pred>=>y_pred)>#default=True> rmse>=> mean_squared_error(y_true>=>y_test,y_pred>=>y_pred,squared>=>False>)> > print>(>'MAE:'>,mae)> print>(>'MSE:'>,mse)> print>(>'RMSE:'>,rmse)>

>

>

Вихід:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078>