Python scikit-learn:为什么我的 LinearRegression 分类器的分数这么低?

生日

我正在编写一个脚本,该脚本将预测给定未来日期服务器上已用磁盘空间的百分比。使用百分比从这个命令中获取 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]

所以这让我认为LinearRegression只要 Y 轴数据大部分是线性的它就可以很好地作为分类器。当然,在现实世界中的磁盘空间会像在我的原始数据集中一样波动,所以这就是为什么我想也许我应该使用不同的分类器,但我尝试过sklearn.svm.SVR(),结果也很差。

我想逻辑回归方法可以代替线性回归,在接下来的几天里它的使用率可能超过 90%,或者没有。或者我简要地阅读了“时间序列预测”,但我不确定这是否符合标准(我是机器学习的新手......)。我很灵活,只是真的质疑我的设置有什么问题,以及我是否需要完全采用新方法。

感谢您提供任何建议和特定编辑以改进代码。

乔·帕滕

当您使用线性回归时。您实际上只是将一条线拟合到数据中。如果数据不是线性的,那么这不是一个很好的方法。请注意,您的数据与日期不是线性的:

在此处输入图片说明

在您的数据上拟合一条线(即做 LinearRegression)给您一条线,它不是您的数据的一个很好的预测器:

在此处输入图片说明

然而,您的数据的子集更线性。例如,如果从第 8 天开始使用线性回归,则会得到以下行:

在此处输入图片说明

你的“分数”一路上升。运行你的代码 1000 次(在这个数据子集上)给出的平均分数为 0.875857。您可能想提出一个模型来解释这样一个事实:在某个百分比时,用户可能会删除文件以释放更多空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

scikit-学习的LinearRegression出现意外的交叉验证分数

来自分类Dev

scikit-learn获取分类的确定性/所选类别的分类器分数

来自分类Dev

带有scikit-learning LinearRegression的意外交叉验证分数

来自分类Dev

使用带有不同熊猫数据框的scikit-learn运行LinearRegression模型(循环问题)

来自分类Dev

如何使用 scikit LinearRegression 选择系数

来自分类Dev

在scikit-learn python中结合两个不同的分类器结果

来自分类Dev

scikit-learn ExtraTreesClassifier-为什么泡菜文件这么大?(数GB)

来自分类Dev

为什么scikit-learn的随机森林使用这么多内存?

来自分类Dev

scikit-learn ExtraTreesClassifier-为什么泡菜文件这么大?(数GB)

来自分类Dev

Python scikit-learn-TypeError

来自分类Dev

scikit-learn中处理nan / null的分类器

来自分类Dev

scikit-learn中多类问题的级联分类器

来自分类Dev

Scikit-learn Ridge分类器:提取类概率

来自分类Dev

Scikit-learn Ridge分类器:提取类概率

来自分类Dev

matplotlib:为什么未显示 LinearRegression 线?

来自分类Dev

Python scikit-learn KMeans在计算轮廓分数时被杀死(9)

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

Scikit-Learn中的分类数据转换

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

处理 scikit-learn MLPClassifier 的分类标签

来自分类Dev

线性回归的模拟scikit-learn python

来自分类Dev

为什么GridSearchCV不能给出最佳分数?-Scikit学习

来自分类Dev

为什么我们用sklearn导入scikit-learn?

来自分类Dev

为什么我的WiFi速度这么低?

来自分类Dev

使用 LinearRegression Python 进行递归特征消除

来自分类Dev

Python 中的 LinearRegression 给出了错误的结果?

来自分类Dev

使用scikit-learn(或任何其他python框架)集成不同类型的回归器

来自分类Dev

如何使用scikit-learn执行集成(多分类器)分类?

来自分类Dev

如何为随机森林分类器,Ada Boost分类器,Extra Trees分类器访问python scikit学习代码

Related 相关文章

  1. 1

    scikit-学习的LinearRegression出现意外的交叉验证分数

  2. 2

    scikit-learn获取分类的确定性/所选类别的分类器分数

  3. 3

    带有scikit-learning LinearRegression的意外交叉验证分数

  4. 4

    使用带有不同熊猫数据框的scikit-learn运行LinearRegression模型(循环问题)

  5. 5

    如何使用 scikit LinearRegression 选择系数

  6. 6

    在scikit-learn python中结合两个不同的分类器结果

  7. 7

    scikit-learn ExtraTreesClassifier-为什么泡菜文件这么大?(数GB)

  8. 8

    为什么scikit-learn的随机森林使用这么多内存?

  9. 9

    scikit-learn ExtraTreesClassifier-为什么泡菜文件这么大?(数GB)

  10. 10

    Python scikit-learn-TypeError

  11. 11

    scikit-learn中处理nan / null的分类器

  12. 12

    scikit-learn中多类问题的级联分类器

  13. 13

    Scikit-learn Ridge分类器:提取类概率

  14. 14

    Scikit-learn Ridge分类器:提取类概率

  15. 15

    matplotlib:为什么未显示 LinearRegression 线?

  16. 16

    Python scikit-learn KMeans在计算轮廓分数时被杀死(9)

  17. 17

    使用scikit-learn处理分类特征

  18. 18

    Scikit-Learn中的分类数据转换

  19. 19

    使用scikit-learn处理分类特征

  20. 20

    处理 scikit-learn MLPClassifier 的分类标签

  21. 21

    线性回归的模拟scikit-learn python

  22. 22

    为什么GridSearchCV不能给出最佳分数?-Scikit学习

  23. 23

    为什么我们用sklearn导入scikit-learn?

  24. 24

    为什么我的WiFi速度这么低?

  25. 25

    使用 LinearRegression Python 进行递归特征消除

  26. 26

    Python 中的 LinearRegression 给出了错误的结果?

  27. 27

    使用scikit-learn(或任何其他python框架)集成不同类型的回归器

  28. 28

    如何使用scikit-learn执行集成(多分类器)分类?

  29. 29

    如何为随机森林分类器,Ada Boost分类器,Extra Trees分类器访问python scikit学习代码

热门标签

归档