机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn

这篇具有很好参考价值的文章主要介绍了机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

决策树是一种监督机器学习算法,用于回归和分类任务。树是可以处理复杂数据集的强大算法。
决策树特性:

  • 不需要数值输入数据进行缩放。无论数值是多少,决策树都不在乎。
  • 不同于其他复杂的学习算法,决策树的结果是可以解释的,决策树不是黑盒类型的模型。
  • 虽然大多数模型都有缺失值的问题,但决策树却没有问题。
  • 树可以处理不平衡的数据集,只需要调整类的权重。
  • 树可以提供特征的重要性或每个特征对模型训练结果的贡献。
  • 树是随机森林和梯度增强机等集成方法的基本构建块。

决策树的工作方式就像一系列if/else问题。假设你想决定买哪辆车。为了买到合适的车,你可以通过问一系列类似的问题来评估安全水平,座位和门的数量。

决策树的一个众所周知的缺点是倾向于容易过拟合数据(基本上假设它们一开始总是过拟合)。克服过拟合的一种方法是减少决策树中的最大深度(称为“max_depth”超参数)。

1.导入模块

import numpy as np
import pandas as pd
import seaborn as sns
import sklearn
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')

2.加载数据

在这个使用决策树的回归任务中,将使用机器CPU(中央处理单元)数据,该数据可在OpenML上获得。这里将使用Sklearn ’ fetch_openml '函数加载它。

该数据集将根据以下数据预测CPU的相对性能:

  • MYCT:以纳秒为单位的机器周期时间(整数)
  • MMIN:最小主存(千字节)(整数)
  • MMAX:最大主存,单位为千字节(整数)
  • cache:以千字节为单位的cache(整数)
  • CHMIN:最小通道数单位(整数)
  • CHMAX:最大通道数单位(整数)
  • PRP:公布的相对性能(整数)(目标变量)
from sklearn.datasets import fetch_openml
machine_cpu = fetch_openml(name='machine_cpu')
machine_data = machine_cpu.data
machine_labels = machine_cpu.target

3.探索性分析数据

在进行探索性分析之前,让我们先获取训练和测试数据。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(machine_data,machine_labels, test_size=0.2,random_state=20)

可视化所有数字特征的直方图。

X_train.hist(bins=50, figsize=(15,10))
plt.show()

机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn,机器学习python,机器学习,python,决策树
或者可以快速使用’ sn.pairplot() '查看数据。

sns.pairplot(X_train)

机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn,机器学习python,机器学习,python,决策树

4.数据预处理

将数据准备为机器学习模型提供适当的格式。
决策树并不关心特征是否缩放。可建立一个Pipeline来缩放特征。

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

scale_pipe = Pipeline([('scaler', StandardScaler())])
X_train_scaled = scale_pipe.fit_transform(X_train)

5.训练决策树回归器

from sklearn.tree import DecisionTreeRegressor
#原始数据上训练
tree_reg = DecisionTreeRegressor()
tree_reg.fit(X_train, y_train)
#在缩放后的数据上训练相同的模型。
tree_reg_scaled = DecisionTreeRegressor()
tree_reg_scaled.fit(X_train_scaled, y_train)

6.评估决策树

先检查训练的均方根误差。不建议根据测试数据对模型进行评估,因为还没有对模型进行改进。这里会写一个函数,让它更简单,避免重复。

from sklearn.metrics import mean_squared_error
def predict(input_data,model,labels):
    preds = model.predict(input_data)
    mse = mean_squared_error(labels,preds)
    rmse = np.sqrt(mse)
    return rmse
predict(X_train, tree_reg, y_train) #9.724590719956222
predict(X_train_scaled, tree_reg_scaled, y_train) #9.724590719956222

正如你所看到的,两者根本没有区别。所以在未来使用决策树的项目中,无论是否缩放数据,预测结果都不会受到影响。

7.改进决策树

改进决策树模型的一种方法是找到max_depth和其他一些参数的正确数量。使用GridSearch来查找最佳超参数。注意,因为数据集比较小,这样做可能会导致过拟合。但这样做是为了学习(你可以把它应用到实际的问题中)

from sklearn.model_selection import GridSearchCV

params_grid = {'max_leaf_nodes': list(range(0, 10)), 'min_samples_split': [0,1,2, 3, 4], 
              'max_depth':[None,0,1,2,3]}

#默认情况下,Refit为true。最好的estimator(估计器)是在整个数据集上训练的
grid_search = GridSearchCV(DecisionTreeRegressor(random_state=42), params_grid, verbose=1, cv=3, refit=True)
grid_search.fit(X_train, y_train)
tree_best = grid_search.best_estimator_
predict(X_train, tree_best, y_train)  #34.999530266023044

可以看到,结果overfitted。
最后可以在测试集上对模型进行评估,用原来的模型。

predict(X_test, tree_reg, y_test)  #42.89411103991738

8.总结

这里学习了决策树背后的基本思想,并使用它来预测CPU性能。在下一个实验中,将使用决策树来完成分类任务,将使用一个真实的数据集,这样就可以实际地改进决策树模型。文章来源地址https://www.toymoban.com/news/detail-830389.html

到了这里,关于机器学习-决策树-回归-CPU(中央处理单元)数据-python scikit-learn的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包