- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。
! u2 q) V- z) B7 W1 r7 E任务:构建一个模型预测加利福尼亚地区的房价。
7 y8 [. ?7 |9 D挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。' U- o- _) j- k5 u' A- o9 E
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。& O" v: s7 V; ?0 h+ h$ J* c! O+ y
- u0 T2 k7 D- X0 _2 v$ @
加载和预处理数据
4 y7 p( r! U/ ? q) S1 [$ ^首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- 8 \8 e5 _3 F\\" J& F1 p! Y0 w; Q
- \\" V1 h1 f: a$ ^: R\\" n
- from sklearn.model_selection import train_test_split
- 1 b m5 |9 q. w$ i: L
- * Q2 ?& @/ K) t
- from sklearn.preprocessing import StandardScaler- c% W- k/ l4 o: k
- & v3 G8 B2 V7 w2 ~6 g) ]& v
- from sklearn.linear_model import LinearRegression& l$ m, Z$ t0 q9 w( b
- 4 U k+ p) o; y& {
- from sklearn.metrics import mean_squared_error
- 5 B' u6 k) m1 W1 N6 {2 [7 u. E
- ! O* u; e( n l+ E: `, F2 Q# U/ U
-
- + u9 |7 C# P6 X) ?- b
- 6 b. {; h- H$ g' {6 E. c6 Y% A\\" y
- # 加载数据集4 r' o' W* _) \$ V% R# e
- 6 x2 t- M. B x0 m' N9 j& {- x
- housing = fetch_california_housing()/ C8 [2 z& M3 T+ N, l: z4 Z
- 1 l- K8 ]- e8 A& M. W8 A }$ H
- X, y = housing.data, housing.target6 J+ t5 C) u, M' E3 ]0 R! K
- 6 F2 \1 [; T) [2 t+ }
-
- - A3 ?& f6 ~2 f* p4 @
- # E% T# y$ f6 I9 _$ p' W4 k
- # 划分训练集和测试集
- * Q! s. q* n. H
- \\" k/ ~; @6 o\\" {; l* A* c
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- , \0 ]2 x& ]6 L' h1 p
- 7 h$ S6 }7 I7 [( L7 j
-
- 4 I7 h/ Y# A; q, N) O
- . u/ [3 y8 F# n) @
- # 数据预处理:标准化
- + M% U8 k/ n% W; M
- - b0 R8 p2 R+ W Z
- scaler = StandardScaler()
- 6 ^6 n6 C |( n; b
- 4 X. ^9 L9 N. z& ~9 _. N& G
- X_train_scaled = scaler.fit_transform(X_train)
- - P' j/ ~! f' \ i2 ^ u\\" |( E
- 0 |) T* \ G5 p; j
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型* M$ c y4 w8 M7 F: G
- model = LinearRegression()! y5 n+ ^# H8 u2 ?$ r( b
-
3 m: @2 s* x% d\" B' H - # 训练模型
7 ^; i7 B1 V/ E' W' C. Z4 ?6 X2 P - model.fit(X_train_scaled, y_train)
/ x2 K4 | G: v7 b9 z$ f - H9 }+ i+ O+ _4 ^+ q
- # 预测测试集
! I$ n# L- v, o3 v: ~: T2 n - y_pred = model.predict(X_test_scaled)8 _1 ~3 r\" ?9 F, B$ H; M& p( h
- + A0 N8 i+ W ~1 ]4 [
- # 评估模型
6 C8 W1 D; R8 P0 A - mse = mean_squared_error(y_test, y_pred)9 J3 w* H& A& C/ B6 Z/ P
- print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
" z% s3 V3 O0 s" `: q预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
% N0 r" }; K! s; p' W" n$ F特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression
, j( D3 V1 D7 B7 K - 5 w2 B+ p( I0 G7 a, L- G8 H9 t. x$ q# u
- # 特征选择
\" @+ Y2 T: s8 {9 G - selector = SelectKBest(score_func=f_regression, k=5)% d' Z* K6 [# l; L
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)0 j2 Z& z0 X- [; U1 z
- X_test_selected = selector.transform(X_test_scaled)
! L3 L2 H0 q0 q* k; z' I$ z -
! ^. G7 ~- Q+ A' E5 L - # 使用选择的特征重新训练模型
\" a+ ]& L% d- I, M8 K - model.fit(X_train_selected, y_train)/ u) R8 c4 v8 \6 Z
- y_pred_selected = model.predict(X_test_selected)
# ^, O# V B3 `- o( U -
2 h+ k3 a: z- p- g9 R - # 评估
\" Q, f7 _6 ?6 X9 G1 z! ^ - mse_selected = mean_squared_error(y_test, y_pred_selected)
0 w- I5 d# G$ K3 M0 d - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
. L) t7 b4 W. v8 q. Z, k* y# j3 g |
zan
|