- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个脚本,该脚本将预测给定 future 日期的服务器上已用磁盘空间的百分比。 Use% 从此命令中获取 1 次/天,如下所示:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 30G 24G 4.4G 85% /
并与日期一起记录。该脚本是用 Python 编写的,缺点是当我使用 LinearRegression 作为分类器时,我得到的分数非常低。代码如下:
import pandas as pd
import numpy as np
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression
# list of tuples whose format is (day_of_month, percent_used)
results = [(1, 83), (2, 87), (3, 87), (4, 87), (5, 89), (6, 88), (7, 83), (8, 75), (9, 73), (10, 73), (11, 74), (12, 77), (13, 77), (14, 79), (15, 79), (16, 79), (17, 79), (18, 79), (19, 80), (21, 80), (22, 81), (23, 84), (24, 85), (25, 85), (26, 85), (27, 85), (28, 85)]
labels = ['day', 'pct_used']
df = pd.DataFrame.from_records(results, columns=labels)
# convert list of days into a numpy array and reshape
X = np.array(df['day']).reshape(-1,1)
y = np.array(df['pct_used'])
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.4)
clf = LinearRegression(n_jobs=-1)
clf.fit(X_train, y_train)
print clf.score(X_test, y_test)
# predict day 30's pct_used value
print clf.predict(np.array([30]).reshape(-1,1))
它输出:
-0.19521578836110454
[81.22057369]
其中clf.score
每次都是负数。我希望得到积极的结果,并且至少为 0.95 或更高,这样我就可以对预测充满信心。我不确定我是否使用了错误的分类器、需要更多数据、需要更多功能,或者在代码中做了其他错误的事情。
我发现的一些有趣的事情是,如果我更改初始结果列表以使 pct_used 更加线性增加,例如:
results = [(1, 73), (2, 73), (3, 74), (4, 75), (5, 76), (6, 77), (7, 78), (8, 78), (9, 80), (10, 80), (11, 81), (12, 82), (13, 83), (14, 84), (15, 85), (16, 85), (17, 85), (18, 86), (19, 86), (21, 87), (22, 88), (23, 89), (24, 89), (25, 90), (26, 91), (27, 91), (28, 92)]
然后分数会随着这个输出而飙升:
0.9852576797564747
[94.37028796]
所以这让我认为,只有当 Y 轴数据大部分是线性的时,LinearRegression
才能很好地用作分类器。当然,在现实世界中,磁盘空间的波动就像在我的原始数据集中一样,所以这就是为什么我想也许我应该使用不同的分类器,但我尝试了 sklearn.svm.SVR() 和这也是非常糟糕的分数。
我认为逻辑回归方法可以代替线性回归,在接下来的几天内使用率可能会超过 90%,也可能不会。或者我简要地阅读了有关“时间序列预测”的内容,尽管我不确定这是否符合标准(我是机器学习的新手......)。我很灵活,只是真正质疑我的设置出了什么问题,以及我是否需要完全采用新方法。
感谢您为改进代码提供的任何建议和具体编辑。
最佳答案
当您使用线性回归时。您实际上只是在数据中拟合一条线。如果数据不是线性的,那么这不是一个很好的方法。请注意,您的数据与日期之间不是线性的:
在数据上拟合一条线(即进行线性回归)得到的线不能很好地预测数据:
但是,您的数据的某些子集更加线性。例如,如果您从第 8 天开始使用线性回归,则会得到以下行:
你的“分数”大幅上升。运行代码 1000 次(在这部分数据上),平均得分为 0.875857。您可能想要提出一个模型来解释这样一个事实:在一定百分比下,用户可能会删除文件以释放更多空间。
关于Python scikit-学习 : Why is my LinearRegression classifier's score so low?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54227194/
我做了一个非常简单的程序,它从 csv 文件中获取数据列,这里是文件数据的简短预览: ,matchId,blue_win,blueGold,blueMinionsKilled,blueJungleMi
我正在尝试解决线性回归问题,并且正在使用 sklearn 中的 LinearRegression() 函数。是否可以显示权重和偏差? 最佳答案 拟合模型后,使用coef_属性来检索权重并使用inter
我正在尝试使用 scikit-learn 库进行特征选择。我的数据很简单。行是样本,列是特征。虽然原来的类标签是 X 和 Y,但我将它们更改为数字以进行线性回归,X 为 0,Y 为 1。 G1 G2
我在 Python ( sklearn ) 中进行多元线性回归,但出于某种原因,系数未作为列表正确返回。相反,返回列表中的列表: from sklearn import linear_model cl
import os import pandas as pd import matplotlib.pyplot as plt from sklearn.pipeline import Pipeline
我正在使用 sklearn.linear_model 和模块 LinearRegression 执行一个简单的自回归模型。你可以在下面看到我的代码。训练数据集位于 train 中,X 包含目标的滞后版
我有一个这样的列表: list1 = [['2012', '1', '3', '1', '832.0', '261.0', '100.00'], ['2012', '1', '5', '1', '5
当我尝试使用 scikit-learn LinearRegression 时,模型表现不佳,但是,当我尝试 scipy 线性回归时,它运行良好,数据集很简单,逻辑或者代码有缺陷吗? 我尝试了多个 se
我是机器学习的初学者。这只是一个简单的问题,LinearRegression()中的coef_代表什么?我知道它代表系数,但我不明白这些值,高且正的 coef_ 是否意味着更强的关系? 而且,如果 c
从一个示例开始,我尝试进行线性回归。问题是我得到了错误的结果。作为拦截器我应该有:2.2。 我尝试添加在另一篇文章中找到的 .optimizer.setStepSize(0.1),但仍然得到一个奇怪的
我正在一个简单的数据集上尝试 scikit-learn LinearRegression 模型(来自 Andrew NG coursera 类(class),我并不重要,请查看图表以供引用) 这是我的
所以我正在开展一个项目,该项目使用 RFECV 进行特征选择,然后对所选变量进行岭回归。 数据集的结构方式我有一个 train_y = 因变量,train_x = 数据框中的所有其他内容(变量在其他模
我想要模型的公式以便在其他语言/项目中使用它。有没有办法从模型中导出公式? 我将使用 sklearn linear regression model . 我最终想做的是:给定一个公式 f() 和数据集
我正在尝试进行多变量线性回归。但我发现 sklearn.linear_model 工作起来很奇怪。这是我的代码: import numpy as np from sklearn import line
我正在尝试根据各种其他因素预测调用中心的调用量。我有一个相当干净的数据集,也相当小,但足够了。我能够训练和测试历史数据并获得分数、摘要等。我一生都无法弄清楚如何使用预测因子数据来预测 future 的
我一直在尝试按照 bigdataexaminer 上的教程通过线性回归来拟合这些数据。直到此时一切都运行良好。我从 sklearn 导入了 LinearRegression,并打印出系数的数量就好了。
我最近开始使用线性回归进行机器学习。我使用了 LinearRegression (lr) 来预测一些值。事实上,我的预测很糟糕,我被要求更改超参数以获得更好的结果。 我使用以下命令获取超参数: lr.
from sklearn.linear_model import LinearRegression 在 Jupyter Notebook 中给了我这个错误: ---------------------
据我了解,scikit-learn 中的 LinearRegression 类和 SGDRegressor 类都执行线性回归。但是,只有 SGDRegressor 使用梯度下降作为优化算法。 那么Li
我正在尝试计算日期值对的趋势值。 我正在使用 Robert Sedgewick 和 Kevin Wayne 的 LinearRegression.java。 https://algs4.cs.prin
我是一名优秀的程序员,十分优秀!