Прежде чем мы приступим к делу, я хочу немного рассказать вам о регрессии опорных векторов (SVR). Этот алгоритм может дать гибкость для указания того, сколько ошибок может быть принято для модели и найти, какая строка соответствует данным. Это выглядит иначе для общего алгоритма наименьших квадратов, основная функция SVR хороша для минимизации коэффициента, особенно коэффициента вектора l2-нормы.

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

Факт о данных содержит рейтинг расхода топлива и оценку выбросов углекислого газа для легкового автомобиля в Канаде. Внутри он имеет одиннадцать столбцов и 1067 строк.

viz = cdf[['CYLINDERS','ENGINESIZE','CO2EMISSIONS','FUELCONSUMPTION_COMB']]
viz.hist()
plt.show()

Основываясь на этом рисунке, мы видим, что данные о выбросах CO2 имеют нормальное распределение, в то время как данные о двигателе и расходе топлива имеют распределение асимметрии, направленное вправо, а данные по цилиндрам имеют ненормальное распределение, поскольку данные не накапливаются.

plt.scatter(cdf.FUELCONSUMPTION_COMB, cdf.CO2EMISSIONS,  color='blue')
plt.xlabel("FUELCONSUMPTION_COMB")
plt.ylabel("Emission")
plt.show()

На графике представлена ​​информация о взаимосвязи между двумя переменными (выбросы и расход топлива). В целом, эти точки на диаграмме рассеяния означают, что выбросы и расход топлива имеют положительную корреляцию, и если выбросы увеличились, то и расход топлива будет иметь такое же условие. Это возможно из-за того, что выбросы транспортного средства зависят от расхода топлива.

Принимая во внимание, что связь между выбросами и объемом двигателя имеет положительную корреляцию, но не является существенной, как раньше. Это, по-видимому, предполагает, что если объем двигателя имеет большее значение, то выбросы в этом состоянии также не имеют большего значения.

После того, как мы проведем исследование данных, мы можем сделать следующий шаг, точно обучив модели с помощью алгоритма SVR. В этом случае я разделяю данные на 80 % данных обучения и 20 % данных испытаний, с выбросами в качестве зависимой переменной и объемом двигателя в качестве независимой переменной.

X = cdf.iloc[:, 0].values
y = cdf.iloc[:, 3].values
X = X.reshape(-1,1)
y = y.reshape(-1,1)
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
# Fitting SVR to the dataset
from sklearn.svm import SVR
regressor = SVR(kernel = 'linear')
#linear = Linear Kernel
regressor.fit(X, y)

В приведенном выше коде мы используем линейное ядро ​​алгоритма SVR, потому что в этом случае мы выбираем 2 переменные из данных.

# Visualising the SVR results
plt.scatter(X, y, color = 'blue')
plt.plot(X, regressor.predict(X), color = 'red')
plt.title('Emission Dataset')
plt.xlabel('Engine Size')
plt.ylabel('Emission')
plt.show()

Они иллюстрируют и представляют красную линию как данные регрессии модели. С этого момента видно, что модель хорошо согласуется с обучающими данными, однако все еще есть много данных, которые далеки от красной линии. Это явно связано с тем, что мы не используем очистку данных, потому что внутри данных может быть много выбросов, которые создают это условие в модели. Поэтому очень важно выполнить очистку данных перед моделированием с помощью алгоритма в случае машинного обучения.

from sklearn.metrics import r2_score
test_x = np.asanyarray(cdf[['ENGINESIZE']])
test_y = np.asanyarray(cdf[['CO2EMISSIONS']])
test_y_ = sc_y.inverse_transform(regressor.predict(sc_X.transform(test_x)))
print("Mean absolute error: %.2f" % np.mean(np.absolute(test_y_ - test_y)))
print("Residual sum of squares (MSE): %.2f" % np.mean((test_y_ - test_y) ** 2))
print("R2-score: %.2f" % r2_score(test_y_ , test_y) )

Оценка, которую мы построили на основе данных о расходе топлива с помощью алгоритма SVR, дает менее 70% оценки r2. Одной из причин этого может быть то, что мы должны подготовить данные, прежде чем моделирование будет лучше в другом случае с этим алгоритмом. К вашему сведению, алгоритм SVR включает алгоритм, который очень чувствителен к выбросам данных.

Я надеюсь, что вы можете сделать все возможное, а не я, вы можете сделать с другим алгоритмом или использовать другие данные очистки или какой-то процесс, который я не использовал в этом случае.

Итак, мой блог подходит к концу, я очень благодарен вам за внимание, которое читает этот блог, и я просто извиняюсь, если в этом блоге встречаются какие-то неправильные слова. Люблю вас ребята! Увидимся в другом блоге.