QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2841|回复: 0
打印 上一主题 下一主题

房价预测(线性回归)

[复制链接]
字体大小: 正常 放大

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。5 Y& U2 V  `- O( C3 m
任务:构建一个模型预测加利福尼亚地区的房价。. {4 f' K4 T) }) c& {8 Q
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。' u( k4 W, E* f; y1 z/ O* e
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
$ M# D5 W+ T  ]; e0 i& y& _+ C" v4 z
* h2 U, ^# R. K5 M- p加载和预处理数据# c/ |6 J4 ]* P* R! `
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. / U/ q& }/ Z' E7 z9 c

  3. ) w8 Y2 O\\" p% ~2 _1 `
  4. from sklearn.model_selection import train_test_split
  5. & y3 U3 {$ C  t2 a2 O* F
  6. - V7 C5 n. W8 Q, y
  7. from sklearn.preprocessing import StandardScaler
  8. ; x6 J) G! y& t5 N& E/ V& \

  9. 9 J! i2 B- P6 k3 P' h% z
  10. from sklearn.linear_model import LinearRegression/ Q4 d* E6 H6 o& i, a% n
  11. & ]: A- l5 {% t5 y, @& ?7 T\\" V( O
  12. from sklearn.metrics import mean_squared_error
  13. * Y5 u9 B* ?( ^; T

  14. , j4 ^6 r9 {! M0 Q: M

  15. ' A& k. p9 e* w% T1 G

  16. + m! C7 D/ U( |: W* B
  17. # 加载数据集
  18. 6 T0 r( e. F6 L1 V
  19. ) I. \  T/ b0 n0 ^* y
  20. housing = fetch_california_housing(); r3 [5 @3 W9 C* f& H- b3 c& w
  21. 9 h) {' [. ?5 C# C) I$ n
  22. X, y = housing.data, housing.target
  23. 0 K& m! Q4 c9 [; g; i

  24. 1 d2 g, r) N7 g# }4 f6 b
  25. * d\\" x3 g; }. F
  26. \\" _! z& r! u4 B
  27. # 划分训练集和测试集
  28. 7 Y* p& r! e5 y+ A) m

  29. * |/ j- u$ V( y7 D* D) S# w. R) n/ r! Z
  30. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)& k5 T8 G4 b1 x% s. D
  31. ; L: c' ?! i' n
  32.   k\\" i. z- g; R8 B* R# S

  33. 1 a4 \- f! ~8 ?* J
  34. # 数据预处理:标准化
  35. 4 |3 P$ E1 ]9 E2 P6 N+ Q2 z

  36. 1 @  G$ Z$ C- ~3 M3 D/ b  I
  37. scaler = StandardScaler()7 |7 m& u; [3 z% R+ [
  38. 7 v: m# l: Q3 J\\" ~' @7 m
  39. X_train_scaled = scaler.fit_transform(X_train)
  40. 0 B  q, V9 U5 I! Z+ T

  41. * C! B1 d% u. |, u
  42. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型
    1 H\" O8 W. D3 n! C
  2. model = LinearRegression()& Y, x1 X. i1 b4 _: c
  3. 3 y. u6 F! N% c9 M
  4. # 训练模型
    4 b, u\" G  N- J# K
  5. model.fit(X_train_scaled, y_train)
    6 }2 j+ }, q, B; }

  6. 3 Z0 ]- ^+ n( _6 s9 J; q
  7. # 预测测试集: f. s  h7 u* f1 [6 S
  8. y_pred = model.predict(X_test_scaled)
    0 a, _! X1 X' P  b  i: A  n\" T

  9. * s! F; `- V% ?) t! y6 ~
  10. # 评估模型1 Q7 P* Y& I8 O0 o% t5 U$ ~
  11. mse = mean_squared_error(y_test, y_pred)
    8 [; Q, x# a3 d3 W2 M6 a' `
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
0 h7 Z6 U' W, v预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
! s7 }8 P3 r( b. {- B5 \- u( P特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression3 f' E7 k/ `) K3 Y3 |: @

  2. 6 k) X! k% ]5 `$ w# i) Q
  3. # 特征选择; d* }5 `& O6 z) z3 j6 z
  4. selector = SelectKBest(score_func=f_regression, k=5)
    % s: c9 O9 M/ V1 T& y% L7 p
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)9 A7 `- X& U: N- [
  6. X_test_selected = selector.transform(X_test_scaled)8 g9 s/ `+ D7 ]! u8 |
  7. + D+ [0 J) J0 c' u& {. C
  8. # 使用选择的特征重新训练模型
    # D) @& Z- z3 _) ]) R
  9. model.fit(X_train_selected, y_train)2 |+ q. j1 y( P7 K
  10. y_pred_selected = model.predict(X_test_selected)7 \5 h+ r6 q, x2 g. o

  11. % Q- G$ T! i: p
  12. # 评估! s3 |* m: ~! x, s) Q; C
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    4 o9 P! e5 b0 P* u! A; E
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

9 ~% b, R6 Q' r5 C5 A- j
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-25 20:50 , Processed in 1.197734 second(s), 50 queries .

回顶部