请写出符合以下要求的代码 使用CART 决策树预测Boston房价 要求: ① 对数据集进行预处理,如归一化 ② 划分其中70%为训练集,30%为测试集 ③ 构建CART 决策树模型进行回归预测 ④ 分析多种参数设置下的预测指标变化
时间: 2024-10-14 07:11:06 浏览: 16
python使用ID3、C4.5、CART实现西瓜数据集决策树并画出图像
为了满足你的要求,我们可以使用Python的scikit-learn库来完成波士顿房价预测的CART决策树模型。这里是一个示例代码片段,展示了如何进行数据预处理、划分数据集、构建模型以及参数调整后的预测指标分析:
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error, r2_score
# 1. 加载波士顿房价数据
boston_data = load_boston()
X = boston_data.data
y = boston_data.target
# 2. 数据预处理 - 归一化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 3. 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
# 4. 构建CART决策树模型
model = DecisionTreeRegressor(random_state=42)
# 5. 参数优化 - 定义参数网格和评估指标
param_grid = {
'max_depth': [None, 10, 20, 30],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}
grid_search = GridSearchCV(model, param_grid, cv=5, scoring=['neg_mean_squared_error', 'r2'], return_train_score=True)
grid_search.fit(X_train, y_train)
# 获取最佳参数和结果
best_params = grid_search.best_params_
best_model = grid_search.best_estimator_
# 6. 预测并分析指标
y_pred = best_model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Best parameters: {best_params}")
print(f"MSE: {mse}, R²: {r2}")
# 分析指标变化
results = grid_search.cv_results_
for metric in results['mean_test_score'].keys():
print(f"{metric.capitalize()}:")
for i, params in enumerate(results['params']):
print(f" {i+1}. {params} - Mean: {results['mean_test_score'][i][metric]}, StdDev: {results['std_test_score'][i][metric]}")
```
在这个代码中,我们首先进行了数据预处理(归一化),然后划分了训练集和测试集。接着,我们使用GridSearchCV来进行参数搜索,找到最优的模型配置。最后,我们对测试集进行预测,并分析了不同参数设置下预测指标的变化情况。
阅读全文