波士顿房价预测

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split #分割数据
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.linear_model import SGDRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import GradientBoostingRegressor

#读取数据存储在变量data,target中
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]
print(data.shape)
print(target.shape)

#数据分割
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3)#随机种子30%测试集的数据作为测试集
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

#数据标准化
scaler_X = StandardScaler()
scaler_y = StandardScaler()
#分别对训练和测试数据的特征及目标值进行标准化处理
X_train = scaler_X.fit_transform(X_train)
X_test = scaler_X.transform(X_test)
y_train = scaler_y.fit_transform(y_train.reshape(-1,1))#转换为二维数组将目标值转换为二维数组
y_test = scaler_y.transform(y_test.reshape(-1,1))#转换为二维数组转换为二维数组

#使用默认参数值实例化线性回归模型
lr = LinearRegression()
#使用训练数据进行训练
lr.fit(X_train, y_train)#ravel()将一维数组转换为二维数组
#对测试数据进行回归预测
lr_y = lr.predict(X_test)
#计算预测值与真实值之间的差异
print("LinearRegression的R_square值为:", r2_score(y_test, lr_y))#计算预测值与真实值之间的差异R_square值为:0.7777777777777777
print("LinearRegression的MSE(均方误差)值为:", mean_squared_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y)))#计算预测值与真实值之间的差异MSE(均方误差)值为:0.28125
print("LinearRegression的MAE(平均绝对误差)值为:", mean_absolute_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y)))#计算预测值与真实值之间的差异MAE(平均绝对误差)值为:0.21875
print("LinearRegression的RMSE(均方根误差)值为:", np.sqrt(mean_squared_error(scaler_y.inverse_transform(y_test), scaler_y.inverse_transform(lr_y))))#计算预测值与真实值之间的差异RMSE(均方根误差)值为:0.53934
print("LinearRegression自带的评估函数评估结果为:", lr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")
print("-----"*50)

#使用SGDRegessor进行回归预测
sgdr = SGDRegressor(max_iter=10,tol=None)
#使用训练数据进行训练
sgdr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SGDRegressor进行自带的评估函数
print("SGDRegressor自带的评估函数评估结果为:", sgdr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用KNeighborsRegressor进行回归预测
knr_uni = KNeighborsRegressor(n_neighbors=5, weights='uniform')#默认参数值n_neighbors为邻居数量,weights为权重
#使用训练数据进行训练
knr_uni.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用KNeighborsRegressor进行自带的评估函数
print("KNeighborsRegressor自带的评估函数评估结果为:", knr_uni.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")
#uniform与distance的区别:uniform为平均权重,最近邻样本权重相同,distance为距离权重,权重与距离成反比
knr_dis = KNeighborsRegressor(n_neighbors=5, weights='distance')#默认参数值n_neighbors为邻居数量,weights为权重
#使用训练数据进行训练
knr_dis.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用KNeighborsRegressor进行自带的评估函数
print("KNeighborsRegressor自带的评估函数评估结果为:", knr_dis.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#房价预测-支持向量回归
#linear核函数 poly rbf三者的区别:linear为线性核函数,poly为多项式核函数,rbf为径向基核函数
svr_lin= SVR(kernel='linear')#默认参数值kernel为核函数,linear为线性核函数
#使用训练数据进行训练
svr_lin.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_linear自带的评估函数评估结果为:", svr_lin.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

svr_poly= SVR(kernel='poly')#默认参数值kernel为核函数,poly为多项式核函数
#使用训练数据进行训练
svr_poly.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_poly自带的评估函数评估结果为:", svr_poly.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

svr_rbf= SVR(kernel='rbf')#默认参数值kernel为核函数,rbf为径向基核函数
#使用训练数据进行训练
svr_rbf.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用SVR进行自带的评估函数
print("SVR_rbf自带的评估函数评估结果为:", svr_rbf.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用DecisionTreeRegressor进行回归预测
dtr = DecisionTreeRegressor()
#使用训练数据进行训练
dtr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用DecisionTreeRegressor进行自带的评估函数
print("DecisionTreeRegressor自带的评估函数评估结果为:", dtr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")


#使用RandomForestRegressor进行回归预测
rfr = RandomForestRegressor(n_estimators=10)#默认参数值n_estimators为决策树的数量
#使用训练数据进行训练
rfr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用RandomForestRegressor进行自带的评估函数
print("RandomForestRegressor自带的评估函数评估结果为:", rfr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用ExtraTreesRegressor进行回归预测
etr = ExtraTreesRegressor(n_estimators=10)#默认参数值n_estimators为决策树的数量
#使用训练数据进行训练
etr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用ExtraTreesRegressor进行自带的评估函数
print("ExtraTreesRegressor自带的评估函数评估结果为:", etr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")#使用Ra

#使用AdaBoostRegressor进行回归预测
abr = AdaBoostRegressor()
#使用训练数据进行训练
abr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用AdaBoostRegressor进行自带的评估函数
print("AdaBoostRegressor自带的评估函数评估结果为:", abr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.7777777777777777")

#使用GradientBoostingRegressor进行回归预测
gbr = GradientBoostingRegressor()
#使用训练数据进行训练
gbr.fit(X_train, y_train.ravel())#ravel()将一维数组转换为二维数组
#使用GradientBoostingRegressor进行自带的评估函数
print("GradientBoostingRegressor自带的评估函数评估结果为:", gbr.score(X_test, y_test))#计算预测值与真实值之间的差异自带的评估函数评估结果为:0.77

波士顿房价预测

https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data
http://lib.stat.cmu.edu/datasets/boston
该数据集来自卡内基梅隆大学维护的 StatLib 库。样本包含 1970 年代的在波士顿郊区不同位置的房屋信息,总共有 13 种房屋属性。 目标值是一个位置的房屋的中值(单位:k$)。数据集很小,只有506个案例。数据集有以下14个属性:
CRIM 城镇人均犯罪率
ZN 占地面积超过25,000平方英尺的住宅用地比例。
INDUS 每个城镇非零售业务的比例。
CHAS Charles River虚拟变量(如果是河道,则为1;否则为0)
NOX 一氧化氮浓度(每千万份)
RM 每间住宅的平均房间数
AGE 1940年以前建造的自住单位比例
DIS 波士顿的五个就业中心加权距离
RAD 径向高速公路的可达性指数
TAX 每10,000美元的全额物业税率
PTRATIO 城镇的学生与教师比例
B 城镇中黑人比例
LSTAT 人口状况下降%
MEDV 自有住房的中位数报价, 单位1000美元

七种分析方法

1.LinearRegression:

线性回归是一种试图通过拟合一个线性模型到观测数据来预测一个或多个响应变量(因变量)的统计学方法。在Scikit-learn中,LinearRegression类实现了普通的最小二乘法线性回归,其目标是最小化残差平方和,即预测值与实际值之差的平方和。线性回归是一种用于建立输入特征(自变量)和连续目标变量(因变量)之间线性关系的回归分析方法。模型假设目标变量与特征之间存在线性关系,通过拟合一条最佳拟合直线来对目标变量进行预测。
1.R_squared(决定系数,R²)
概念:R²衡量模型解释了数据变异性的比例,值介于0到1之间。R²越接近1,表示模型对数据的拟合度越好,模型解释了大部分的变异;若R²接近0,则模型几乎不能解释数据的变异,预测效果较差。
计算方式:R² = 1 - (MSE of model / MSE of null model),其中MSE of null model是假设所有数据点的预测值等于其平均值时的均方误差。
2.MSE(均方误差,Mean Squared Error)
概念:MSE是预测值与真实值之间差异的平方和的平均值,用来量化模型预测值与实际值之间的偏差。均方误差是衡量回归模型预测值与实际值之间差异的平方和的均值。MSE越小表示模型预测的准确性越高。
3. 平均绝对误差(Mean Absolute Error, MAE)
平均绝对误差(MAE)是另一种衡量模型预测精度的指标,它计算的是预测值与实际值之间差的绝对值的平均。平均绝对误差是衡量回归模型预测值与实际值之间差异的绝对值的平均值。MAE越小表示模型的预测越准确。
在实际应用中,通常会根据问题的性质和数据的特点选择合适的评估指标。例如,当数据中包含异常值时,MAE可能比MSE更稳健。而R²则提供了一个标准化的模型拟合优度的度量。

2.SGDRegressor:

SGDRegressor 是 scikit-learn 库中的一个在线梯度下降算法,用于回归问题。它实现的是线性回归模型,但与标准的线性回归不同,SGDRegressor通过随机梯度下降(Stochastic Gradient Descent, SGD)进行参数的更新,这使得它在处理大规模数据集时非常高效。随机梯度下降是一种迭代优化方法,尤其适合大规模数据集,因为它在每次迭代中仅使用一部分数据(例如一个样本或一小批量样本)来更新模型参数,这大大减少了计算资源的需求,加快了训练速度。
1.SGDRegressor 的关键特性:
在线学习:SGDRegressor可以用于在线学习,即在数据到达时逐步更新模型,而不是一次性使用整个数据集。
小批量学习:虽然SGDRegressor是为在线学习设计的,但它也可以通过设置适当的批量大小(batch size)来模拟小批量梯度下降。
正则化:SGDRegressor提供了L1(Lasso回归)和L2(Ridge回归)正则化选项,这有助于防止模型过拟合。
灵活性:它允许用户自定义损失函数(loss function),常见的损失函数包括’hinge’, ‘log’, ‘modified_huber’, ‘squared_hinge’, 和’squared_loss’。
效率:由于SGD只需要计算一个训练样本的子集的梯度,因此它在计算上非常高效,特别是对于特征数量很大的数据集。
2.SGDRegressor的工作原理:
SGDRegressor使用SGD优化算法来拟合线性回归模型。它通过迭代更新模型参数,逐渐减小损失函数的值,直到达到收敛条件为止。
在每次迭代中,SGDRegressor随机选择一个样本,并根据该样本计算梯度,然后使用学习率乘以梯度来更新模型参数。
3.参数说明:
loss:损失函数的类型,可选参数包括’squared_loss’(默认)、‘huber’、‘epsilon_insensitive’和’squared_epsilon_insensitive’。
penalty:正则化项的类型,可选参数包括’none’(无正则化,默认)、‘l2’(L2正则化)、‘l1’(L1正则化)和’elasticnet’(弹性网络正则化)。
alpha:正则化项的系数。
l1_ratio:弹性网络中L1正则化的比例,取值范围为0到1,默认为0.15。
max_iter:迭代次数的最大值。
tol:优化算法收敛的阈值。
eta0:初始学习率。
learning_rate:学习率的调整策略,可选参数包括’constant’(恒定学习率,默认)、‘optimal’(自适应学习率)和’invscaling’(逆标度学习率)。

3.KNeighborsRegressor:

KNeighborsRegressor 是 scikit-learn 库中实现的一个基于距离的监督学习算法,用于回归问题。它根据一个训练数据集,对于任何给定的查询点,返回其距离最近邻的k个训练样本的类别加权平均值作为预测结果。
1.KNeighborsRegressor 的工作原理:
距离计算:对于每一个测试数据点,算法计算它与训练集中每个点的距离。
找到k个最近邻:选择距离最近的k个邻居。
加权平均:计算这k个邻居的目标值的加权平均,作为预测结果。
权重:在KNeighborsRegressor中,权重可以基于距离进行计算,也可以是均匀的(即所有邻居的权重相同)。
2.KNeighborsRegressor 的关键参数:
n_neighbors: 邻居(最近邻)的数量,即k值。
weights: 用于计算预测的权重。可以是uniform(所有邻居的权重相同)或distance(权重与距离成反比,即距离越近的邻居权重越大)。
权重的作用:
权重参数决定了在计算k个最近邻的目标值加权平均时,每个邻居对预测结果的影响程度。权重的设定可以影响模型的平滑度和拟合程度。
均匀权重(uniform):所有邻居的权重相同,即每个邻居对预测结果的贡献是一样的。
距离权重(distance):权重与邻居的距离成反比,距离越近的邻居对预测结果的贡献越大。这种权重设置可以让模型对局部变化更敏感。
3.注意事项:
KNeighborsRegressor通过调整邻居的权重,能够在不同应用场景下提供灵活且适应性强的回归预测。正确的权重设置可以帮助模型更好地适应数据的分布特性,从而提高预测的准确性。
权重的选择应根据问题的特性和数据的分布来决定。如果数据点的距离能够很好地反映其对预测的影响,那么距离权重可能是一个好选择。选择k值时,较小的k值意味着模型对异常值更敏感,可能导致过拟合;较大的k值意味着模型更平滑,但可能导致欠拟合。
与任何基于距离的算法一样,数据的尺度对KNeighborsRegressor的性能有很大影响,通常需要对数据进行标准化处理。
KNeighborsRegressor是一个简单、直观且强大的算法,适用于各种类型的回归问题,特别是在数据集的特征空间不是线性可分的情况下。

from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
# 生成一些模拟数据
X, y = make_regression(n_samples=1000, n_features=3, noise=0.1)
# 划分训练集和测试集
X_train, X_test = X[:800], X[800:]
y_train, y_test = y[:800], y[800:]
# 创建KNeighborsRegressor实例
knn_regressor = KNeighborsRegressor(n_neighbors=5, weights='uniform')
# 拟合模型
knn_regressor.fit(X_train, y_train)
# 预测
y_pred = knn_regressor.predict(X_test)
# 计算MSE
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

4.SVR(Support Vector Regressor):

支持向量回归(Support Vector Regression, SVR)是支持向量机(Support Vector Machine, SVM)用于回归问题的版本。SVR通过找到最优的超平面来预测连续的目标值,而不是进行分类。SVR试图在保证误差在一定阈值(称为epsilon)内的同时,使得模型的复杂度(即支持向量的数量)最小。
1.SVR 的工作原理:
超平面:SVR寻找一个超平面,使得实际输出值和预测输出值之间的误差最小化,同时保持模型复杂度的最小化。
支持向量:与SVM类似,SVR中也有支持向量的概念,即那些位于或超出误差边界的数据点。
误差边界:SVR定义了一个以预测超平面为中心,宽度为2epsilon的误差边界。SVR的目标是使得所有训练数据点都落在这个边界内。
SVR的目标是找到一个超平面,使得训练数据点与该超平面之间的间隔最大化,并且在一定程度上允许一些点偏离超平面,即间隔内的点不受惩罚,超出间隔的点受到惩罚。
SVR使用核函数将输入空间映射到高维特征空间,使得在高维空间中可以更容易地找到线性超平面来拟合数据。
核技巧:SVR使用核技巧来处理非线性问题,常见的核函数包括线性(linear)、多项式(poly)、径向基函数(RBF)等。
2.SVR 的关键参数:
linear核:
C:正则化参数,控制对误差的惩罚程度。C越小,对误差的惩罚越轻,容忍度越大,模型复杂度越低。
epsilon:控制在间隔边界上的点被认为是支持向量的阈值。
kernel:核函数,对于linear核,该参数通常设为’linear’。
poly核:
C、epsilon同linear核。
degree:多项式核函数的次数,通常为正整数。
coef0:多项式核函数中的独立项系数。
gamma:rbf、poly和sigmoid核的系数。
kernel:核函数,对于poly核,该参数设为’poly’。
rbf核:
C、epsilon同linear核。
gamma:高斯核函数的系数,控制高斯核的宽度。较小的gamma值表示高斯核具有较大的半径,样本点的影响范围较大,模型更简单;较大的gamma值表示高斯核具有较小的半径,样本点的影响范围较小,模型更复杂。
kernel:核函数,对于rbf核,该参数设为’rbf’。
epsilon:定义了误差的阈值,只有当数据点落在这个阈值之外时,才会被计算为误差。
3.注意事项:
核函数的选择对模型性能有很大影响。线性核适用于线性问题,而多项式和径向基函数核适用于非线性问题。
C和epsilon参数需要通过交叉验证等方法进行调整,以找到最佳的模型性能。
SVR在小数据集上可能表现不佳,因为它依赖于支持向量的概念,而支持向量的数量可能不足以捕捉数据的复杂性。
SVR是一个强大的回归工具,特别是在处理高维数据和非线性问题时。通过调整核函数和参数,SVR可以适应各种不同的数据模式。

5.DTR(DecisionTreeRegressor):

DecisionTreeRegressor 是 scikit-learn 库中实现的一种基于决策树的回归算法模型。它通过递归地将数据集分割成子集,进而构建一个树状结构来进行预测。每个内部节点表示一个特征上的测试条件,每个分支代表一个测试结果,而每个叶节点则关联着一个输出值(即预测值).
1.DecisionTreeRegressor的工作原理:
决策树回归将特征空间划分为多个矩形区域,并在每个区域内拟合一个简单的线性回归模型,从而构建一棵树状结构。
决策树的建立过程包括选择最佳的特征进行划分,以及确定每个叶节点的预测值。通常采用的是贪心算法,通过最小化节点中样本的均方误差(MSE)来选择最佳划分。
2.参数说明:
criterion:划分节点的评价准则,可选参数包括’mse’(均方误差,即MSE)和’mae’(平均绝对误差)。
splitter:节点划分策略,可选参数包括’best’(选择最佳划分,默认)和’random’(随机选择划分)。
max_depth:决策树的最大深度,用于控制树的复杂度。如果不设置,则节点会一直扩展直到所有叶节点都包含少于min_samples_split个样本。
min_samples_split:节点划分的最小样本数,用于控制过拟合。如果某个节点的样本数少于该值,则不再进行划分。
min_samples_leaf:叶节点的最小样本数,用于控制过拟合。如果某个叶节点的样本数少于该值,则不再继续分裂。
max_features:每次节点划分时考虑的最大特征数。可以是整数(表示考虑的特征数量)或浮点数(表示考虑特征的比例)。
random_state:随机种子,用于控制随机性。
3.注意事项:
决策树容易过拟合,因此需要通过设置 max_depth、min_samples_split 或 min_samples_leaf 等参数来限制树的复杂度。
通过可视化决策树,可以更好地理解模型的决策过程。
决策树对数据的缩放不敏感,但对特征的数量和分布敏感。
可以使用 sklearn.tree.export_graphviz 来导出决策树的图形表示,然后使用 Graphviz 软件进行可视化。
DecisionTreeRegressor 是一个简单、直观且强大的回归工具,适用于各种类型的回归问题。通过合理设置参数,可以提高模型的泛化能力并防止过拟合。DecisionTreeRegressor 是一种强大且直观的回归方法,适用于各种数据分析任务,尤其是在特征间存在清晰的决策边界时表现良好。通过调整其众多参数,可以有效控制模型的复杂度和泛化能力。不过,需要注意的是,决策树容易过拟合,特别是在树的深度很大或数据集较小、噪声较大的情况下,因此合理设置参数和进行模型验证至关重要。

6.集成学习(Ensemble Learning)是一种机器学习技术,它将多个模型的预测结果组合起来以提高整体的预测性能。

以下是几种流行的集成回归算法的详细介绍:

  1. Random Forest Regressor (随机森林回归器)
    随机森林 是决策树的集成版本,它通过构建多个决策树并进行平均或多数投票来提高性能。
    工作原理:随机森林是一种基于决策树的集成学习算法,它通过训练多个决策树,并对它们的预测结果进行平均或投票来提高模型的泛化能力。
    参数说明:
    n_estimators:森林中树的数量。
    criterion:划分节点的评价准则,可选参数包括’mse’(均方误差,即MSE)和’mae’(平均绝对误差)。
    其他参数如决策树的参数(例如max_depth、min_samples_split等)同样适用于随机森林。
    优点:防止过拟合,提高模型的泛化能力。
  2. Extra Trees Regressor (极端随机树回归器)
    极端随机树(Extra-Trees)也是一种基于随机性的决策树集成算法,它在构建树的每个决策点时考虑所有特征的随机子集。
    原理:与随机森林类似,但是每个决策点不是寻找最优特征划分,而是随机选择特征并计算最佳划分。
    参数:
    与随机森林类似,但极端随机树通常不设置 max_features 参数。
    优点:通常比随机森林更快,因为每个决策点的计算量更少。
  3. AdaBoost Regressor (自适应提升回归器)
    AdaBoost 是一种提升方法,通过迭代地训练决策树,每次迭代都关注前一次迭代中预测错误的样本。
    工作原理:AdaBoost是一种迭代算法,它通过逐步调整数据集的权重,每次训练一个弱学习器,并根据其性能调整样本权重,以构建一个强学习器。
    参数说明:
    base_estimator:基础估算器,例如决策树。
    n_estimators:弱学习器的数量。
    learning_rate:学习率,用于控制每个弱学习器的权重更新幅度。。
    优点:可以关注难以预测的样本,提高模型性能。
  4. Gradient Boosting Regressor (梯度提升回归器)
    梯度提升 是另一种提升方法,它通过迭代地训练决策树,每次迭代的树都尝试纠正前一轮树的错误。
    工作原理:梯度提升通过逐步构建一系列弱预测模型(通常是决策树),每个模型都试图纠正前一个模型的残差,从而逐步提高整体模型的性能。
    参数说明:
    loss:损失函数,可选参数包括’ls’(最小二乘回归)、‘lad’(最小绝对偏差回归)、‘huber’(Huber损失)和’quantile’(分位数损失)。
    n_estimators:弱学习器的数量。
    learning_rate:学习率,用于控制每个弱学习器的权重更新幅度。
    其他参数如决策树的参数同样适用于梯度提升。
    优点:通常能获得比单独决策树更好的性能。
    5.注意事项:
    随机森林和极端随机树:这两种方法都是通过增加模型的数量来减少预测的方差,通常不需要对单个树进行剪枝。
    AdaBoost和GradientBoost:这两种方法通过迭代地关注前一轮的错误来提高性能,通常需要较少的树数量。
    参数调优:所有这些集成方法的性能都可以通过调整参数来优化,如树的数量、树的深度、学习率等。
    计算成本:集成方法通常比单一模型更耗时,但可以通过并行化来加速训练过程。
    集成学习通过组合多个模型来提高性能,每种方法都有其特定的应用场景和优缺点。在实际应用中,通常需要通过交叉验证等方法来选择最佳的集成方法和参数。
总结

每种算法都有其优缺点,适用于不同的场景。
在实际应用中,选择合适的算法通常需要考虑数据的特点、模型的复杂性、训练时间以及预测性能等因素。此外,通常还需要进行参数调优、特征工程和模型评估等步骤来优化模型性能。

在这里插入图片描述

  • 23
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值