QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

1198

主题

4

听众

2978

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。
" C# b9 l- |' V" {" |$ ~任务:构建一个模型预测加利福尼亚地区的房价。
' s* e  y  D/ Y挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
9 ]* C' h  e" H线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。; Z; a, p; w& g7 w! [8 h

6 N7 _" \8 {% N/ e加载和预处理数据
1 R3 c+ S  @3 H/ R& K首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing0 v( }* B\\" D& e* }

  2. ; i) a; A6 p+ o! w4 i2 f\\" D
  3. from sklearn.model_selection import train_test_split
  4. 9 U1 r4 L' |# u2 _/ J

  5. 8 Z* e8 i5 F; f- B+ W
  6. from sklearn.preprocessing import StandardScaler6 o\\" G$ w& p6 X

  7. 8 p+ I& J2 {4 G( u% o
  8. from sklearn.linear_model import LinearRegression3 N6 z8 |$ T( v: Z3 J  j1 C
  9. : ^4 q% [5 M\\" C) J' L. m1 Y$ |* Y
  10. from sklearn.metrics import mean_squared_error
  11. 4 l4 Y8 F. G2 U' K
  12. 3 B. n; ~; y: m2 S0 Y) b7 i

  13. ; F# @1 p1 b& K+ H\\" v

  14. ; t3 x: H' c; x# q8 @
  15. # 加载数据集+ k/ y1 k* t( X1 h( m

  16. 2 y4 w' \& e  D; K, A5 O
  17. housing = fetch_california_housing(). z: M8 U7 \6 y' c% N

  18. 8 ^5 G. M7 O. k  h
  19. X, y = housing.data, housing.target( P/ d7 a/ j# ?6 Z

  20. 8 W6 ]; l0 o: B
  21. - a4 g5 ^$ S' N& b2 x
  22. * B' s( w8 \) \
  23. # 划分训练集和测试集
  24. 3 d6 J, ~: B( p+ {  {; k

  25. ( P- j\\" L/ M2 o2 C
  26. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  27. ; @$ [% H! y4 h* \: O9 e7 i4 q
  28. 7 M) X, L: T\\" k% [5 @. z( @0 @/ k

  29. 9 @, h$ g4 d; ^) u2 x
  30. # K+ M  V) k$ a+ E3 f8 ?
  31. # 数据预处理:标准化. P% O( N& [1 Y
  32.   L, S0 f& |. x) Y
  33. scaler = StandardScaler()
  34.   A5 L* L\\" b! l2 H, B8 D( c7 Q2 }

  35. 9 B9 C+ F! q. I' c
  36. X_train_scaled = scaler.fit_transform(X_train)9 c' ~+ V* E9 S9 e

  37. 0 ^1 i2 [  l4 ?! @. n& d6 N9 U
  38. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型4 k9 f! n; i  Z# M) Y5 E: ^7 O
  2. model = LinearRegression()
    - v7 Z* [4 Y# b- ]. i

  3. # @7 Z* o& g# w
  4. # 训练模型- ~9 W; i* c$ J1 j2 \
  5. model.fit(X_train_scaled, y_train)& F; ^, |7 n/ V; v

  6. 3 k  e4 R. y3 K  K6 _* t! _
  7. # 预测测试集5 G) t: A3 }/ n. g3 t- f8 G' {1 H
  8. y_pred = model.predict(X_test_scaled): F) X7 M6 x. U. U% D7 Q
  9. 0 ^2 o; G$ ^9 w0 t
  10. # 评估模型8 `  W+ t7 n  A2 }: V3 j1 A; I% \
  11. mse = mean_squared_error(y_test, y_pred)3 R) S, @  I) K. `3 N
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择9 m! v& G0 E3 U$ R  P1 `' x
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。7 [  k" U; V5 }0 e4 Z- T
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression4 j$ Y3 V5 x6 M0 |
  2.   R3 L0 J) x) h, F/ v; D) V) D! u2 o
  3. # 特征选择- M- J' B6 v6 P% Q  y
  4. selector = SelectKBest(score_func=f_regression, k=5)' K* C6 N% j8 n, e& P5 k4 M! g
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    4 Q; z0 l! R8 \
  6. X_test_selected = selector.transform(X_test_scaled)
    \" T# i0 l: [1 d
  7. ' G' a7 a7 U7 U\" R9 K1 c\" U
  8. # 使用选择的特征重新训练模型
    % `- [& U4 \, n7 |
  9. model.fit(X_train_selected, y_train)- X) @0 }' H9 X4 B& M
  10. y_pred_selected = model.predict(X_test_selected); K' e! A$ [# {: h; ]
  11. ' v  k+ V' \( P7 O6 x
  12. # 评估$ X+ B* h& V: t6 ^- P
  13. mse_selected = mean_squared_error(y_test, y_pred_selected). _  y! r* n* s& v; \  |
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

6 Y' T0 \% k% V; d/ s. R4 I8 H& l0 Z
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-10-23 03:53 , Processed in 0.295958 second(s), 50 queries .

回顶部