- 在线时间
- 475 小时
- 最后登录
- 2025-12-8
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7748 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2909
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1168
- 主题
- 1183
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。8 V) s" ]$ N/ {* \
任务:构建一个模型预测加利福尼亚地区的房价。- J: u, [9 V g. X6 Y/ Q
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
/ H {) U7 N0 _. } C0 w) [线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
" p/ \8 |& }3 e
1 v0 t1 S' F3 o2 q加载和预处理数据. a+ O. h, D: J6 B
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- 8 z4 d. C( p2 C; ~* H$ G7 \6 D
- ; W0 ~; f5 L% t9 c7 x' k7 m' ^
- from sklearn.model_selection import train_test_split. F2 \) {& ?0 z7 @
- 0 }: E* a0 l# {
- from sklearn.preprocessing import StandardScaler
- / \6 R9 Q/ L5 _+ `3 h8 i4 a
- 0 ^$ H1 _' A6 b: g/ H2 V8 I! y$ y
- from sklearn.linear_model import LinearRegression
- 7 D8 ]$ T% ]+ q. U8 H: S
- - q+ c1 Z1 N: D% J
- from sklearn.metrics import mean_squared_error8 B$ F# E ~1 u+ S5 j% V\\" ?1 W
- 9 P# Z! V9 V* M; y
-
- ! @$ E. E* g$ C Y B3 ^
- 7 j# b$ `+ ]( B; Y
- # 加载数据集
- 8 M5 H j% u/ a
- * n! @4 @5 s0 B7 b3 U
- housing = fetch_california_housing()
- 5 B8 z% j# _. o7 t
- . |$ p- C# j- S0 \
- X, y = housing.data, housing.target
- , K, O H) c: q$ Y% I7 p
- 6 y: C% r+ v( @$ R9 N @5 y% M. B
- 6 Z, G: @2 E; T. q2 t+ D
- - {6 e; e/ R# v$ T$ r2 o# b1 J. Z6 Z
- # 划分训练集和测试集' R/ C/ g R5 `* H/ d! U* |1 B
- : ^. n; Y& F/ I! N
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 8 Y8 l8 a! }. g+ o5 T5 X4 Q
- 3 R* u2 s. C d! `- j, Q- i
- ; T- x/ H9 T2 B2 C! o! y K
- ' U) i1 @! ~3 d
- # 数据预处理:标准化; T' g4 `1 i8 e1 g3 o\\" g/ i ?
- - C1 Z# |- }3 \) U9 R: K o& E
- scaler = StandardScaler()3 V' a2 b* n5 O3 M6 D+ K* h z! ]/ D
- 3 T; ^) W' ]6 I% i/ @
- X_train_scaled = scaler.fit_transform(X_train)
- 8 | n8 x+ j8 {1 S5 d
- ; O5 a1 D$ k( u) l# N8 R
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
% `' x7 b& F# |& L1 ` - model = LinearRegression()1 S9 L- c) A\" U; B( ]
- - U( O6 r: O8 c2 U7 W
- # 训练模型: [( E% J# v2 `4 I$ w
- model.fit(X_train_scaled, y_train)$ |, I0 j- Q& a\" M6 l3 L
-
; b0 Y: _$ ]+ | - # 预测测试集
7 c6 Z2 R! t/ \2 x - y_pred = model.predict(X_test_scaled)
3 H: Q9 Y# t' n+ z t b - 2 R q\" s+ e8 R1 B' F
- # 评估模型
3 O( p- r$ v; h- V4 ]9 g6 r, w - mse = mean_squared_error(y_test, y_pred)
( z t6 o+ K# N0 q - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择/ D9 R1 r) L4 f
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
0 c c8 |) W% Q9 A& V" v% I特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression( s, E# {5 e s# T
-
7 m. R- T/ ^5 b - # 特征选择( g) h0 N* n3 Q7 d
- selector = SelectKBest(score_func=f_regression, k=5)
$ f. k: j. W/ J9 ] - X_train_selected = selector.fit_transform(X_train_scaled, y_train)( B; M% O7 @9 A1 K! U. T
- X_test_selected = selector.transform(X_test_scaled)
! ~% y) Z; E/ v) s9 V4 } - $ V0 z1 g0 H! Z$ j7 L0 n\" Z/ h! t( v# K
- # 使用选择的特征重新训练模型$ L3 ?\" M& ^# F. L
- model.fit(X_train_selected, y_train)4 K; Z2 A8 L6 ~4 [# R0 |8 w. V
- y_pred_selected = model.predict(X_test_selected)
8 x! i/ {+ u8 D( U4 Y5 `8 M - % \- A. _4 A5 M# _: y
- # 评估2 O& o- J V$ l9 ?/ y( A; U* A) l5 ~5 l. e
- mse_selected = mean_squared_error(y_test, y_pred_selected)
0 J6 o! ~; Y\" g* x* ?/ j - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码 O) B, P0 }) x6 W U' j0 B
|
zan
|