- 在线时间
- 478 小时
- 最后登录
- 2026-4-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7788 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2922
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。- y; @& H1 H; m
任务:构建一个模型预测加利福尼亚地区的房价。1 k" d+ h- j5 ^5 [$ `* A% b$ e
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。# R. X$ U( U. q4 ]3 k* _# X
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。1 ~9 Q2 n: g2 X; e5 ?% I
8 e) u% q5 h5 o; I
加载和预处理数据
6 G6 y; G* j9 o$ A3 b" K首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing7 R* M: k: |\\" F5 n9 ?( H\\" O0 H' [
- 3 f3 `% g\\" T! b6 d+ Z
- from sklearn.model_selection import train_test_split
- + T\\" I% B/ w z; I\\" u4 X( _3 M
- 8 w$ e) j) @/ w) D( N# \% p6 R
- from sklearn.preprocessing import StandardScaler! q% ~* ?- e# q' H2 D0 F
- 6 g\\" t _. E# S7 h. w' N8 j/ k
- from sklearn.linear_model import LinearRegression& ^8 @/ o0 p/ r0 ^. l
- 8 e$ [8 H+ @+ [3 {0 c; z
- from sklearn.metrics import mean_squared_error
- / y& r9 a0 `/ s, Q
- 4 F. o7 @4 r) B7 K4 i
-
- 7 H! L+ }. h+ B& q
- 2 i4 W0 V$ R* M c+ n
- # 加载数据集
- 8 T0 X' ~* V% I: K! N
- ( r\\" r& t$ i* n( [4 h2 M
- housing = fetch_california_housing()4 B7 t, t% {$ H7 v
- $ t! X, s0 I7 F! W\\" S& N
- X, y = housing.data, housing.target% t9 {* n# }$ S N+ ?
- ) `! q' N( v5 H7 ~+ j Y
- 1 _+ Q0 B6 q, Y# C4 P9 Y' w
- : Y% ?1 ]/ a0 R5 U3 R# v O
- # 划分训练集和测试集. L4 Q3 U8 `# S2 t @\\" a
- ; ~6 @7 K4 F# ]: D3 |$ H
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 8 ?\\" N) |\\" ?2 W6 l: _
- , J7 e& q+ I* M2 {5 O
- 2 T, k8 g9 o7 `\\" n: U
- 8 m8 l9 l n! D9 O+ Q
- # 数据预处理:标准化+ V. h. f3 b) }4 H8 s# J
- - O f8 N* }* z) k
- scaler = StandardScaler()
- ) a( x2 {/ m1 P& F
- 3 A5 P! c0 ? j! C9 G$ o2 ?# F
- X_train_scaled = scaler.fit_transform(X_train)4 j' b+ x& e# i4 G
- % X5 b$ R: d; B) v' m( n+ }
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型5 P\" d' u5 r' t. S2 G Z- {
- model = LinearRegression()* n( J% X, {; s$ N3 {8 l
-
+ H- q# l0 Y8 b% f* u0 h9 Y+ {8 X - # 训练模型
1 B% N0 Z# s/ c7 C8 V) q - model.fit(X_train_scaled, y_train)
7 r9 V7 @6 @6 t -
! p8 d' {# K' k, O0 E - # 预测测试集
( t, {+ C# e\" R8 @' }\" D% I - y_pred = model.predict(X_test_scaled)' Q9 A1 w. t8 I m- ~5 i; F2 G& z
-
$ l, _ a8 x& e2 m\" N) T - # 评估模型7 e7 r' O! B8 ~
- mse = mean_squared_error(y_test, y_pred)8 q) ~, G; G* l; z2 P+ }7 f
- print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
: Y5 U. P! s1 ^6 J3 L+ H( |% [预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
" P( J' k, U3 k: K特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression5 W' e6 v% V' b3 `
-
/ ~ ]8 T6 M2 B7 m) m4 m - # 特征选择 d6 ~ _/ T\" e/ s3 D, D* m
- selector = SelectKBest(score_func=f_regression, k=5)4 q1 [+ V2 y n* `
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)
: S) a Q- e2 ?0 n0 y- f; @ - X_test_selected = selector.transform(X_test_scaled)
6 ^, C: U; H9 N\" W5 ^ l -
; j) k4 S\" H1 J# J - # 使用选择的特征重新训练模型
) o) {\" `# l1 ? I - model.fit(X_train_selected, y_train). _2 W% {) ^3 ]- \7 }% [) R- L9 p
- y_pred_selected = model.predict(X_test_selected)
5 |/ [\" S) R$ U' k -
6 r- k! V8 ~3 _9 Z& y) E3 T/ Y9 y - # 评估. A/ T& l: s, d5 q2 Y
- mse_selected = mean_squared_error(y_test, y_pred_selected)
* s+ H& ]5 M4 k& e! e% [3 C( z - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
( A+ c0 D% L2 m' w/ [8 i" g |
zan
|