QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。- y; @& H1 H; m
任务:构建一个模型预测加利福尼亚地区的房价。1 k" d+ h- j5 ^5 [$ `* A% b$ e
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。# R. X$ U( U. q4 ]3 k* _# X
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。1 ~9 Q2 n: g2 X; e5 ?% I
8 e) u% q5 h5 o; I
加载和预处理数据
6 G6 y; G* j9 o$ A3 b" K首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing7 R* M: k: |\\" F5 n9 ?( H\\" O0 H' [
  2. 3 f3 `% g\\" T! b6 d+ Z
  3. from sklearn.model_selection import train_test_split
  4. + T\\" I% B/ w  z; I\\" u4 X( _3 M

  5. 8 w$ e) j) @/ w) D( N# \% p6 R
  6. from sklearn.preprocessing import StandardScaler! q% ~* ?- e# q' H2 D0 F
  7. 6 g\\" t  _. E# S7 h. w' N8 j/ k
  8. from sklearn.linear_model import LinearRegression& ^8 @/ o0 p/ r0 ^. l

  9. 8 e$ [8 H+ @+ [3 {0 c; z
  10. from sklearn.metrics import mean_squared_error
  11. / y& r9 a0 `/ s, Q

  12. 4 F. o7 @4 r) B7 K4 i

  13. 7 H! L+ }. h+ B& q

  14. 2 i4 W0 V$ R* M  c+ n
  15. # 加载数据集
  16. 8 T0 X' ~* V% I: K! N
  17. ( r\\" r& t$ i* n( [4 h2 M
  18. housing = fetch_california_housing()4 B7 t, t% {$ H7 v

  19. $ t! X, s0 I7 F! W\\" S& N
  20. X, y = housing.data, housing.target% t9 {* n# }$ S  N+ ?
  21. ) `! q' N( v5 H7 ~+ j  Y
  22. 1 _+ Q0 B6 q, Y# C4 P9 Y' w

  23. : Y% ?1 ]/ a0 R5 U3 R# v  O
  24. # 划分训练集和测试集. L4 Q3 U8 `# S2 t  @\\" a
  25. ; ~6 @7 K4 F# ]: D3 |$ H
  26. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  27. 8 ?\\" N) |\\" ?2 W6 l: _
  28. , J7 e& q+ I* M2 {5 O
  29. 2 T, k8 g9 o7 `\\" n: U
  30. 8 m8 l9 l  n! D9 O+ Q
  31. # 数据预处理:标准化+ V. h. f3 b) }4 H8 s# J
  32. - O  f8 N* }* z) k
  33. scaler = StandardScaler()
  34. ) a( x2 {/ m1 P& F

  35. 3 A5 P! c0 ?  j! C9 G$ o2 ?# F
  36. X_train_scaled = scaler.fit_transform(X_train)4 j' b+ x& e# i4 G
  37. % X5 b$ R: d; B) v' m( n+ }
  38. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型5 P\" d' u5 r' t. S2 G  Z- {
  2. model = LinearRegression()* n( J% X, {; s$ N3 {8 l

  3. + H- q# l0 Y8 b% f* u0 h9 Y+ {8 X
  4. # 训练模型
    1 B% N0 Z# s/ c7 C8 V) q
  5. model.fit(X_train_scaled, y_train)
    7 r9 V7 @6 @6 t

  6. ! p8 d' {# K' k, O0 E
  7. # 预测测试集
    ( t, {+ C# e\" R8 @' }\" D% I
  8. y_pred = model.predict(X_test_scaled)' Q9 A1 w. t8 I  m- ~5 i; F2 G& z

  9. $ l, _  a8 x& e2 m\" N) T
  10. # 评估模型7 e7 r' O! B8 ~
  11. mse = mean_squared_error(y_test, y_pred)8 q) ~, G; G* l; z2 P+ }7 f
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
: Y5 U. P! s1 ^6 J3 L+ H( |% [预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
" P( J' k, U3 k: K特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression5 W' e6 v% V' b3 `

  2. / ~  ]8 T6 M2 B7 m) m4 m
  3. # 特征选择  d6 ~  _/ T\" e/ s3 D, D* m
  4. selector = SelectKBest(score_func=f_regression, k=5)4 q1 [+ V2 y  n* `
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    : S) a  Q- e2 ?0 n0 y- f; @
  6. X_test_selected = selector.transform(X_test_scaled)
    6 ^, C: U; H9 N\" W5 ^  l

  7. ; j) k4 S\" H1 J# J
  8. # 使用选择的特征重新训练模型
    ) o) {\" `# l1 ?  I
  9. model.fit(X_train_selected, y_train). _2 W% {) ^3 ]- \7 }% [) R- L9 p
  10. y_pred_selected = model.predict(X_test_selected)
    5 |/ [\" S) R$ U' k

  11. 6 r- k! V8 ~3 _9 Z& y) E3 T/ Y9 y
  12. # 评估. A/ T& l: s, d5 q2 Y
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    * s+ H& ]5 M4 k& e! e% [3 C( z
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

( A+ c0 D% L2 m' w/ [8 i" 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-4-12 22:50 , Processed in 0.392639 second(s), 50 queries .

回顶部