У меня есть скрипт полиномиальной регрессии, который корректно работает для прогнозирования значений по осям X и Y, в моем примере я использую потребление ЦП, ниже мы видим пример набора данных:
Полный набор данных
Где time
представляет время сбора, например:
1 = 1 minute
2 = 2 minute
И т. Д. ...
И consume
- это значение использования процессора для этой минуты, суммирование этого набора данных демонстрирует поведение хоста в течение 30 минут, каждое значение соответствует одной минуте в порядке возрастания (1мин, 2мин, 3мин ...)
Результат для этого:
С этим алгоритмом:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('data.csv')
X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values
# 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)
# Fitting Polynomial Regression to the dataset
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X)
pol_reg = LinearRegression()
pol_reg.fit(X_poly, y)
# Visualizing the Polymonial Regression results
def viz_polymonial():
plt.scatter(X, y, color='red')
plt.plot(X, pol_reg.predict(poly_reg.fit_transform(X)), color='blue')
plt.title('Polynomial Regression for CPU')
plt.xlabel('Time range')
plt.ylabel('Consume')
plt.show()
return
viz_polymonial()
# 20 = time
print(pol_reg.predict(poly_reg.fit_transform([[20]])))
В чем проблема?
Если мы продублируем этот набор данных так, что 30-минутный диапазон будет отображаться дважды, алгоритм не поймет эти данные набор и его результат не так эффективен, пример набора данных:
-> До time = 30
* 1 043 * -> До time = 30
Полный набор данных
Примечание: В случае, если он имеет 60 значений, где каждые 30 значений представляют диапазон 30 минут, как если бы они были разными днями сбора.
Результат, который он показывает, таков:
Цель: Мне бы хотелось, чтобы синяя линия, представляющая полиномиальную регрессию, была похожа на первое изображение результата, которое мы видим выше, демонстрирует al oop, где точки связаны, как если бы алгоритм не удался.
Источник исследования