96SEO 2026-02-23 12:53 5
。

这是一个房价数据集#xff0c;与我们熟知的波士顿房价数据集类似#xff0c;但是特征数量要更多#xff0c;数据也要更为复杂一些。
下面#xff0c;…一、任务背景
Techniques进行回归建模的讲解。
这是一个房价数据集与我们熟知的波士顿房价数据集类似但是特征数量要更多数据也要更为复杂一些。
下面我们将使用这个房价数据进行机器学习中的回归建模依次分解机器学习建模的各个步骤并给出详细的注解。
为了展示一个完整的机器学习建模流程我们把数据集下载到了本地并使用python进行读取
pd.read_csv(./data/housePrices.csv)
结果如下数据总量是1460条可以看到最后一列SalePrice就是我们要预测的标签了此外除Id列之外还有80个特征列。
通过常规的探索性分析大概看一下这个数据集长什么样子比如有多少行、有多少列、每一列中是否有空值、哪些列是数值类型的、哪些列是文本类型的以及最重要的——我们要预测的标签是哪一列。
由于特征列较多所以全都打出来比较难阅读这里通过筛选的方式仅打印有空值的特征列
结果如下有空值的列数为19列其中一些列含有较多的空值比如最后三列。
我们可以通过筛选数据字段类型的方式分别统计出有多少是数值型特征有多少是文本特征
df.select_dtypes(include[int64,
df.select_dtypes(include[object])
列名{}.format(len(numeric_df.columns),
列名{}.format(len(text_df.columns),
结果如下可以看到使用.info()方法既可以打印出数据量也能显示每一列非空值的数量以及字段类型等信息。
在进行了初步的数据探索之后我们可以开始数据的预处理了。
首先部分特征列存在大量的空值虽然可以取当前列有效数据的平均值或者中值进行填充
但是由于空值列比例太大笔者在这里直接去掉这些列。
对于数据为文本类型的列我们进行一个简单的转换确保每一列的数据都是数值类型以方面后续的相关性计算以及建模。
由于文本列也可能存在空值这里统一编码为“missing”。
去掉空值数量超过600的列不同数据集相应空值数量临界值的界定视具体情况调整
df:continuedf[col].fillna(missing,
label_encoder.fit_transform(df[col])
由于总共有将近80列的特征实际上我们可能不需要这么多特征所以我们进行一个简单的相关性分析这里使用Pearson相关系数衡量线性相关度也可以使用斯皮尔曼系数等来衡量非线性相关度只保留跟标签列较相关的特征相关性大于0.5。
在本文中笔者只进行特征工程中的“特征选择方法”的展示至于特征构造等内容视建模结果而定若建模结果不佳则可能需要人工构造新特征了。
筛选出相关度大于0.5的特征列实际取多少根据数据规律确定例如这个数据集超过0.8的有0列自然无法指定高于0.8的取值
在进行建模之前划分好训练集的测试集训练集用于模型训练测试集测试模型的效果。
df[highly_correlated_features].values.tolist()
test_size指定训练集和测试集划分过程中的比例0-1开区间之间的小数。
random_state指定随机数以保证结果可复现。
这里我们使用一个GBDT回归器作为当前任务的模型。
我们使用R2作为评价模型的指标R2显示了一个回归模型的可解释方差占总方差的比例R2得分越接近1代表模型效果越好。
此外MSE和MAE是两个常见的指标不赘述了。
GradientBoostingRegressor(losssquared_error,
n_estimators指定要构建的决策树的数量默认值是100。
更多的树可以提高模型的复杂度和拟合能力但也会增加过拟合的风险及计算量。
max_depth指定每个决策树的最大深度树的深度太浅会欠拟合树的深度太深则会过拟合需要凭经验调整默认值是3。
loss指定优化目标函数可选squared_error默认、absolute_error、huber、quantile。
squared
error是回归的平方误差absolute_error是回归的绝对误差huber是两者的结合quantile允许使用分位数回归(使用alpha指定分位数)。
criterion指定衡量分裂质量的准则可以选friedman_mse或mse。
默认是friedman_mse在某些情况下它可以得到更好的近似值。
random_state随机数种子用于控制树的抽样和特征选择的随机性默认是None即不指定。
指标结果如下由于我们并没有对标签进行归一化所以MAE和MSE数值会非常大但这是正常的毕竟我们的标签房价基本都是10万元以上的
可视化模型预测结果和真实值的差异可以见到预测效果还不错这里我们的数据并不是时序性的但是为了观察预测值和真实值的拟合情况可以把数据看作是时序的并使用曲线进行可视化
pd.read_csv(./data/housePrices.csv)
df.select_dtypes(include[int64,
df.select_dtypes(include[object])
列名{}.format(len(numeric_df.columns),
列名{}.format(len(text_df.columns),
print(df[SalePrice].describe())
去掉空值数量超过600的列不同数据集相应空值数量临界值的界定视具体情况调整
df:continuedf[col].fillna(missing,
label_encoder.fit_transform(df[col])#
df.fillna(valuemedian_values)correlation_matrix
筛选出相关度大于0.5的特征列实际取多少根据数据规律确定例如这个数据集超过0.8的有0列自然无法指定高于0.8的取值
df[highly_correlated_features].values.tolist()
GradientBoostingRegressor(losssquared_error,
本文使用了开源数据集进行回归建模实践遵循机器学习建模的几大流程注意展开讲解。
分类和回归是机器学习的两大主要任务也是业务过程中最常见的任务类型因此有必要深入了解其中的建模流程及细节。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback