不同时间段的机器学习

我有一个多项式回归脚本,它可以正确地预测X和Y轴的值,在我的例子中,我使用的是CPU消耗,下面我们可以看到数据集的一个例子:

enter image description here

完整数据集

其中time表示收集时间,例如:

1 = 1分钟2 = 2分钟

依此类推…

consume是该分钟内CPU的使用值,总结这个数据集展示了主机在30分钟内的行为,每个值对应一分钟,按升序排列(1分钟,2分钟,3分钟…)

结果如下:

enter image description here

使用以下算法:

# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport pandas as pd# 导入数据集dataset = pd.read_csv('data.csv')X = dataset.iloc[:, 1:2].valuesy = dataset.iloc[:, 2].values# 将数据集拆分为训练集和测试集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)# 对数据集进行多项式回归拟合from sklearn.preprocessing import PolynomialFeaturespoly_reg = PolynomialFeatures(degree=4)X_poly = poly_reg.fit_transform(X)pol_reg = LinearRegression()pol_reg.fit(X_poly, y)# 可视化多项式回归结果def viz_polymonial():    plt.scatter(X, y, color='red')    plt.plot(X, pol_reg.predict(poly_reg.fit_transform(X)), color='blue')    plt.title('CPU的多项式回归')    plt.xlabel('时间范围')    plt.ylabel('消耗')    plt.show()    returnviz_polymonial()# 20 = 时间print(pol_reg.predict(poly_reg.fit_transform([[20]])))

问题是什么?

如果我们复制这个数据集,使30分钟的范围出现2次,算法无法理解数据集,其结果也不够有效,数据集的示例如下:

enter image description here –> 直到time = 30enter image description here –> 直到time = 30

完整数据集

注意: 在这种情况下,它有60个值,每30个值代表30分钟的范围,就像它们是不同的收集日一样。

它显示的结果是这样的:

enter image description here

目标: 我希望代表多项式回归的蓝色线条与第一个结果图像类似,上面展示的图像显示了一个循环,其中点被连接起来,好像算法出现了错误。

研究来源


回答:

问题在于在第二种情况下,您使用X = 1, 2, … 30, 1, 2, … 30进行绘图。绘图函数会连接连续的点。如果您仅使用pyplot绘制散点图,您会看到漂亮的回归曲线。或者您可以使用argsort。以下是包含绿色散点图和黑色argsort线条的代码。

import numpy as npimport matplotlib.pyplot as pltimport pandas as pdfrom sklearn.linear_model import LinearRegression# 导入数据集# dataset = pd.read_csv('data.csv')dataset = pd.read_csv('data.csv')X = dataset.iloc[:, 1:2].valuesy = dataset.iloc[:, 2].values# 将数据集拆分为训练集和测试集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)# 对数据集进行多项式回归拟合from sklearn.preprocessing import PolynomialFeaturespoly_reg = PolynomialFeatures(degree=4)X_poly = poly_reg.fit_transform(X)pol_reg = LinearRegression()pol_reg.fit(X_poly, y)# 可视化多项式回归结果def viz_polymonial():    plt.scatter(X, y, color='red')    indices = np.argsort(X[:, 0])    plt.scatter(X, pol_reg.predict(poly_reg.fit_transform(X)), color='green')    plt.plot(X[indices], pol_reg.predict(poly_reg.fit_transform(X))[indices], color='black')    plt.title('CPU的多项式回归')    plt.xlabel('时间范围')    plt.ylabel('消耗')    plt.show()    returnviz_polymonial()# 20 = 时间print(pol_reg.predict(poly_reg.fit_transform([[20]])))

这是针对更大数据集的输出图像。enter image description here

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注