QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。
! u2 q) V- z) B7 W1 r7 E任务:构建一个模型预测加利福尼亚地区的房价。
7 y8 [. ?7 |9 D挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。' U- o- _) j- k5 u' A- o9 E
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。& O" v: s7 V; ?0 h+ h$ J* c! O+ y
- u0 T2 k7 D- X0 _2 v$ @
加载和预处理数据
4 y7 p( r! U/ ?  q) S1 [$ ^首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. 8 \8 e5 _3 F\\" J& F1 p! Y0 w; Q
  3. \\" V1 h1 f: a$ ^: R\\" n
  4. from sklearn.model_selection import train_test_split
  5. 1 b  m5 |9 q. w$ i: L

  6. * Q2 ?& @/ K) t
  7. from sklearn.preprocessing import StandardScaler- c% W- k/ l4 o: k
  8. & v3 G8 B2 V7 w2 ~6 g) ]& v
  9. from sklearn.linear_model import LinearRegression& l$ m, Z$ t0 q9 w( b
  10. 4 U  k+ p) o; y& {
  11. from sklearn.metrics import mean_squared_error
  12. 5 B' u6 k) m1 W1 N6 {2 [7 u. E
  13. ! O* u; e( n  l+ E: `, F2 Q# U/ U

  14. + u9 |7 C# P6 X) ?- b

  15. 6 b. {; h- H$ g' {6 E. c6 Y% A\\" y
  16. # 加载数据集4 r' o' W* _) \$ V% R# e

  17. 6 x2 t- M. B  x0 m' N9 j& {- x
  18. housing = fetch_california_housing()/ C8 [2 z& M3 T+ N, l: z4 Z

  19. 1 l- K8 ]- e8 A& M. W8 A  }$ H
  20. X, y = housing.data, housing.target6 J+ t5 C) u, M' E3 ]0 R! K
  21. 6 F2 \1 [; T) [2 t+ }

  22. - A3 ?& f6 ~2 f* p4 @

  23. # E% T# y$ f6 I9 _$ p' W4 k
  24. # 划分训练集和测试集
  25. * Q! s. q* n. H

  26. \\" k/ ~; @6 o\\" {; l* A* c
  27. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  28. , \0 ]2 x& ]6 L' h1 p

  29. 7 h$ S6 }7 I7 [( L7 j

  30. 4 I7 h/ Y# A; q, N) O
  31. . u/ [3 y8 F# n) @
  32. # 数据预处理:标准化
  33. + M% U8 k/ n% W; M

  34. - b0 R8 p2 R+ W  Z
  35. scaler = StandardScaler()
  36. 6 ^6 n6 C  |( n; b

  37. 4 X. ^9 L9 N. z& ~9 _. N& G
  38. X_train_scaled = scaler.fit_transform(X_train)
  39. - P' j/ ~! f' \  i2 ^  u\\" |( E
  40. 0 |) T* \  G5 p; j
  41. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型* M$ c  y4 w8 M7 F: G
  2. model = LinearRegression()! y5 n+ ^# H8 u2 ?$ r( b

  3. 3 m: @2 s* x% d\" B' H
  4. # 训练模型
    7 ^; i7 B1 V/ E' W' C. Z4 ?6 X2 P
  5. model.fit(X_train_scaled, y_train)
    / x2 K4 |  G: v7 b9 z$ f
  6.   H9 }+ i+ O+ _4 ^+ q
  7. # 预测测试集
    ! I$ n# L- v, o3 v: ~: T2 n
  8. y_pred = model.predict(X_test_scaled)8 _1 ~3 r\" ?9 F, B$ H; M& p( h
  9. + A0 N8 i+ W  ~1 ]4 [
  10. # 评估模型
    6 C8 W1 D; R8 P0 A
  11. mse = mean_squared_error(y_test, y_pred)9 J3 w* H& A& C/ B6 Z/ P
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
" z% s3 V3 O0 s" `: q预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
% N0 r" }; K! s; p' W" n$ F特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression
    , j( D3 V1 D7 B7 K
  2. 5 w2 B+ p( I0 G7 a, L- G8 H9 t. x$ q# u
  3. # 特征选择
    \" @+ Y2 T: s8 {9 G
  4. selector = SelectKBest(score_func=f_regression, k=5)% d' Z* K6 [# l; L
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)0 j2 Z& z0 X- [; U1 z
  6. X_test_selected = selector.transform(X_test_scaled)
    ! L3 L2 H0 q0 q* k; z' I$ z

  7. ! ^. G7 ~- Q+ A' E5 L
  8. # 使用选择的特征重新训练模型
    \" a+ ]& L% d- I, M8 K
  9. model.fit(X_train_selected, y_train)/ u) R8 c4 v8 \6 Z
  10. y_pred_selected = model.predict(X_test_selected)
    # ^, O# V  B3 `- o( U

  11. 2 h+ k3 a: z- p- g9 R
  12. # 评估
    \" Q, f7 _6 ?6 X9 G1 z! ^
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    0 w- I5 d# G$ K3 M0 d
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

. L) t7 b4 W. v8 q. Z, k* y# j3 g
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-26 04:18 , Processed in 0.564264 second(s), 51 queries .

回顶部