QQ登录

只需要一步,快速开始

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

房价预测(线性回归)

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

833

主题

1

听众

2188

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 16:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
数据集:使用加利福尼亚房价数据集。
% a6 M# }/ o$ `: h: G任务:构建一个模型预测加利福尼亚地区的房价。
9 I) g. V7 p" E  _' F/ _) d挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。; w# j) W* T! z$ F+ l+ O) w. W
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。5 _: x$ w" Z/ a" W* I
  v" x* H3 {" ^3 n# b
加载和预处理数据& N1 h8 B' l! }& z/ L8 U
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。
  1. from sklearn.datasets import fetch_california_housing
  2. 4 d/ c% l# Q5 `/ }. N
  3. 5 y# A  U. L4 s- @8 t- r* a
  4. from sklearn.model_selection import train_test_split
  5. $ l' F\\" {2 D5 m\\" G2 Q
  6. 7 q0 ]% j. s. F9 h/ H0 H7 I
  7. from sklearn.preprocessing import StandardScaler  p' h0 B8 N7 M0 a1 ^  ^
  8. : x6 {( M; \; G% O
  9. from sklearn.linear_model import LinearRegression. Y4 ]: [9 {/ v% r) W9 ~

  10. ' r. E( B7 y  D
  11. from sklearn.metrics import mean_squared_error
  12. 1 v& A$ M4 p3 Y3 R\\" m1 X

  13. 5 q' |$ z9 T2 c& ^/ M
  14. ; [+ ?\\" ]# [1 `; s
  15. , D! G: O! t' V/ w2 |0 [' z
  16. # 加载数据集: \- |- y7 W% k- F: o+ ~8 \2 ~
  17. ! ?3 D2 X, p3 F2 g- T
  18. housing = fetch_california_housing()
  19. ! v2 g/ e. S  N$ J4 T

  20. ; o4 b5 k, s# z$ A
  21. X, y = housing.data, housing.target  s* ]4 ]6 z4 G6 a

  22. + J& i/ M- i% x: {& A7 v
  23. 2 l! h, h; P/ c9 _$ X: \
  24. - v. d( d. i9 ?- S' X& H
  25. # 划分训练集和测试集
  26. : k4 g5 y. G7 T% {) K' c! N2 N) P

  27. % `5 m) l2 }+ p9 |5 L& N- c8 o+ _
  28. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)) k# Y& n\\" Y$ t2 Y
  29. 3 W) X! y, J: ]8 ]3 L
  30. ! ~. C9 ]$ p: F. q& j6 {7 b

  31. 2 @$ j5 `* e/ E  [( P5 N; U
  32. # 数据预处理:标准化1 |# a# P; h1 H  @  _; O+ Z

  33. ) d3 B/ H4 f; G3 t
  34. scaler = StandardScaler()5 s/ ^/ v- V1 n- k/ k1 B
  35. # A& W. W  L' d& J
  36. X_train_scaled = scaler.fit_transform(X_train)
  37. . B4 b- I0 Y& J3 |\\" h& e; {

  38.   x. k& D% x8 h
  39. X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型
  1. # 创建线性回归模型/ H. l0 N4 S8 b0 ^9 o- e  q7 j! C( A
  2. model = LinearRegression()
    ) y* E\" l6 I2 M. o

  3. 7 p' ]; P, o6 R- j! z9 l7 D. M
  4. # 训练模型
    4 z' p  }* m( a2 f* F
  5. model.fit(X_train_scaled, y_train), m! v- \3 y# f8 y' {/ k3 f

  6. 6 q\" C  }; [5 G- u7 N) u
  7. # 预测测试集1 E! @' r& c+ u. O; Q2 s
  8. y_pred = model.predict(X_test_scaled)) ?' y. ?/ X6 ~( F
  9. * h2 R' ^+ v% T( t: U  U; u
  10. # 评估模型8 o! [# M! S+ Q  j4 |$ x
  11. mse = mean_squared_error(y_test, y_pred)
    # N& f9 G% @2 n0 i/ a3 o
  12. print(f"Mean Squared Error: {mse}")
复制代码
挑战:尝试不同的预处理方法和特征选择
: n4 u1 Z# J! _6 J# P, a" I7 [预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
$ v8 w) Y+ o8 o" R) O: g3 {' I特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。
  1. from sklearn.feature_selection import SelectKBest, f_regression0 Q* G5 K% L9 w( x; l\" n8 x

  2. 0 ]& u) x% w$ J
  3. # 特征选择$ W# u. d# T1 h% {4 h
  4. selector = SelectKBest(score_func=f_regression, k=5)8 k+ P, S% h. [8 e- U
  5. X_train_selected = selector.fit_transform(X_train_scaled, y_train)
    : d  V0 }* H0 M- T
  6. X_test_selected = selector.transform(X_test_scaled); y2 U. X7 k5 q# d+ O+ n! X
  7. / U  I; e1 G$ q7 G+ M8 x\" H: a# C1 ~
  8. # 使用选择的特征重新训练模型
    ) T\" T0 X  E' [. T+ a% {; j
  9. model.fit(X_train_selected, y_train)
    / {; b3 l7 Q3 G! ]% Q6 K2 {
  10. y_pred_selected = model.predict(X_test_selected)3 S: v8 f7 b. e9 v

  11.   ?6 \& p: L8 M: B3 J0 w; R4 Y. a% A
  12. # 评估
    % ?\" o8 R$ U& ?0 ?
  13. mse_selected = mean_squared_error(y_test, y_pred_selected)  `$ E  y- \) d\" s\" Z4 R7 b
  14. print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码

7 l4 x4 v) k$ G3 A0 ^9 r
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, 2024-6-12 02:11 , Processed in 0.780010 second(s), 50 queries .

回顶部