- 在线时间
- 481 小时
- 最后登录
- 2026-8-23
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7858 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。
0 R2 o$ q; W, \4 B任务:构建一个模型预测加利福尼亚地区的房价。
9 Z7 I; c% J4 ~( U. D5 o6 J挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。7 |4 k* ^: b: y# R* O" L% ^: F
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
; i8 {' x' r6 f3 A
+ t6 @4 S. g7 Q( T+ Q+ ^5 Y/ k' l4 b加载和预处理数据
$ f4 ~( |- O0 K. [: S! t% o5 l. k首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- ; o. R9 i j) R. w7 g W
- v) e1 \# ]) c5 I! s4 V# a
- from sklearn.model_selection import train_test_split
- $ Q: {: n- I0 b1 q- I1 d0 {. z
- r4 k4 Q+ _1 D
- from sklearn.preprocessing import StandardScaler\\" \4 ]( ?% \\\" Q# R2 d& t5 d
- 6 [. G% \+ q5 O0 \% m2 c9 z9 w% B
- from sklearn.linear_model import LinearRegression' j7 `8 ~6 }% S' S F+ s1 S2 @
- , n, c: h7 r* q# b' V5 t
- from sklearn.metrics import mean_squared_error
- ) J\\" y' `2 j; q) [ W Q7 u+ r
- - S A7 N9 O$ [, d( r
- & `6 o$ S n. U' Q9 {
- 0 I2 d N& W3 f) K2 c2 P
- # 加载数据集5 } S- ^0 I. g$ p# j
- ; `/ B/ e: B4 S
- housing = fetch_california_housing()
- - U! X0 Y4 O; c1 |/ Y
- : f( V. f l5 l
- X, y = housing.data, housing.target4 a& ]* Q! L0 O7 h; O. S! s
- 7 C6 y7 \' Y, l
-
- 5 ^7 O* m\\" d9 k9 v5 Z1 f
- 5 N2 A# h9 v: j$ B) @- @+ V
- # 划分训练集和测试集8 ~! w% T$ u4 ^- w4 o4 }3 u8 @5 ^
- 8 C7 ~4 ]# S6 z/ M
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)) e y' C. r' J: R) T1 ~
- 6 [: \# P8 P3 T# R+ Z
-
- ' O4 \) B, ^( U+ q' ?7 H
- 2 n1 d, Y+ P+ q* G$ p
- # 数据预处理:标准化/ y* Z) |\\" b7 D; r% g
- # {' B+ { o1 [+ G2 u+ [
- scaler = StandardScaler()
- 8 I$ N! X; E( q9 E& Q
- 1 W# z5 p$ B: @+ X$ c
- X_train_scaled = scaler.fit_transform(X_train)+ b8 M7 _- j0 ?) F\\" j$ b
- 3 N& ]/ N' S0 `4 O- @- m
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型; I4 r8 v g1 a
- model = LinearRegression()
# {8 ~; q$ ^& {6 d t -
% ]/ C% f9 i0 G# t q# h\" S\" W$ g - # 训练模型
1 q! t1 o* h' k$ A\" }# u, ^ - model.fit(X_train_scaled, y_train)
+ C* B4 {8 V7 m5 t -
2 E4 Q% c* V ^- T% B - # 预测测试集
) `7 n) `, F' J5 M# i: }( W - y_pred = model.predict(X_test_scaled)+ v- @( w+ Z' f8 x. x
- + L( ]' j% @; x) ?6 @# i9 T
- # 评估模型
/ ?\" r5 o6 B# {8 ? - mse = mean_squared_error(y_test, y_pred)
* D8 y, w) n1 B' o! u - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择0 A" X8 n7 A a
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。& V) F% u6 \3 T& _# _$ |
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression9 O5 }$ E6 G0 a0 a; F( i% B
- ( E# j( k; r; V! G\" c
- # 特征选择6 C\" Q% f) [& Z# r! |5 |9 w6 |
- selector = SelectKBest(score_func=f_regression, k=5)9 h& _6 q$ S2 k
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)
: m3 v- N! g1 Y' f2 J - X_test_selected = selector.transform(X_test_scaled)9 b. h) j& k1 _
-
1 z& W# F) ]4 ^. r- X - # 使用选择的特征重新训练模型: N! ^5 l& D+ D/ d2 s7 t
- model.fit(X_train_selected, y_train)7 x$ X; k# y0 M1 |, M& D* u
- y_pred_selected = model.predict(X_test_selected)/ U# n7 R) ?- Z
-
- r' V& N* Q' U8 i4 J% X/ g, } - # 评估' _0 I! `, O- h\" Q& {& P
- mse_selected = mean_squared_error(y_test, y_pred_selected)
( @2 M' O& }3 h6 G( Y+ G) I - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
- }4 M- \( D/ O1 _ |
zan
|