QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。- r) K- r; l, q
任务:构建一个模型预测加利福尼亚地区的房价。
8 ]$ G4 t; F# a$ S2 \: n5 h- p挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。3 I8 p7 J. w* o% c! K' c2 @( X& }/ x
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。6 A& v  w4 \+ i; a* E

# S: f; @' f& @加载和预处理数据
1 V- S+ K* g: W& L1 W4 }6 t  _首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. 0 d+ G4 I& }4 U0 j$ B3 N' |$ |5 p
  3. 7 [5 c( b1 V% P\\" W( }$ _
  4. from sklearn.model_selection import train_test_split
  5. * }# Q8 D; y$ v' W

  6. + q6 K; Q$ R* a
  7. from sklearn.preprocessing import StandardScaler& G0 h7 Y% c- M8 V: Y

  8. / @* e6 F: _# \1 N& I5 K
  9. from sklearn.linear_model import LinearRegression
  10. ' ^8 t5 F3 t, X! K/ X. [4 }
  11. 5 Z% |% x: h+ b0 l# i, U: q
  12. from sklearn.metrics import mean_squared_error1 _, j6 `- A; h( ?/ l

  13. 1 L$ h- k  D. B5 S# f; q1 s: U) P
  14. ' `4 s. o- r  ?+ ]8 Y6 g' K

  15. : \7 m6 s/ Y6 j2 P& T  W
  16. # 加载数据集
  17. , M! A: D/ h4 n- f
  18. 1 r: c! W) W8 m% e. q
  19. housing = fetch_california_housing()0 I1 G3 ?$ |- |0 ?

  20. 9 }# h. a, c  C: A0 h
  21. X, y = housing.data, housing.target
  22. 4 R9 s1 t4 \' c- _3 U

  23. 5 t) L0 }& g; Y; ^3 B1 M; c

  24. . f2 [* C  W6 F+ P+ [6 r

  25. 5 l& O9 @& X0 T4 s
  26. # 划分训练集和测试集\\" m$ f& l$ M* D9 R
  27. - h& t* C+ \6 y% {
  28. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)* E! K0 ?; t. y* Q1 f/ j, V
  29. . U8 R4 n0 J$ n
  30. \\" d7 w2 Z% }% ]2 V, I
  31. ; P6 }- f8 A4 t2 v* K# t- c6 P
  32. # 数据预处理:标准化
  33. ' L6 S8 ]3 z% `) n

  34. ' a- n0 X* {4 ^3 e
  35. scaler = StandardScaler()
  36. ' r8 T1 j1 _. I7 M, J. q) W

  37. 0 {5 W% H; c! {, Y
  38. X_train_scaled = scaler.fit_transform(X_train)
  39. 5 q7 p, X8 v% `: q1 n3 Q& _8 H

  40. 3 n, H/ E3 N+ u% [' j' O
  41. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型6 l# Q, ~( y* A; m
  2. model = LinearRegression()
    4 C9 i: o: {; ?- c2 V' K) ^& [

  3. 3 u& U6 \) U* U1 m
  4. # 训练模型1 Y; J. P+ x) r9 P: r- d
  5. model.fit(X_train_scaled, y_train)
    / `& e, _  k6 Q/ W1 e/ P: l+ v
  6.   \) O+ f+ S1 B( h4 O
  7. # 预测测试集
    / y! D, u2 a, P& i
  8. y_pred = model.predict(X_test_scaled)
    \" R. S8 k( G9 @5 A( N6 a: ^
  9. 6 Y, Y% K. b  m8 n$ d; }; G
  10. # 评估模型* ?* `9 s2 x6 |- q/ ~! l& o! P
  11. mse = mean_squared_error(y_test, y_pred)6 _+ i6 X  A8 Z: Z# j: @$ I3 n5 R# |; N
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择( `4 H! i1 l9 z8 F1 M( I0 \
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
5 o/ k7 U1 v7 S特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression( F# Y! m$ V\" o- D  h
  2. # Z# ^$ y! b, I, O\" @
  3. # 特征选择
    8 N+ L, G5 f' T: J6 a
  4. selector = SelectKBest(score_func=f_regression, k=5)
    . {1 x8 c: p0 M* \& R5 d) N) p5 |; R
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    , {7 \+ h# R( U% C7 |- s
  6. X_test_selected = selector.transform(X_test_scaled)
    % j- Z) d- l# i% b
  7. ! b4 E\" Z$ ]7 S, v
  8. # 使用选择的特征重新训练模型
    , j* o! k* W) Z, B! T7 O
  9. model.fit(X_train_selected, y_train)' |* E: W- A1 m; J/ h7 H: g% w9 i! s
  10. y_pred_selected = model.predict(X_test_selected), m* r5 t* ^) n4 _, `! u
  11. 5 X4 R1 E0 N\" i! f# |: E
  12. # 评估* c* H$ i. \4 c/ U7 d/ p& ?
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    8 H4 `) s. H7 z( U
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

9 U4 }6 A( h; y
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-14 19:42 , Processed in 0.451043 second(s), 51 queries .

回顶部