Лінійна Регресія Sklearn! Help

Друзі, доброго ранку. Дуже прошу Вашої професійної допомоги. Кому не шкода витратити 5 хв часу на пояснення.

В мене є csv файл, в якому зібрані дані відвідуванності різних сторінок в фейсбуці, на розкрутку яких витратили певну суму грошей. Завдання отримав таке: передбачити за допомогою бібліотеки Sklearn та лінійної регресії їх відвідуванність в майбутньому якщо збільшувати/зменшувати суму грошей на їх рекламу.

Дуже прошу, кому не важко, напишіть алгоритм як це зробити.
Подивився купу відео але все одно нічого не зрозумів і нічого не виходить.
Дякую наперед

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Якщо ви плануєте займатися ДС, то варто це з 0 зробити, без sklearn.

так scikit идет с исходниками.
Всегда можно взять соответствующие вай паперс + исходники сцайкит- и разобраться как и что работает.

хуже когда есть только паперс- и нет нормальной реализации- чтобы все понять

Кусок паперу і ручка, це все що треба щоб розібратися з лінійною регресією.

y- кількість відвідувань, х- сума грошей. Вам потрібно розрахувати на скільки збільшиться/зменшиться у при збільшенні/зменшенні х (потрібно розрахувати коефіцієнти). В sklearn повинно бути щось типу:
reg = LinearRegression().fit(x,y)
reg.intercept_ (це коеф який показує яке значення має у коли всі х = 0)
reg.coef_ (показує на скільки одиниць збільшиться/зменшиться у при збільшенні/зменшенні х на одиницю)

Прочитайте як це реалізовано в Excel (там є пояснення про коефіцієнти):exceltable.com/...​onno-regressionnyy-analiz

Що пробував і що саме не виходить?

Марія привіт. В мене є таблиця, яка складається 4 колонок (’bzb’, ’site’, ’sb’, ’money’) та 12 строчок.
як і потрібно я роблю наступне:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

dataset.shape
(12, 4)

dataset.head ()
dataset.describe

Далі, я хочу зобразити співзалежність між ’money’ ’sb’

dataset.plot(x=’Money’, y=’sb’, style=’o’)
plt.title(’Money vs Visitors’)
plt.xlabel(’Invest’)
plt.ylabel(’Number of visіtors’)
plt.show()

Я хочу передбачити кількість відвідучів (column ’sb’ по осі у) за н-сумму грошей по осі х

Підготовка даних.
Так як attributes зберігаються в змінній Х, то я визначаю її як (-1) як номер колонки ’money’ яка є в моєму дата сеті

а змінна У містить labels і її я власне і шукаю це четверта колонка ’sb’

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
Тепер в нас є attributes labels і нам треба розбити дані на тренувальні та тестові

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

навчаємо алгоритм

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
print(regressor.intercept_)
print(regressor.intercept_)

Вийшло 6.89 та [-0.01311009 −0.00413568 0.01895583]

І тепер я не розумію що це за цифри? ))) що вони означають?

Робимо передбачення:
y_pred = regressor.predict(X_test)
df = pd.DataFrame({’Actual’: y_test, ’Predicted’: y_pred})
df

і я отримав дата фрейм
Actual Predicted
0 10 6.263892
1 0 4.342497
2 12 9.662012

потім запустив ще ось таку штуку
from sklearn import metrics
print(’Mean Absolute Error:’, metrics.mean_absolute_error(y_test, y_pred))
print(’Mean Squared Error:’, metrics.mean_squared_error(y_test, y_pred))
print(’Root Mean Squared Error:’, np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

отримав цифри

Подивіться будь ласка де я припустився помилок? що не правильно? чи правильно я відобразив залежність ’money’ та ’sb’?
передбачити я хотів дані якраз по ’sb’ а порахувало чомусь ’money’

і тут я ще більше застряг )))

Ви невірно вибрали у з датафрейму. Спробуйте вибрати по назві:
X = data[’Money’]
y = data[’SB’]

print(regressor.intercept_)
print(regressor.intercept_)
Вийшло 6.89 та [-0.01311009 —0.00413568 0.01895583]
І тепер я не розумію що це за цифри? ))) що вони означають?

"

intercept_ це коеф який показує яке значення має у коли всі х = 0
coef_ показує на скільки одиниць збільшиться/зменшиться у при збільшенні/зменшенні х на одиницю

А що саме не зрозуміло? Лінійна регресія в sklearn імплементується кількома рядками, почитайте цей туторіал, тут детально пояснено: stackabuse.com/...​python-with-scikit-learn

Привіт. В мене є таблиця, яка складається 4 колонок (’bzb’, ’site’, ’sb’, ’money’) та 12 строчок.
як і потрібно я роблю наступне:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

dataset.shape
(12, 4)

dataset.head ()
dataset.describe

Далі, я хочу зобразити співзалежність між ’money’ ’sb’

dataset.plot(x=’Money’, y=’sb’, style=’o’)
plt.title(’Money vs Visitors’)
plt.xlabel(’Invest’)
plt.ylabel(’Number of visіtors’)
plt.show()

Я хочу передбачити кількість відвідучів (column ’sb’ по осі у) за н-сумму грошей по осі х

Підготовка даних.
Так як attributes зберігаються в змінній Х, то я визначаю її як (-1) як номер колонки ’money’ яка є в моєму дата сеті

а змінна У містить labels і її я власне і шукаю це четверта колонка ’sb’

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
Тепер в нас є attributes labels і нам треба розбити дані на тренувальні та тестові

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

навчаємо алгоритм

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
print(regressor.intercept_)
print(regressor.intercept_)

Вийшло 6.89 та [-0.01311009 −0.00413568 0.01895583]

І тепер я не розумію що це за цифри? ))) що вони означають?

Робимо передбачення:
y_pred = regressor.predict(X_test)
df = pd.DataFrame({’Actual’: y_test, ’Predicted’: y_pred})
df

і я отримав дата фрейм
Actual Predicted
0 10 6.263892
1 0 4.342497
2 12 9.662012

потім запустив ще ось таку штуку
from sklearn import metrics
print(’Mean Absolute Error:’, metrics.mean_absolute_error(y_test, y_pred))
print(’Mean Squared Error:’, metrics.mean_squared_error(y_test, y_pred))
print(’Root Mean Squared Error:’, np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

отримав цифри

Подивіться будь ласка де я припустився помилок? що не правильно? чи правильно я відобразив залежність ’money’ та ’sb’?
передбачити я хотів дані якраз по ’sb’ а порахувало чомусь ’money’

і тут я ще більше застряг )))

А чому ви думаєте, що порахувало саме money? Які взагалі вийшли результати?
Я б ще спробувала різні способи нормалізації даних, тут описані можливі методи: scikit-learn.org/...​odules/preprocessing.html

Ось так виглядав мій дата сет з самого початку

BZB site SB Money Spent
0 231 695 714 10
1 224 539 527 12
2 262 874 365 12
3 302 445 346 10
4 113 540 342 12
5 123 563 281 12
6 206 581 236 10
7 185 590 170 10
8 196 612 95 0
9 206 642 130 0
10 215 654 150 0
11 230 667 170 0

я хотів передбачити SB
а вийшло

Подписаться на комментарии