- 在线时间
- 479 小时
- 最后登录
- 2026-4-13
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7789 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2922
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。- r) K- r; l, q
任务:构建一个模型预测加利福尼亚地区的房价。
8 ]$ G4 t; F# a$ S2 \: n5 h- p挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。3 I8 p7 J. w* o% c! K' c2 @( X& }/ x
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。6 A& v w4 \+ i; a* E
# S: f; @' f& @加载和预处理数据
1 V- S+ K* g: W& L1 W4 }6 t _首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- 0 d+ G4 I& }4 U0 j$ B3 N' |$ |5 p
- 7 [5 c( b1 V% P\\" W( }$ _
- from sklearn.model_selection import train_test_split
- * }# Q8 D; y$ v' W
- + q6 K; Q$ R* a
- from sklearn.preprocessing import StandardScaler& G0 h7 Y% c- M8 V: Y
- / @* e6 F: _# \1 N& I5 K
- from sklearn.linear_model import LinearRegression
- ' ^8 t5 F3 t, X! K/ X. [4 }
- 5 Z% |% x: h+ b0 l# i, U: q
- from sklearn.metrics import mean_squared_error1 _, j6 `- A; h( ?/ l
- 1 L$ h- k D. B5 S# f; q1 s: U) P
- ' `4 s. o- r ?+ ]8 Y6 g' K
- : \7 m6 s/ Y6 j2 P& T W
- # 加载数据集
- , M! A: D/ h4 n- f
- 1 r: c! W) W8 m% e. q
- housing = fetch_california_housing()0 I1 G3 ?$ |- |0 ?
- 9 }# h. a, c C: A0 h
- X, y = housing.data, housing.target
- 4 R9 s1 t4 \' c- _3 U
- 5 t) L0 }& g; Y; ^3 B1 M; c
-
- . f2 [* C W6 F+ P+ [6 r
- 5 l& O9 @& X0 T4 s
- # 划分训练集和测试集\\" m$ f& l$ M* D9 R
- - h& t* C+ \6 y% {
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)* E! K0 ?; t. y* Q1 f/ j, V
- . U8 R4 n0 J$ n
- \\" d7 w2 Z% }% ]2 V, I
- ; P6 }- f8 A4 t2 v* K# t- c6 P
- # 数据预处理:标准化
- ' L6 S8 ]3 z% `) n
- ' a- n0 X* {4 ^3 e
- scaler = StandardScaler()
- ' r8 T1 j1 _. I7 M, J. q) W
- 0 {5 W% H; c! {, Y
- X_train_scaled = scaler.fit_transform(X_train)
- 5 q7 p, X8 v% `: q1 n3 Q& _8 H
- 3 n, H/ E3 N+ u% [' j' O
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型6 l# Q, ~( y* A; m
- model = LinearRegression()
4 C9 i: o: {; ?- c2 V' K) ^& [ -
3 u& U6 \) U* U1 m - # 训练模型1 Y; J. P+ x) r9 P: r- d
- model.fit(X_train_scaled, y_train)
/ `& e, _ k6 Q/ W1 e/ P: l+ v - \) O+ f+ S1 B( h4 O
- # 预测测试集
/ y! D, u2 a, P& i - y_pred = model.predict(X_test_scaled)
\" R. S8 k( G9 @5 A( N6 a: ^ - 6 Y, Y% K. b m8 n$ d; }; G
- # 评估模型* ?* `9 s2 x6 |- q/ ~! l& o! P
- mse = mean_squared_error(y_test, y_pred)6 _+ i6 X A8 Z: Z# j: @$ I3 n5 R# |; N
- print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择( `4 H! i1 l9 z8 F1 M( I0 \
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
5 o/ k7 U1 v7 S特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression( F# Y! m$ V\" o- D h
- # Z# ^$ y! b, I, O\" @
- # 特征选择
8 N+ L, G5 f' T: J6 a - selector = SelectKBest(score_func=f_regression, k=5)
. {1 x8 c: p0 M* \& R5 d) N) p5 |; R - X_train_selected = selector.fit_transform(X_train_scaled, y_train)
, {7 \+ h# R( U% C7 |- s - X_test_selected = selector.transform(X_test_scaled)
% j- Z) d- l# i% b - ! b4 E\" Z$ ]7 S, v
- # 使用选择的特征重新训练模型
, j* o! k* W) Z, B! T7 O - model.fit(X_train_selected, y_train)' |* E: W- A1 m; J/ h7 H: g% w9 i! s
- y_pred_selected = model.predict(X_test_selected), m* r5 t* ^) n4 _, `! u
- 5 X4 R1 E0 N\" i! f# |: E
- # 评估* c* H$ i. \4 c/ U7 d/ p& ?
- mse_selected = mean_squared_error(y_test, y_pred_selected)
8 H4 `) s. H7 z( U - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
9 U4 }6 A( h; y |
zan
|