- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。5 Y& U2 V `- O( C3 m
任务:构建一个模型预测加利福尼亚地区的房价。. {4 f' K4 T) }) c& {8 Q
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。' u( k4 W, E* f; y1 z/ O* e
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
$ M# D5 W+ T ]; e0 i& y& _+ C" v4 z
* h2 U, ^# R. K5 M- p加载和预处理数据# c/ |6 J4 ]* P* R! `
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing
- / U/ q& }/ Z' E7 z9 c
- ) w8 Y2 O\\" p% ~2 _1 `
- from sklearn.model_selection import train_test_split
- & y3 U3 {$ C t2 a2 O* F
- - V7 C5 n. W8 Q, y
- from sklearn.preprocessing import StandardScaler
- ; x6 J) G! y& t5 N& E/ V& \
- 9 J! i2 B- P6 k3 P' h% z
- from sklearn.linear_model import LinearRegression/ Q4 d* E6 H6 o& i, a% n
- & ]: A- l5 {% t5 y, @& ?7 T\\" V( O
- from sklearn.metrics import mean_squared_error
- * Y5 u9 B* ?( ^; T
- , j4 ^6 r9 {! M0 Q: M
-
- ' A& k. p9 e* w% T1 G
- + m! C7 D/ U( |: W* B
- # 加载数据集
- 6 T0 r( e. F6 L1 V
- ) I. \ T/ b0 n0 ^* y
- housing = fetch_california_housing(); r3 [5 @3 W9 C* f& H- b3 c& w
- 9 h) {' [. ?5 C# C) I$ n
- X, y = housing.data, housing.target
- 0 K& m! Q4 c9 [; g; i
- 1 d2 g, r) N7 g# }4 f6 b
- * d\\" x3 g; }. F
- \\" _! z& r! u4 B
- # 划分训练集和测试集
- 7 Y* p& r! e5 y+ A) m
- * |/ j- u$ V( y7 D* D) S# w. R) n/ r! Z
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)& k5 T8 G4 b1 x% s. D
- ; L: c' ?! i' n
- k\\" i. z- g; R8 B* R# S
- 1 a4 \- f! ~8 ?* J
- # 数据预处理:标准化
- 4 |3 P$ E1 ]9 E2 P6 N+ Q2 z
- 1 @ G$ Z$ C- ~3 M3 D/ b I
- scaler = StandardScaler()7 |7 m& u; [3 z% R+ [
- 7 v: m# l: Q3 J\\" ~' @7 m
- X_train_scaled = scaler.fit_transform(X_train)
- 0 B q, V9 U5 I! Z+ T
- * C! B1 d% u. |, u
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
1 H\" O8 W. D3 n! C - model = LinearRegression()& Y, x1 X. i1 b4 _: c
- 3 y. u6 F! N% c9 M
- # 训练模型
4 b, u\" G N- J# K - model.fit(X_train_scaled, y_train)
6 }2 j+ }, q, B; } -
3 Z0 ]- ^+ n( _6 s9 J; q - # 预测测试集: f. s h7 u* f1 [6 S
- y_pred = model.predict(X_test_scaled)
0 a, _! X1 X' P b i: A n\" T -
* s! F; `- V% ?) t! y6 ~ - # 评估模型1 Q7 P* Y& I8 O0 o% t5 U$ ~
- mse = mean_squared_error(y_test, y_pred)
8 [; Q, x# a3 d3 W2 M6 a' ` - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
0 h7 Z6 U' W, v预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
! s7 }8 P3 r( b. {- B5 \- u( P特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression3 f' E7 k/ `) K3 Y3 |: @
-
6 k) X! k% ]5 `$ w# i) Q - # 特征选择; d* }5 `& O6 z) z3 j6 z
- selector = SelectKBest(score_func=f_regression, k=5)
% s: c9 O9 M/ V1 T& y% L7 p - X_train_selected = selector.fit_transform(X_train_scaled, y_train)9 A7 `- X& U: N- [
- X_test_selected = selector.transform(X_test_scaled)8 g9 s/ `+ D7 ]! u8 |
- + D+ [0 J) J0 c' u& {. C
- # 使用选择的特征重新训练模型
# D) @& Z- z3 _) ]) R - model.fit(X_train_selected, y_train)2 |+ q. j1 y( P7 K
- y_pred_selected = model.predict(X_test_selected)7 \5 h+ r6 q, x2 g. o
-
% Q- G$ T! i: p - # 评估! s3 |* m: ~! x, s) Q; C
- mse_selected = mean_squared_error(y_test, y_pred_selected)
4 o9 P! e5 b0 P* u! A; E - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
9 ~% b, R6 Q' r5 C5 A- j |
zan
|