Как мы обсуждали в предыдущем посте, линейная регрессия, часть 1



Мы используем множественную регрессию, когда имеется более одного набора входных функций, как утверждает уравнение:

Y=x0+(x1*w1+x2*w2+x3*w3+....+xn*wn)

где x1, x2, x3,… .xn - входные характеристики.

Однако в реальном мире непросто работать с двумерными данными, подобными этим, в простой линейной регрессии.

Я имею в виду?

2D-данные имеют оси X и Y, которые имеют один набор значений. Если вы посмотрите в предыдущем примере, набор данных HousePrice.csv содержит 8 столбцов. Но мы взяли два столбца: Цена (старые) - ›XAxis и Price (New) -› Y Axis. На основе этого мы создали нашу линейную модель. Однако это не реальный сценарий. В реальном мире набор данных может иметь несколько функций. Эти функции необходимы для правильного прогнозирования значения.

Вот что мы делаем: вместо того, чтобы рассматривать 2 из 8 столбцов, мы теперь рассматриваем все 8 столбцов (помните, что столбец даты не является функцией, это просто информация. Так что мы можем просто опустить это). Это оставляет нам 7 функций в качестве оси X и 1 функцию в качестве оси Y или целевое значение. Код приведен ниже. Для получения любой информации о множественной регрессии проверьте Часть линейной регрессии: 1

import pandas
import numpy as np
#load csv file
df=pandas.read_csv('./DataSet/HousePrice.csv')
print(df.describe())
df=df.drop(['Date'],axis=1)
X=df[list(df.columns)[:-1]]
Y=df[list(df.columns)[-1]]
#print(X)
#print(Y)
from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest=train_test_split(X,Y,random_state=0)
from sklearn.linear_model import LinearRegression
reg=LinearRegression()
reg.fit(xtrain,ytrain)
print(list(reg.predict(xtrain))[:5])
print(reg.score(xtest,ytest))

Импорт файла CSV с помощью библиотеки Pandas:

df=pandas.read_csv('./DataSet/HousePrice.csv')
print(df.describe())

Pandas .read_csv () читает файлы csv из определенного места. Есть и другие варианты. См .: Pandas.read_csv ()

Отбросьте ненужные данные (в этой таблице это столбец [«Дата»])

df.drop(['Date'],axis=1)

Это Функции, присутствующие в наборе данных после удаления «Дата».

[| Цена (все) | Изменить (все) | Цена (новая) | Изменить (новая) |

Цена (современная) | Изменить (современная) | Цена (более ранняя) | Изменить (более ранняя) | ]

Определить X (набор функций) и Y (цель)

X=df[list(df.columns)[:-1]]
Y=df[list(df.columns)[-1]]

list () - ›Преобразует имена столбцов в формат списка.

[«Цена (все)», «Изменить (все)», «Цена (новая)», «Изменить (новая)», «Цена (современная)», «Изменить (современная)», «Цена (более ранняя)»]

[: -1] - ›означает до n-1-го элемента в списке

[: 1] - ›Только n-1-й элемент в lisy = t

Итак, Y или наша целевая функция становится «Цена (новая)», а оставшаяся часть становится нашим набором функций или X

X = ['Цена (все)', 'Изменить (все)', 'Цена (новая)', 'Изменить (новая) »,' Цена (современная) ',' Изменить (современная) ',' Цена (более ранняя) ']

Y = [Изменить (предыдущее)]

from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest=train_test_split(X,Y,random_state=0)
from sklearn.linear_model import LinearRegression
reg=LinearRegression()
reg.fit(xtrain,ytrain)

TrainTestSplit делит набор данных на 75% обучающих 25% тестовых данных

xTrain, xTest, yTrain, yTest = train_test_split (X, Y)

LinearRegression (). fit (X, Y) - ›помещает значения x и y в заданную функцию соответственно

Lreg = LinearRegression (). Fit (xTrain, yTrain)

Измерение точности

reg.predict(xTest)
Lreg.score(xTest,yTest)

Методы .score (прогнозируемое значение, ось Y тестовых данных) возвращают показатель точности или процент совпадения прогнозируемого и фактического значений.

.predict (ось x тестовых данных) возвращает список прогнозируемых значений каждого элемента в xTest.

ВЫВОД:

[«Цена (все)», «Изменить (все)», «Цена (новая)», «Изменить (новая)», «Цена (современная)», «Изменить (современная)», «Цена (более ранняя)»]
[32,811615948902435, 9,949265286326835, 31,495573493573865, 9,55246290821825, 2,734303573555142]
Оценка точности: 0,9900852129223513

Как видите, показатель точности составляет 99%.

Я подумал о включении сюда полиномиальной регрессии. Но он заслуживает отдельного поста. Итак, я покажу еще один пример множественной регрессии с использованием бостонского набора данных.

#Code for Boston DataSet 
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

boston = load_boston()
X = boston.data
print(type(X))
print(boston.keys())
print('Feature names:',boston['feature_names'])
Y = boston.target
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, shuffle= True)

lineReg = LinearRegression()
lineReg.fit(X_train, y_train)
print(lineReg.score(X_test, y_test ))

Загрузить набор данных Boston из наборов данных Scikit-Learn:

from sklearn.datasets import load_boston
boston=load_boston()

Определите X и Y и изучите DataSet

print(type(X))
print(boston.keys())
print('Feature names:',boston['feature_names'])
X = boston.data
Y = boston.target

Когда вы дадите boston.keys () - ›, это вернет основные функции бостонских данных.

dict_keys ([‘feature_names’, ‘DESCR’, ‘target’, ‘data’])

‘Feature_names’ - ›название объекта или столбцы набора данных или, проще говоря,« X »

‘DESCR’ - ›описание каждой функции

‘Target’ - ›целевое значение или« Y »

‘Data’ - ›значения данных

print('Feature names:',boston['feature_names'])
print('DESCR:',boston['DESCR'])
print('Target ':',boston['target'])
print('data:',boston['data'])

Та же старая и та же старая линейная регрессия

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, shuffle= True)

lineReg = LinearRegression()
lineReg.fit(X_train, y_train)
print(lineReg.score(X_test, y_test ))

Попробуйте сами

Следуйте за мной на YouTube: учебники по Python и продвинутое программирование на Python



Следите за моим блогом