美文网首页
ML 监督学习 回归 树回归

ML 监督学习 回归 树回归

作者: XinY_VV | 来源:发表于2020-03-21 19:00 被阅读0次

Scikit-Learn用分裂回归树(Classification And Regression Tree,简称 CART)算法训练决策树。 在 sklean.tree 包中实现了 CART 模型,分别用 DecisionTreeClassifier 和DecisionTreeRegressor 实现了分类树和回归树。

首先使用单个特征和阈值 (例如,“花瓣长度 ≤2.45cm ”)将训练集分成两个子集当它成功的将训练集分成两部分之后,它将会继续使用相同的递归式逻辑继续的分割子集, 然后是子集的子集。

通常,算法使用Gini 不纯度来进行检测

CART算法是一种贪婪算法:它贪婪地搜索最高级别的最佳分割方 式,然后在每个深度重复该过程。 它不检查分割是否能够在几个级别中的全部分割可能 中找到最佳方法。贪婪算法通常会产生一个相当好的解决方法,但它不保证这是全局中 的最佳解决方案。

Regression

CART算法使用后剪枝法。有些样本集由于样本数太少而不能分出独立的测试样本集,CART算法采用一种称为交叉确定(crossvalidation)的剪枝方法。该方法解决了在小样本集上挖掘决策树由于没有独立测试样本集而造成的过度拟合问题。不过CART算法最初建立的树也有错误率,因为有些叶子节点并不是纯的。

回归树不再以最小化不 纯度的方式分割训练集,而是试图以最小化MSE 的方式分割训练集。

Cost Function
###### Regression #####
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn.metrics import mean_squared_error

from sklearn.tree import DecisionTreeRegressor

# Load data
boston = datasets.load_boston()
print(boston.data.shape, boston.target.shape)
print(boston.feature_names)

data = pd.DataFrame(boston.data,columns=boston.feature_names)
data = pd.concat([data,pd.Series(boston.target,name='MEDV')],axis=1)
data.head()

X = data.iloc[:,:-1]
y = data.iloc[:,-1]

x_training_set, x_test_set, y_training_set, y_test_set = train_test_split(X,y,test_size=0.10,random_state=40)

# Fit regression model
model =  DecisionTreeRegressor(max_depth=5,random_state=0)
model.fit(x_training_set, y_training_set)

from sklearn.metrics import mean_squared_error, r2_score
model_score = model.score(x_training_set,y_training_set)

print('coefficient of determination R^2 of the prediction.: ',model_score)
y_predicted = model.predict(x_test_set)

# The mean squared error
print("Mean squared error: %.2f"% mean_squared_error(y_test_set, y_predicted))
# Explained variance score: 1 is perfect prediction
print('Test Variance score: %.2f' % r2_score(y_test_set, y_predicted))

from sklearn.model_selection import cross_val_predict

fig, ax = plt.subplots()
ax.scatter(y_test_set, y_predicted, edgecolors=(0, 0, 0))
ax.plot([y_test_set.min(), y_test_set.max()], [y_test_set.min(), y_test_set.max()], 'k--', lw=4)
ax.set_xlabel('Actual')
ax.set_ylabel('Predicted')
ax.set_title("Ground Truth vs Predicted")
plt.show()

相关文章

  • ML 监督学习 回归 树回归

    Scikit-Learn用分裂回归树(Classification And Regression Tree,简称 ...

  • ML 监督学习 回归 线性回归

    1.最小二乘法(Least Square Method): 基于均方误差最小化来进行模型求解的方法 可直接使用sk...

  • 机器学习分类

    监督/非监督学习 监督学习 K近邻算法线性回归逻辑回归支持向量机(SVM)决策树和随机森林神经网络 非监督学习 聚...

  • Types of Machine Learning: Super

    1. 监督学习 or 无监督学习 2. 监督学习 2.1 分类 2.2 回归 2.3 监督学习:分类 & 回归...

  • 算法工程师知识树 持续更新

    机器学习算法 监督学习分类模型LRSVM决策树NB回归模型线性回归 最小二乘融合模型baggingRFboosti...

  • 有监督学习 与 非监督学习 差异

    有监督学习:训练集由输入和输出组成。包括所有的回归算法和分类算法,例如线性回归、决策树、朴素贝叶斯等。 无监督学习...

  • ML 监督学习 分类 逻辑回归

    逻辑回归(logistic regression)又称“对数几率回归。虽然它的名字是回归,但却是一种分类学习方法。...

  • (一)监督学习与无监督学习

    监督学习(Supervised Learning): 分类:1、回归 2、分类 例子: 回归————————...

  • 深度学习的一些基本概念(一)

    申明:非原创,转载自《有监督学习、无监督学习、分类、聚类、回归等概念》 有监督学习、无监督学习、分类、聚类、回归等...

  • 机器学习算法分类

    机器学习算法分类 监督学习(预测)分类:K-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络回归:线性回...

网友评论

      本文标题:ML 监督学习 回归 树回归

      本文链接:https://www.haomeiwen.com/subject/hzeeyhtx.html