CART之回归树构建

转自:https://cethik.vip/2016/09/21/machineCAST/


### 使用CART算法构建决策回归模型 CART(Classification and Regression Trees)是一种经典的决策算法,可以用于解决分类和回归问题。在回归任务中,CART通过递归分裂数据集,以最小化每个节点的不纯度来构建一棵二叉。以下是如何使用CART算法构建决策回归模型的具体步骤。 #### 1. 数据准备 首先需要准备好训练数据,包括特征和目标变量。通常将数据划分为训练集和测试集,以便评估模型性能。 ```python from sklearn.model_selection import train_test_split import pandas as pd # 假设加载一个CSV文件作为示例数据 data = pd.read_csv('your_data.csv') # 分离特征和目标变量 X = data.drop('target_column', axis=1) # 特征 y = data['target_column'] # 目标变量 # 将数据划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` #### 2. 构建CART回归模型 使用Scikit-learn库中的`DecisionTreeRegressor`类,可以轻松地实现CART回归模型。该类默认使用均方误差(MSE)作为分裂准则。 ```python from sklearn.tree import DecisionTreeRegressor # 创建决策回归模型实例 model = DecisionTreeRegressor(random_state=42) # 拟合训练数据 model.fit(X_train, y_train) ``` #### 3. 模型评估 训练完成后,可以通过测试集评估模型性能。常用的回归评估指标包括均方误差(MSE)和决定系数(R²)。 ```python from sklearn.metrics import mean_squared_error, r2_score # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算均方误差 mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse}") # 计算R²得分 r2 = r2_score(y_test, y_pred) print(f"R^2 Score: {r2}") ``` #### 4. 模型保存与加载 训练好的模型可以保存到磁盘,以便后续直接加载并使用。 ```python from joblib import dump, load # 保存模型 dump(model, 'cart_regression_model.joblib') # 加载模型 loaded_model = load('cart_regression_model.joblib') ``` #### 5. 进行预测 加载模型后,可以使用它对新数据进行预测。 ```python # 示例预测对象 jack = { 'Feature1': [value1], 'Feature2': [value2], ... } # 转换为DataFrame格式 df_predict = pd.DataFrame(jack) # 进行预测 prediction = loaded_model.predict(df_predict) print(prediction) ``` #### 6. 参数调优 可以通过调整超参数来优化模型性能,例如设置最大深度、最小样本分割数等。 ```python # 创建带有自定义参数的决策回归模型 model = DecisionTreeRegressor(max_depth=5, min_samples_split=10, random_state=42) # 再次拟合数据 model.fit(X_train, y_train) ``` #### 7. 结构可视化 如果希望直观查看决策的结构,可以使用`plot_tree`函数进行可视化。 ```python from sklearn.tree import plot_tree import matplotlib.pyplot as plt plt.figure(figsize=(20,10)) plot_tree(model, feature_names=X.columns, filled=True, fontsize=10) plt.show() ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值