96SEO 2026-02-19 21:52 6
Prices数据集完成关于房价预测的线性回归模型训练、测试与评估。

pltdfpd.read_csv(data/housing.csv)
df[total_bedrooms].fillna(median_bedrooms,
df.hist(bins50,figsize(20,15),edgecolorblack)
corr_matrix[median_house_value].sort_values(ascendingFalse)###
df[population_per_household]df[population]/df[households]
df[rooms_per_household]df[total_rooms]/df[households]
df[bedrooms_per_room]df[total_bedrooms]/df[total_rooms]
corr_matrix[median_house_value].sort_values(ascendingFalse)
df.drop([population,households,total_rooms,total_bedrooms],axis1,inplaceTrue)###
df[income_copy]df[median_income]
con_cols[longitude,latitude,housing_median_age,median_income,population_per_household,rooms_per_household,bedrooms_per_room,median_house_value]
scaler.fit_transform(df[con_cols])
将median_income这个连续数据映射分级放到新属性income_cat中
df[income_cat].hist(edgecolorblack,
分层抽样——按照income_cat属性中比例分层它最接近符合正态分布
ssStratifiedShuffleSplit(n_splits1,
df[income_cat]):train_stratdf.loc[train_idx]test_stratdf.loc[test_idx]print(ftrain_len:
train_strat[income_cat].value_counts()/len(train_strat))#
df.drop([latitude,longitude,median_house_value,income_copy,income_cat],axis1,inplaceTrue)
train_strat.drop([income_cat,income_copy,latitude,longitude],axis1,inplaceTrue)
test_strat.drop([income_cat,income_copy,latitude,longitude],axis1,inplaceTrue)#
y_traintrain_strat[median_house_value].values
x_traintrain_strat.drop(median_house_value,axis1).values
y_testtest_strat[median_house_value].values
x_testtest_strat.drop(median_house_value,axis1).values缺失值处理
如下图统计出total_bedrooms出现207个空值而总样本数为20640个大约占1%因此可以考虑直接剔除也可以替代这里这个特征属于连续型变量采用中位数替代。
前两幅图为房地的经纬度因此数值比较分散不呈正态分布情有可原total_rooms、total_bedrooms、population、households这几幅图很类似同时考虑到其表达的含义比较相似可以对它们考虑进行特征组合后述。
另外它们都呈现较偏左边的正态分布右半部分比较空缺可以考虑通过采样优化其分布后述。
median_income比较接近理想的正态分布在划分数据集时可以考虑以它为基准进行分层抽样这样也能保证total_rooms等特征分布呈较为合理的正态分布。
各个特征与房价median_house_value的相关性分析如下图越接近1和-1越相关0表示没有线性关系。
可以看出收入median_income与房价呈很强的正相关关系househols、total_bedrooms、popultion这几个特征对于房价来说相关性很小结合前面特征探索中可以将其组合出新的特征。
例如
对于地区家庭数目households和总房屋数目total_rooms组合成“每个家庭的房屋数量”更具有代表性。
对于地区卧室总数目total_bedrooms和总房屋总数目total_rooms显然单知道两者数目比较空泛现实生活中更看重“房间卧室的占比”是一个衡量房价的重要指标对于地区总人口和总家庭数目可以尝试组合成“每个家庭有多少人”可能可以从侧面反应出房间大小进而体现房价。
组合新特征出如下图可以看到新组合出的特征rooms_per_households和bedrooms_per_rom比原特征对于房价的相关性要更大显然房间卧室的占比越小房价越贵符合事实。
对于地区举例海洋的距离ocean_proximity这个特征虽然印象里认为“离海越近房价越高”毕竟海景房更招人喜欢考虑使用标签编码是不错的选择但是这个特征值表示的仅是与海的距离分级离海越接近不一定代表有更多客户青睐毕竟能稍微远一点也能看到海景还不用担心极端天气海边发生突发状况。
综合以上可能存在的不确定的主观因素以及对于现实情况还不够太了解我选择独热编码让机器自行训练自行分辨。
前面特征探索流程中观察得出收入median_income最接近合理的正态分布并且它与房价的相关性程度最大因此依据不同收入median_income的等级比例来进行分层抽样。
首先将连续型的收入median_income依据大小映射成不同的收入等级income_cat并统计不同等级比例然后依据这个等级比例分层抽样划分出训练集和测试集即不管是在训练集和测试集中数据比例满足收入等级对应的比例。
得到如上线性回归模型的闭合形式解能够直接计算出最优的回归系数然而其中(XT*X)-1有时很难求解。
通过迭代优化逐步调整回归系数以最小化损失函数从而得到较优值对应的回归系数。
重复计算梯度并且更新系数直到达到预先设定的迭代次数或者损失函数收敛至某个阈值本实验中通过设定每两次迭代中损失函数变化不超过1e-8则认为损失函数收敛至某个阈值。
root_mean_squared_error(y_true,
np.sqrt(mean_squared_error(y_true,
.T求矩阵的转置thetanp.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)return
root_mean_squared_error(y_test,
print(f运行时间{time.time()-start_time}
(1/2)*mean_squared_error(y_true,y_pred)
计算误差error和损失lossy_prednp.dot(x_train,
#结束条件breakloss_histroy.append(loss)return
root_mean_squared_error(y_test,
print(f运行时间{time.time()-start_time}
zip(df.columns,theta):print(f{f}\t{t})运行结果
通过闭合式求解和梯度下降法求解并用MAE、MSE、RMSE、R方、拟合优度等来比较两种求解方式的求解效果如下
可以看见两种方法得出的结果差别不大总体来看闭合式求解的误差MAE、MSE、RMSE相对小拟合效果R方、拟合优度相对大因此在本次实验中闭合式求解的效果整体优于梯度下降法。
另外能明显从运行时间看出两者的计算速度差异闭合式由于只需计算结果公式(XT*X)-1X^TY而梯度下降法中需要不断迭代更新theta很多次才能得到较优解所以一般来说闭合式会快得多但本实验中特征维度还算不多闭合式会比较快如若特征维度增多闭合式的求解效率会变得很艰难而梯度下降法在高纬度中仍然能以很快的速度求解出较优值。
闭合式求解法在可解的情况下一定能求解出全局最优解但计算速度受维度影响大当维度较大时可能出现不可解的情况。
梯度下降法不一定能求解出最优解但在高维度时计算速度仍然有可观的效果。
对于population_per_household实验结果表明平均家庭人口越少可能意味着住房拥挤家庭成员较多时每个人的居住空间和私密性可能会减少进而可能会间接降低该地区的房价但相关性很小只有0.03接近0因此可以认为这个特征实际上对于房价影响不大改进实验时应该不再组合这个新特征。
对于ocean_proximity_INLAND实验结果表明靠近内陆的地区房价会越低且相关性程度达0.42结合实际内陆地区由于缺乏海洋景观等吸引力因素房价则相对较低。
相关性程度较大的主要是收入median_income高达0.68结合实际考虑高收入人群通常更愿意支付更高的房价因此高收入区域的房价往往更高。
其次主要是与海洋远近的特征结合实际考虑靠近海湾和靠近海洋的地区往往景色优美、气候宜人因此房价会相应较高。
剩余特征如房龄housing_median_age、卧室占比bedrooms_per_room等等对房价的影响程度较小。
作为专业的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