- 在线时间
- 482 小时
- 最后登录
- 2026-9-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7953 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2978
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1183
- 主题
- 1198
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。
# y2 i2 t Z2 Q6 s任务:构建一个模型预测加利福尼亚地区的房价。
3 z! i4 [ n( h( K: |挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。( d; K4 n: Y# H0 [
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
% Q. A) j( `4 D9 X% d9 I8 F0 }, z: ^3 s1 \6 J6 q6 O
加载和预处理数据
: _2 J5 N7 [) \: {% D" y M- {首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- 8 T3 M3 p9 E3 c5 F' I/ Y
- # g5 f; E9 c8 \2 l5 W
- from sklearn.model_selection import train_test_split4 F* A1 V8 V\\" C& D7 L: X
- + @9 \8 ~0 k, W c1 Q
- from sklearn.preprocessing import StandardScaler& }\\" K& w8 N' Y* J, C+ i- Z4 g
- , J- U2 G9 s' e! `. n; H O1 J
- from sklearn.linear_model import LinearRegression& ^& A3 P: i9 [2 Q, w
- P0 N& n) r\\" f\\" s
- from sklearn.metrics import mean_squared_error& ]& v( p, D$ y9 m
- 8 E( @& M5 Z# d; K
- 6 g7 k- p0 t1 ?: u
- . A/ B t2 J4 o) X, p# ^
- # 加载数据集$ z4 @7 A4 v5 d; d+ Q
- ( w( g1 G6 f. l9 `2 I* d( X9 H. g
- housing = fetch_california_housing()
- / W4 I* t/ f7 c7 X\\" r0 ^% g4 l
- # q) d+ m5 J# I- x( Y3 J
- X, y = housing.data, housing.target) A2 G8 ~4 \& p3 X, T; J; ?
- 0 S9 {* t, G/ N' L
- 4 \. X* m0 i! N6 ~
- 0 ^6 k9 G& J% `) l
- # 划分训练集和测试集
- ! t7 x- t; Z, P( O# x2 [8 J8 x5 g
- ; f3 P0 Y, x6 g# N
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)* s. @3 J' `\\" L2 }: T1 L/ W, R
- ( N' h. I) F7 |8 n
-
- 0 ? N1 B H; {9 |* p6 S9 P
- \\" E\\" v4 t/ t* L/ a `& A
- # 数据预处理:标准化7 A$ U$ ]2 ?1 ^! k
- \\" x$ D) O\\" i) @8 [
- scaler = StandardScaler()\\" ^8 x8 i( J6 h, o& `/ }
- ; o! K8 y* v1 a$ p/ w7 y
- X_train_scaled = scaler.fit_transform(X_train) C$ ?+ _& D! X& F: k
- \\" m7 g; J) h8 N0 J# }% m8 E; j D
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
+ g1 t& X5 Q1 \+ E: k: _7 h% D - model = LinearRegression()
$ X\" ]4 c4 E* c/ y! r, _9 F- M - : Z% c- B1 M' f6 W/ Q
- # 训练模型/ c& l' J4 a- P. R
- model.fit(X_train_scaled, y_train)3 N( e# F7 B3 I
-
) i1 u- X/ {% O( |6 h7 s - # 预测测试集
: |# M+ R) F, i2 t: L/ U& x - y_pred = model.predict(X_test_scaled)
# x4 Q; J0 E* [( s$ m -
\" L, Z# F- Q3 V - # 评估模型
* {( E0 R% [# P8 J\" m - mse = mean_squared_error(y_test, y_pred)
' V% \) P+ ^- d, `3 e( ]+ e - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
; l' b0 b- \- x5 q预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
0 `. w( m1 F2 c/ r2 N) B# ?+ ?7 e特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression
8 D8 y( ^' T4 V1 |) ?2 _ - 7 z/ o F\" w1 w
- # 特征选择4 T2 k' g; e, l8 @9 Q2 U# q
- selector = SelectKBest(score_func=f_regression, k=5)
) I2 t. G- Q$ W3 t( p6 P - X_train_selected = selector.fit_transform(X_train_scaled, y_train)% p8 Q7 x\" m, j. N3 q
- X_test_selected = selector.transform(X_test_scaled)
) p* K. i$ y1 j8 G! E\" X) g0 p - ' D& k( E\" b1 _3 M. j1 G& i
- # 使用选择的特征重新训练模型0 N; X3 ^ @# `! ]+ |: W6 {
- model.fit(X_train_selected, y_train)
4 f/ ]5 @. |+ ~% H: o; E7 W - y_pred_selected = model.predict(X_test_selected)
# d. T7 f0 C: y' ` - 2 Z5 F: f\" u) x; l* i
- # 评估& K4 w L6 E& v4 }6 f! X3 i
- mse_selected = mean_squared_error(y_test, y_pred_selected)
. O1 e; Z, h/ Q H2 N' _\" r - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码 N+ z/ x3 N5 p' l
|
zan
|