QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1175

主题

4

听众

2823

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。1 p2 Q* |1 ~5 _6 }9 w
任务:构建一个模型预测加利福尼亚地区的房价。' x# ]' _  T  \# i2 {, Y
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
5 `  ~3 g* `1 p线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
( q% f: E5 N* y- s& L- K/ n4 a2 q" I! X
加载和预处理数据; f" c4 G0 n: l9 t; \
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing$ a4 k9 p! Q2 ^

  2. , ^' U* p7 M' ]1 X! Z. d
  3. from sklearn.model_selection import train_test_split
  4. % T2 m0 f. S/ {' O4 ?1 k5 |- d  j

  5. & a: G9 m- @3 E3 V/ ]$ }6 R/ _
  6. from sklearn.preprocessing import StandardScaler
  7. $ I' @! \& q1 [. x( {: K) x

  8. 6 h- W0 q\\" {4 D' ~6 K5 }& N
  9. from sklearn.linear_model import LinearRegression
  10. ) `% k. J/ Q( s, U. p3 G/ e6 `
  11. * @& G5 |( w9 U, h
  12. from sklearn.metrics import mean_squared_error
  13. % o+ \' K+ f# c! f8 M

  14. ( C% o. |: D( L+ u8 b
  15. ! d3 d1 J) h+ ~% j5 B: N
  16. : Z  C' A& |1 M. g. h; ~& S
  17. # 加载数据集' x6 C8 ?0 L' v1 n4 v

  18. $ Q  Y5 }. g2 q\\" I8 C
  19. housing = fetch_california_housing()
  20. - N6 S- B! l  e  h* K
  21. 5 T1 p% h5 m- [5 X
  22. X, y = housing.data, housing.target
  23. * T/ H( U# [: Z1 T  P
  24. ) J: e/ W; E. W$ A  `

  25.   E. ]/ U& B7 ~( a3 V7 z
  26. \\" q: P! @3 ^7 Z$ }
  27. # 划分训练集和测试集, Y( S4 a3 f8 U6 N) Q: h  A9 e
  28. & w; ~8 B! r, l, ?* Q- U
  29. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# K' ~# t4 T6 [  i: ]\\" q+ s
  30. : Q& g& t0 H+ Q/ w& X5 G

  31. ' U% H2 ^1 k& V$ P( w# ?

  32. % {1 J1 M/ P4 e9 M
  33. # 数据预处理:标准化
  34. - D+ V5 ?+ ^, B4 a, s) D

  35. ! u0 x# m7 t2 D# Q! H5 v
  36. scaler = StandardScaler(), ?; J' T3 W5 i2 c* T  Q! ~

  37. + n' _( h+ ]# F& l  w' H7 I6 Q( j
  38. X_train_scaled = scaler.fit_transform(X_train)8 b# J+ ?, `6 m\\" g  I9 r  d
  39. ! a; t+ \) N. f8 C9 S3 H
  40. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型
    6 C5 q/ a: J) y3 U& J/ Y7 h3 }7 P
  2. model = LinearRegression()
    # D: r# i$ q8 r# g1 R3 l  Q) J
  3. 9 M7 q+ W/ g5 B3 T$ `, ]! r
  4. # 训练模型$ \( f& D! i$ S0 O0 Y
  5. model.fit(X_train_scaled, y_train)\" V+ S. D9 ?, l. Z$ x& m

  6. ( x3 M0 _2 D8 i/ Q! [' ^
  7. # 预测测试集! S0 v& B8 C9 e$ }6 ?4 v
  8. y_pred = model.predict(X_test_scaled)
    $ t2 S' N+ E& x6 ~4 ]) r

  9. & B9 `& `2 C7 H\" n1 D3 \. \
  10. # 评估模型' u7 s5 [8 D# W
  11. mse = mean_squared_error(y_test, y_pred)
    . G) s9 l, E  H) s# s
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
+ x3 K( }2 P/ E$ o& W8 Z预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。0 o4 ]/ a3 F1 g* l* \1 ]
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression
    * t* e, K( t6 }. @, _0 Q
  2. 9 f* e# F* Q7 Q7 Z6 ?
  3. # 特征选择
    ! M$ z5 `$ h* Y( \6 a7 \
  4. selector = SelectKBest(score_func=f_regression, k=5)' c1 H/ N9 k- @3 c5 w3 G
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    9 ^/ E( {, Y% P- N$ W& q, M
  6. X_test_selected = selector.transform(X_test_scaled)
    ; q# n! h5 F6 a7 e
  7. 7 [2 j1 @1 C; t1 y# b\" O
  8. # 使用选择的特征重新训练模型
    ( e3 y0 z/ s5 ?; ?5 t
  9. model.fit(X_train_selected, y_train)
    & t1 e( u  p7 a( v- g) t! R% F3 J
  10. y_pred_selected = model.predict(X_test_selected)
    , g, v8 H  U2 J+ r& ]6 y' v. ~

  11.   w% G$ O& E0 Y\" y! G% X# ?
  12. # 评估5 d+ x4 e5 D  O& w/ X9 {\" h1 M
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)
    ; g5 \- y\" a9 ]( i
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

- T1 M% `. w! n9 b% l
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-7-22 14:08 , Processed in 0.599015 second(s), 50 queries .

回顶部