- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。2 S% d, I! J+ h) a
任务:构建一个模型预测加利福尼亚地区的房价。* n/ i2 g+ D9 x! y
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。, I, }- Q: w9 Q& m) E
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
" S0 m a( ]) o& {* n% \, a1 u" M9 S5 x$ P& g
加载和预处理数据
! T, L$ y' \) ~首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- % x0 H* j- p7 M& r! y
- & ]; Z6 S+ E! `
- from sklearn.model_selection import train_test_split; X1 y6 ?( r. n# M; K$ R4 \( B
- $ K1 V0 L\\" g! x' E, x- a
- from sklearn.preprocessing import StandardScaler. `0 J) p. _! S; l6 s' x
- 6 e( ?. m5 H# x2 x
- from sklearn.linear_model import LinearRegression
- ) [! ]9 A$ `: p3 f! E1 d8 z' ~( j5 E
- # \+ n4 y6 Q, H$ W- ]
- from sklearn.metrics import mean_squared_error
- % r, E\\" K; Q9 C% j S. I. o
- : e! U! m0 H; V; D
- : [4 K1 u- Y% s
- 5 ^) V/ a- O4 f x4 S. a7 g
- # 加载数据集) `4 B) Q: c8 a. D0 b( N
- 2 O\\" C& Y+ k! F; b, d5 U9 n
- housing = fetch_california_housing()6 p# E8 g9 Z- ]$ x: T
- 5 l+ [4 ~8 j' V3 w2 s2 p
- X, y = housing.data, housing.target
- : o# h, y5 \( W Q
- 0 m- _) n- r8 g( P
-
- * ]4 }( t7 c4 j( W5 H9 @
- % t4 N2 p% A# z9 C# ]+ f. l! C% N
- # 划分训练集和测试集# q8 x5 |; Q& W$ @
- # k$ Y& G7 j$ J( N% J5 W
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42). |$ q# X1 w# m9 K3 e$ p+ {6 P
- . E' B& j& g* t7 O1 e5 L# `
-
- 5 D\\" ?( w3 G- }4 z' r+ I
- X$ I3 d; ^$ Y* W& o) ?9 N
- # 数据预处理:标准化$ z4 @0 Z( N: q2 a
- . A# f( ^8 V) p; c5 I& R
- scaler = StandardScaler()$ N2 H* S$ _' g/ A$ P! ~. ^
- 2 g2 a. Q3 ]0 x( u0 d$ |+ @
- X_train_scaled = scaler.fit_transform(X_train)# m. f8 y1 \3 x, Y e1 u
- 1 u- w% r: I' j\\" u, C; X# V
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
5 {: ?; u: R3 [1 i, g' w( W - model = LinearRegression()
5 F: P. P7 A6 F6 X6 F - * }8 G$ ~' _3 c\" A
- # 训练模型
4 F# T\" H% Q2 ~3 A( K - model.fit(X_train_scaled, y_train)$ l& E7 {9 {' p$ l: {# U; g
-
/ V2 G B; A2 g8 v$ g# k7 C - # 预测测试集6 F$ @1 J% t4 u; X8 R
- y_pred = model.predict(X_test_scaled)6 i6 g% Y& t8 v9 d0 F
-
, Z8 z' x2 Y$ _' O7 Q+ _( V: @ - # 评估模型
8 M5 d ]8 R% b9 {& {% l; ` - mse = mean_squared_error(y_test, y_pred)) y\" w7 U( |9 N9 B h
- print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择! u# w. |( x. _
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。" g' W4 ?" U* T* V
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression( S\" l L% L, ~8 r+ B J\" D
-
: F9 R0 i; e\" ^; C5 p- |\" X9 m - # 特征选择1 L8 _+ q1 J7 c9 |$ s
- selector = SelectKBest(score_func=f_regression, k=5)
2 v* E7 B3 V) X9 u* e/ r) Y* I9 }) T7 L7 } - X_train_selected = selector.fit_transform(X_train_scaled, y_train)
$ @0 I8 _4 R8 _% [ - X_test_selected = selector.transform(X_test_scaled)
/ a6 z/ s7 o: E -
6 [\" E- S& E) O+ j* {! f2 o2 R - # 使用选择的特征重新训练模型
p. ` l4 Q1 e! l1 i# Q$ M% k; Y - model.fit(X_train_selected, y_train)
: d+ K0 j0 M6 l* G% N o3 x- K - y_pred_selected = model.predict(X_test_selected)
% {\" i0 T$ `\" O8 n8 W% K7 @( q. J - ( K\" ]4 s3 \. @6 A
- # 评估
. p9 ]: g\" f/ g# f( l+ }. Y+ n9 v - mse_selected = mean_squared_error(y_test, y_pred_selected)
. G2 |\" q8 B/ J# W6 E\" U% Z - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码 $ B% i2 M1 J* y) j) a8 Q
|
zan
|