QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。
0 R2 o$ q; W, \4 B任务:构建一个模型预测加利福尼亚地区的房价。
9 Z7 I; c% J4 ~( U. D5 o6 J挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。7 |4 k* ^: b: y# R* O" L% ^: F
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
; i8 {' x' r6 f3 A
+ t6 @4 S. g7 Q( T+ Q+ ^5 Y/ k' l4 b加载和预处理数据
$ f4 ~( |- O0 K. [: S! t% o5 l. k首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. ; o. R9 i  j) R. w7 g  W
  3.   v) e1 \# ]) c5 I! s4 V# a
  4. from sklearn.model_selection import train_test_split
  5. $ Q: {: n- I0 b1 q- I1 d0 {. z

  6.   r4 k4 Q+ _1 D
  7. from sklearn.preprocessing import StandardScaler\\" \4 ]( ?% \\\" Q# R2 d& t5 d
  8. 6 [. G% \+ q5 O0 \% m2 c9 z9 w% B
  9. from sklearn.linear_model import LinearRegression' j7 `8 ~6 }% S' S  F+ s1 S2 @

  10. , n, c: h7 r* q# b' V5 t
  11. from sklearn.metrics import mean_squared_error
  12. ) J\\" y' `2 j; q) [  W  Q7 u+ r
  13. - S  A7 N9 O$ [, d( r
  14. & `6 o$ S  n. U' Q9 {
  15. 0 I2 d  N& W3 f) K2 c2 P
  16. # 加载数据集5 }  S- ^0 I. g$ p# j

  17. ; `/ B/ e: B4 S
  18. housing = fetch_california_housing()
  19. - U! X0 Y4 O; c1 |/ Y

  20. : f( V. f  l5 l
  21. X, y = housing.data, housing.target4 a& ]* Q! L0 O7 h; O. S! s

  22. 7 C6 y7 \' Y, l

  23. 5 ^7 O* m\\" d9 k9 v5 Z1 f
  24. 5 N2 A# h9 v: j$ B) @- @+ V
  25. # 划分训练集和测试集8 ~! w% T$ u4 ^- w4 o4 }3 u8 @5 ^
  26. 8 C7 ~4 ]# S6 z/ M
  27. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)) e  y' C. r' J: R) T1 ~
  28. 6 [: \# P8 P3 T# R+ Z

  29. ' O4 \) B, ^( U+ q' ?7 H

  30. 2 n1 d, Y+ P+ q* G$ p
  31. # 数据预处理:标准化/ y* Z) |\\" b7 D; r% g
  32. # {' B+ {  o1 [+ G2 u+ [
  33. scaler = StandardScaler()
  34. 8 I$ N! X; E( q9 E& Q

  35. 1 W# z5 p$ B: @+ X$ c
  36. X_train_scaled = scaler.fit_transform(X_train)+ b8 M7 _- j0 ?) F\\" j$ b

  37. 3 N& ]/ N' S0 `4 O- @- m
  38. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型; I4 r8 v  g1 a
  2. model = LinearRegression()
    # {8 ~; q$ ^& {6 d  t

  3. % ]/ C% f9 i0 G# t  q# h\" S\" W$ g
  4. # 训练模型
    1 q! t1 o* h' k$ A\" }# u, ^
  5. model.fit(X_train_scaled, y_train)
    + C* B4 {8 V7 m5 t

  6. 2 E4 Q% c* V  ^- T% B
  7. # 预测测试集
    ) `7 n) `, F' J5 M# i: }( W
  8. y_pred = model.predict(X_test_scaled)+ v- @( w+ Z' f8 x. x
  9. + L( ]' j% @; x) ?6 @# i9 T
  10. # 评估模型
    / ?\" r5 o6 B# {8 ?
  11. mse = mean_squared_error(y_test, y_pred)
    * D8 y, w) n1 B' o! u
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择0 A" X8 n7 A  a
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。& V) F% u6 \3 T& _# _$ |
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression9 O5 }$ E6 G0 a0 a; F( i% B
  2. ( E# j( k; r; V! G\" c
  3. # 特征选择6 C\" Q% f) [& Z# r! |5 |9 w6 |
  4. selector = SelectKBest(score_func=f_regression, k=5)9 h& _6 q$ S2 k
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    : m3 v- N! g1 Y' f2 J
  6. X_test_selected = selector.transform(X_test_scaled)9 b. h) j& k1 _

  7. 1 z& W# F) ]4 ^. r- X
  8. # 使用选择的特征重新训练模型: N! ^5 l& D+ D/ d2 s7 t
  9. model.fit(X_train_selected, y_train)7 x$ X; k# y0 M1 |, M& D* u
  10. y_pred_selected = model.predict(X_test_selected)/ U# n7 R) ?- Z

  11. - r' V& N* Q' U8 i4 J% X/ g, }
  12. # 评估' _0 I! `, O- h\" Q& {& P
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    ( @2 M' O& }3 h6 G( Y+ G) I
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

- }4 M- \( D/ O1 _
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-24 13:54 , Processed in 0.402798 second(s), 50 queries .

回顶部