QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。2 S% d, I! J+ h) a
任务:构建一个模型预测加利福尼亚地区的房价。* n/ i2 g+ D9 x! y
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。, I, }- Q: w9 Q& m) E
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
" S0 m  a( ]) o& {* n% \, a1 u" M9 S5 x$ P& g
加载和预处理数据
! T, L$ y' \) ~首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. % x0 H* j- p7 M& r! y

  3. & ]; Z6 S+ E! `
  4. from sklearn.model_selection import train_test_split; X1 y6 ?( r. n# M; K$ R4 \( B
  5. $ K1 V0 L\\" g! x' E, x- a
  6. from sklearn.preprocessing import StandardScaler. `0 J) p. _! S; l6 s' x

  7. 6 e( ?. m5 H# x2 x
  8. from sklearn.linear_model import LinearRegression
  9. ) [! ]9 A$ `: p3 f! E1 d8 z' ~( j5 E
  10. # \+ n4 y6 Q, H$ W- ]
  11. from sklearn.metrics import mean_squared_error
  12. % r, E\\" K; Q9 C% j  S. I. o

  13. : e! U! m0 H; V; D
  14. : [4 K1 u- Y% s
  15. 5 ^) V/ a- O4 f  x4 S. a7 g
  16. # 加载数据集) `4 B) Q: c8 a. D0 b( N

  17. 2 O\\" C& Y+ k! F; b, d5 U9 n
  18. housing = fetch_california_housing()6 p# E8 g9 Z- ]$ x: T

  19. 5 l+ [4 ~8 j' V3 w2 s2 p
  20. X, y = housing.data, housing.target
  21. : o# h, y5 \( W  Q
  22. 0 m- _) n- r8 g( P

  23. * ]4 }( t7 c4 j( W5 H9 @
  24. % t4 N2 p% A# z9 C# ]+ f. l! C% N
  25. # 划分训练集和测试集# q8 x5 |; Q& W$ @

  26. # k$ Y& G7 j$ J( N% J5 W
  27. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42). |$ q# X1 w# m9 K3 e$ p+ {6 P
  28. . E' B& j& g* t7 O1 e5 L# `

  29. 5 D\\" ?( w3 G- }4 z' r+ I
  30.   X$ I3 d; ^$ Y* W& o) ?9 N
  31. # 数据预处理:标准化$ z4 @0 Z( N: q2 a

  32. . A# f( ^8 V) p; c5 I& R
  33. scaler = StandardScaler()$ N2 H* S$ _' g/ A$ P! ~. ^

  34. 2 g2 a. Q3 ]0 x( u0 d$ |+ @
  35. X_train_scaled = scaler.fit_transform(X_train)# m. f8 y1 \3 x, Y  e1 u

  36. 1 u- w% r: I' j\\" u, C; X# V
  37. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型
    5 {: ?; u: R3 [1 i, g' w( W
  2. model = LinearRegression()
    5 F: P. P7 A6 F6 X6 F
  3. * }8 G$ ~' _3 c\" A
  4. # 训练模型
    4 F# T\" H% Q2 ~3 A( K
  5. model.fit(X_train_scaled, y_train)$ l& E7 {9 {' p$ l: {# U; g

  6. / V2 G  B; A2 g8 v$ g# k7 C
  7. # 预测测试集6 F$ @1 J% t4 u; X8 R
  8. y_pred = model.predict(X_test_scaled)6 i6 g% Y& t8 v9 d0 F

  9. , Z8 z' x2 Y$ _' O7 Q+ _( V: @
  10. # 评估模型
    8 M5 d  ]8 R% b9 {& {% l; `
  11. mse = mean_squared_error(y_test, y_pred)) y\" w7 U( |9 N9 B  h
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择! u# w. |( x. _
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。" g' W4 ?" U* T* V
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression( S\" l  L% L, ~8 r+ B  J\" D

  2. : F9 R0 i; e\" ^; C5 p- |\" X9 m
  3. # 特征选择1 L8 _+ q1 J7 c9 |$ s
  4. selector = SelectKBest(score_func=f_regression, k=5)
    2 v* E7 B3 V) X9 u* e/ r) Y* I9 }) T7 L7 }
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    $ @0 I8 _4 R8 _% [
  6. X_test_selected = selector.transform(X_test_scaled)
    / a6 z/ s7 o: E

  7. 6 [\" E- S& E) O+ j* {! f2 o2 R
  8. # 使用选择的特征重新训练模型
      p. `  l4 Q1 e! l1 i# Q$ M% k; Y
  9. model.fit(X_train_selected, y_train)
    : d+ K0 j0 M6 l* G% N  o3 x- K
  10. y_pred_selected = model.predict(X_test_selected)
    % {\" i0 T$ `\" O8 n8 W% K7 @( q. J
  11. ( K\" ]4 s3 \. @6 A
  12. # 评估
    . p9 ]: g\" f/ g# f( l+ }. Y+ n9 v
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    . G2 |\" q8 B/ J# W6 E\" U% Z
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
$ B% i2 M1 J* y) j) a8 Q
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-6-13 07:44 , Processed in 0.403706 second(s), 50 queries .

回顶部