QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。( T. f' W- ?% P5 f- i
任务:构建一个模型预测加利福尼亚地区的房价。+ N" }! K9 ]" O9 w/ u) D
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
' F) ]) z+ T( B/ V; B+ e2 ?. u线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。1 G8 K6 h5 F* o+ Z' D; ?4 }& s
! Q2 [3 \" P$ s
加载和预处理数据
* q; K) s3 n. {0 z) ~' O4 ^: b, m/ i首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. 8 \1 V! C3 `6 z, _( f
  3. + M2 |( T& X/ b& {2 ~
  4. from sklearn.model_selection import train_test_split
  5.   {) r0 y# ~- ~: g' d  W
  6. 5 D8 _% R+ s- _$ ~/ }* P( H
  7. from sklearn.preprocessing import StandardScaler
  8. * K* t( a( k! ~+ `/ E\\" I9 U$ x& l

  9. 8 d* u/ X: m& Y- J
  10. from sklearn.linear_model import LinearRegression( Q, L( p! E: {% @
  11. ' D. |8 O1 u8 D( X& j  o; @$ ?
  12. from sklearn.metrics import mean_squared_error8 d& c8 w2 O# q+ n& y

  13. 4 z  H% ?7 ~3 M9 T6 C/ T2 E2 x

  14. + T0 K! D! S2 H# v4 e
  15. ( P8 V3 p2 C! X' T/ u0 Z5 e, b+ J! n, G
  16. # 加载数据集
  17.   q$ |\\" c' _3 y  M, w' H: o& P

  18. ! ^. c4 J\\" W  ]6 D$ B6 S8 R6 I
  19. housing = fetch_california_housing()8 `8 w5 ?4 l; T6 s6 E9 D5 |
  20. 4 C+ B\\" Q4 X& O. ~3 d# W/ u5 O
  21. X, y = housing.data, housing.target
  22. ' @) w& P6 w, U( R\\" q3 Q: W
  23. * u# N, @3 s5 V5 p5 M

  24. & q/ K8 K4 w8 y9 T9 c

  25. % l7 T$ \% H2 Q, ^
  26. # 划分训练集和测试集$ K( |$ s& r5 X8 W6 {4 K0 s  t

  27. - E  F1 k/ V$ g- I( f5 u
  28. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)3 R6 m( r* j- d) ~

  29. ; b# u# W9 i7 M4 }; _; M3 c5 _

  30. - F5 S+ e! b1 f' c4 R5 S

  31.   Q  k* J8 S% A) C4 k* U
  32. # 数据预处理:标准化
  33. 0 ]; i! w% Y' {+ L\\" V- Y) ^- V6 ]

  34. 2 p4 [4 u% O) h: [/ c% u  K
  35. scaler = StandardScaler()
  36. , U$ C+ |6 e\\" I: k/ ]

  37. / E\\" W* Z\\" X# y6 v\\" z& H9 H
  38. X_train_scaled = scaler.fit_transform(X_train)& m  t' }5 _/ r1 F, l\\" i  m0 j7 p0 @5 Z
  39. / {# p$ C7 G' p* p
  40. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型1 ~4 Q2 g& x2 s# G# z; c/ n) V: `
  2. model = LinearRegression()
    - w/ e$ I+ J4 b7 U: i3 |* X
  3. 6 V' a' g; l+ K$ {
  4. # 训练模型! s0 m( l7 e2 C! i\" A0 q& f& u
  5. model.fit(X_train_scaled, y_train)
    \" j) V\" Q\" t5 }6 B) p% V- q. E

  6. 5 ?- [. z( S8 [. i+ k( y3 F0 u# G
  7. # 预测测试集+ G6 Q- C* D7 x: P1 c4 ^
  8. y_pred = model.predict(X_test_scaled)
    . h  O% ?* O4 l4 y. d9 ~! n
  9. 3 X\" k: n) c& J  S! s
  10. # 评估模型
    , t3 o) n4 B2 @( u( R( U
  11. mse = mean_squared_error(y_test, y_pred)
    : Q8 C! A* q0 t
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择/ L& \! J3 F, m  h- z" T8 y
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
8 }. H/ x0 A7 ?" W3 B特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression
    9 t- p, g: f; w3 g  V3 J& b8 ]

  2. & T0 a, S  j* [' ?3 R, z/ Y
  3. # 特征选择
    % E) K5 x$ m' G5 {' H' ]5 y
  4. selector = SelectKBest(score_func=f_regression, k=5)\" H/ W& R2 g4 Z2 E2 F3 [$ F) E6 S
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    7 M$ F4 L9 \* a* O7 H$ t* }
  6. X_test_selected = selector.transform(X_test_scaled)
    ' u! U8 V5 W: Q1 {( x' E- ]

  7. # \* f7 G, m6 t; v
  8. # 使用选择的特征重新训练模型
    + E8 X5 h1 `7 @& v) O8 u+ Q
  9. model.fit(X_train_selected, y_train)2 B: Z7 b( d; r) b8 f- ~
  10. y_pred_selected = model.predict(X_test_selected)
    9 M% H  ?) `& }+ |. f

  11. 6 q' D/ |* R$ C5 k7 O1 s
  12. # 评估
    9 {' D  d6 @6 I: n# i
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)) i# g- c& d$ f' j
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

. w! z9 u* E% n6 b3 |/ ~$ ?1 T
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 00:33 , Processed in 0.450274 second(s), 51 queries .

回顶部