QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。+ n( K$ {! B6 Z3 ?: Y1 r$ }' x
任务:构建一个模型预测加利福尼亚地区的房价。  w& x& g" B' E8 z9 c5 V# H/ B0 Z
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
% K2 B  M$ M7 M# s8 B线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
; A6 b- P; c1 {7 e+ Z: I: R" d% r" V2 ^
加载和预处理数据
  M1 ?$ ^. I) ?& ?+ v8 g首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. # t0 S; e; s9 e, X( u
  3. 1 }2 H0 ~- ~! F3 J) q! {# z
  4. from sklearn.model_selection import train_test_split
  5. . O, m/ m- v) S

  6. + _4 k3 |/ ?3 S1 q; t' T. Y# z
  7. from sklearn.preprocessing import StandardScaler
  8. ( ?* b' G; B- h! U: g1 q$ M

  9. . i% ~' J( \8 V: \\\" c& D
  10. from sklearn.linear_model import LinearRegression& B) X) F* `8 V( f9 i$ Q

  11. ; Q+ ]; n- ^+ N2 b4 `5 A& k$ k
  12. from sklearn.metrics import mean_squared_error, ?$ K8 w1 i8 {$ J5 {

  13. ) e/ S' @) m2 W. p! r- G

  14. 3 }5 H/ A. _0 L$ S3 I0 M

  15. - n2 D* |; F* g\\" U
  16. # 加载数据集
  17. - x- o8 `2 @3 J4 K4 y
  18. : {) r1 u/ K4 ]9 `
  19. housing = fetch_california_housing()' }) N+ P2 e2 q3 D

  20. 2 _) l- G1 p5 l# L. D- g
  21. X, y = housing.data, housing.target
  22. : b, i! n! h8 J5 q2 Q+ `% t
  23.   n8 l& Y6 [( W3 I

  24. ' k& ^3 {1 g2 Z& i6 v
  25. / K3 P7 `: C, H5 ^8 w
  26. # 划分训练集和测试集
  27. 4 D5 F5 Y/ g0 K9 D% Y% a4 @# m
  28. & U; S! S7 ?9 V3 o6 H\\" Y: i
  29. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  30. ' |: \$ |2 w& K  x8 k\\" \+ P2 n, h
  31. 1 j, J6 p' S. @
  32. 0 g/ c3 ~! L5 n4 [3 |3 C' \2 l

  33. & z0 h\\" H: H3 K) I\\" R+ [
  34. # 数据预处理:标准化
  35. \\" H1 @7 m, M5 c5 d5 C- i8 i

  36. ) K. s$ \9 K- I) T' Y
  37. scaler = StandardScaler()
  38. ' [* c3 a0 C$ v1 [2 m- @8 F9 I4 b; M
  39. . O' ^7 f) Y, z+ W; k  Q4 _
  40. X_train_scaled = scaler.fit_transform(X_train)
  41. ; G+ C4 g/ t\\" o- x

  42. 1 ^: x( P. @6 {: @
  43. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型
    5 L! C+ m& _7 Y$ |
  2. model = LinearRegression()0 X0 v! t9 N\" e6 f
  3. . o) o# X1 N) W$ b
  4. # 训练模型! R  J( V5 j: D  P9 w
  5. model.fit(X_train_scaled, y_train)0 j\" v: i  ?! k% @

  6. 1 u3 f/ d' D\" [- [  R
  7. # 预测测试集
    % Q% `/ |7 D7 D% Q  |$ A; e
  8. y_pred = model.predict(X_test_scaled)9 t\" u  U\" s/ T0 N3 f* V. D
  9. 9 d; D; a0 S+ L5 ?$ X
  10. # 评估模型6 b6 M* k9 l. v* w; q! g6 a
  11. mse = mean_squared_error(y_test, y_pred)
    3 O, `! \) i; m1 x' R, {7 H
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
+ Z0 G+ \* z" N- e预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
3 b+ V7 \, o' [特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression
    \" {8 N, T+ ]8 k1 Z
  2. . Q( O& ]  M, [4 f1 \
  3. # 特征选择
    ! Y( G! N8 @) e3 ^5 e/ d% ~4 Z3 T
  4. selector = SelectKBest(score_func=f_regression, k=5)
    : l% x* U; E8 C# J$ W  {0 V4 K
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    # G) y3 s& L; N6 U* @) x  S8 g4 g
  6. X_test_selected = selector.transform(X_test_scaled)/ o1 O$ ~7 K( \: x1 z. b
  7. % C0 V$ G- r1 J1 Q
  8. # 使用选择的特征重新训练模型6 M. {% @, U# a8 `\" U
  9. model.fit(X_train_selected, y_train)0 X1 Q) F. H\" q2 S
  10. y_pred_selected = model.predict(X_test_selected)$ }5 @0 I( b8 A$ c

  11. ) ]1 U( d/ q; L& _4 ]4 _. v* d7 P
  12. # 评估
    / W7 B9 o7 Q\" N. s' I2 M
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
      `+ J, L: o% L$ P8 j& i) d! ^
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
" g& ^- w1 d1 q1 b. Q2 h( u1 {8 a
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-4-10 15:09 , Processed in 0.418248 second(s), 51 queries .

回顶部