QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1183

主题

4

听众

2909

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。8 V) s" ]$ N/ {* \
任务:构建一个模型预测加利福尼亚地区的房价。- J: u, [9 V  g. X6 Y/ Q
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
/ H  {) U7 N0 _. }  C0 w) [线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
" p/ \8 |& }3 e
1 v0 t1 S' F3 o2 q加载和预处理数据. a+ O. h, D: J6 B
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. 8 z4 d. C( p2 C; ~* H$ G7 \6 D

  3. ; W0 ~; f5 L% t9 c7 x' k7 m' ^
  4. from sklearn.model_selection import train_test_split. F2 \) {& ?0 z7 @

  5. 0 }: E* a0 l# {
  6. from sklearn.preprocessing import StandardScaler
  7. / \6 R9 Q/ L5 _+ `3 h8 i4 a

  8. 0 ^$ H1 _' A6 b: g/ H2 V8 I! y$ y
  9. from sklearn.linear_model import LinearRegression
  10. 7 D8 ]$ T% ]+ q. U8 H: S
  11. - q+ c1 Z1 N: D% J
  12. from sklearn.metrics import mean_squared_error8 B$ F# E  ~1 u+ S5 j% V\\" ?1 W

  13. 9 P# Z! V9 V* M; y

  14. ! @$ E. E* g$ C  Y  B3 ^
  15. 7 j# b$ `+ ]( B; Y
  16. # 加载数据集
  17. 8 M5 H  j% u/ a
  18. * n! @4 @5 s0 B7 b3 U
  19. housing = fetch_california_housing()
  20. 5 B8 z% j# _. o7 t
  21. . |$ p- C# j- S0 \
  22. X, y = housing.data, housing.target
  23. , K, O  H) c: q$ Y% I7 p
  24. 6 y: C% r+ v( @$ R9 N  @5 y% M. B
  25. 6 Z, G: @2 E; T. q2 t+ D
  26. - {6 e; e/ R# v$ T$ r2 o# b1 J. Z6 Z
  27. # 划分训练集和测试集' R/ C/ g  R5 `* H/ d! U* |1 B

  28. : ^. n; Y& F/ I! N
  29. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  30. 8 Y8 l8 a! }. g+ o5 T5 X4 Q

  31. 3 R* u2 s. C  d! `- j, Q- i
  32. ; T- x/ H9 T2 B2 C! o! y  K
  33. ' U) i1 @! ~3 d
  34. # 数据预处理:标准化; T' g4 `1 i8 e1 g3 o\\" g/ i  ?

  35. - C1 Z# |- }3 \) U9 R: K  o& E
  36. scaler = StandardScaler()3 V' a2 b* n5 O3 M6 D+ K* h  z! ]/ D

  37. 3 T; ^) W' ]6 I% i/ @
  38. X_train_scaled = scaler.fit_transform(X_train)
  39. 8 |  n8 x+ j8 {1 S5 d

  40. ; O5 a1 D$ k( u) l# N8 R
  41. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型
    % `' x7 b& F# |& L1 `
  2. model = LinearRegression()1 S9 L- c) A\" U; B( ]
  3. - U( O6 r: O8 c2 U7 W
  4. # 训练模型: [( E% J# v2 `4 I$ w
  5. model.fit(X_train_scaled, y_train)$ |, I0 j- Q& a\" M6 l3 L

  6. ; b0 Y: _$ ]+ |
  7. # 预测测试集
    7 c6 Z2 R! t/ \2 x
  8. y_pred = model.predict(X_test_scaled)
    3 H: Q9 Y# t' n+ z  t  b
  9. 2 R  q\" s+ e8 R1 B' F
  10. # 评估模型
    3 O( p- r$ v; h- V4 ]9 g6 r, w
  11. mse = mean_squared_error(y_test, y_pred)
    ( z  t6 o+ K# N0 q
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择/ D9 R1 r) L4 f
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
0 c  c8 |) W% Q9 A& V" v% I特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression( s, E# {5 e  s# T

  2. 7 m. R- T/ ^5 b
  3. # 特征选择( g) h0 N* n3 Q7 d
  4. selector = SelectKBest(score_func=f_regression, k=5)
    $ f. k: j. W/ J9 ]
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)( B; M% O7 @9 A1 K! U. T
  6. X_test_selected = selector.transform(X_test_scaled)
    ! ~% y) Z; E/ v) s9 V4 }
  7. $ V0 z1 g0 H! Z$ j7 L0 n\" Z/ h! t( v# K
  8. # 使用选择的特征重新训练模型$ L3 ?\" M& ^# F. L
  9. model.fit(X_train_selected, y_train)4 K; Z2 A8 L6 ~4 [# R0 |8 w. V
  10. y_pred_selected = model.predict(X_test_selected)
    8 x! i/ {+ u8 D( U4 Y5 `8 M
  11. % \- A. _4 A5 M# _: y
  12. # 评估2 O& o- J  V$ l9 ?/ y( A; U* A) l5 ~5 l. e
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    0 J6 o! ~; Y\" g* x* ?/ j
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
  O) B, P0 }) x6 W  U' j0 B
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, 2025-12-9 00:19 , Processed in 0.416016 second(s), 50 queries .

回顶部