- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。
& _: p4 s! S3 v5 A7 f任务:构建一个模型预测加利福尼亚地区的房价。
- z/ W! V' `- L& a2 K+ t6 n* A挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
8 G6 B0 V# g( n7 w* w线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
0 u0 l, x9 r+ c# T L2 V
$ D/ Z! I# ?, f) t1 @加载和预处理数据
) I" [5 z1 | g: I首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing- @- ?2 R( h1 M% Z
- 7 @6 t- a/ i+ p
- from sklearn.model_selection import train_test_split
- H: Y# X! K2 a& a
- : e\\" C+ v8 P+ q( I
- from sklearn.preprocessing import StandardScaler
- - N' D/ ?\\" W7 m3 I
- 1 h4 _0 q9 q4 g) O- X9 o d Q* R/ U
- from sklearn.linear_model import LinearRegression
- % t) ^5 }: X0 F6 ?; W
- 9 z6 t$ Q4 U f
- from sklearn.metrics import mean_squared_error8 u! V- x* K$ N/ A& q
- 9 }. J( ]; k6 h) ? @
-
- h' v5 H0 c4 h, q2 B# [7 G* l
- 4 E& w: e$ U7 _6 @, u- h
- # 加载数据集
- / @/ D) N, d' F: ?7 A0 C/ [$ _3 n
- ( d% Z. p/ B; L/ z' G2 e
- housing = fetch_california_housing()
- + ?6 s% F. a7 e. ] P+ |. N$ Z
- 0 Y\\" g( L2 I- p- w0 k
- X, y = housing.data, housing.target
- * B$ X3 J1 I\\" e; Z2 L1 Y
- : m, Q1 T0 e/ M: A$ K
- 4 s+ I' g\\" c9 _, p& i/ X; S
- : F, g4 a* O% q! [% s4 d: O3 E
- # 划分训练集和测试集/ e) L9 U2 p( P6 v/ n/ e# l* |
- 6 Q: ?2 A/ l8 D3 w, l) s
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- ; ?1 G R( C2 T8 c: _
- 5 W8 Z) ?. D! w* N2 x1 R
- 7 t. |/ Y$ n3 O+ t: ?5 Y
- & y/ `6 B: Y/ j2 M, R# O
- # 数据预处理:标准化+ m# r1 n4 V/ l6 J, u5 h9 N9 t
- ; `- w+ h7 d1 W% L
- scaler = StandardScaler()
- 3 [ U* {+ O/ O9 c- N9 v7 E
- : w8 S, `( Q& ]% K\\" J, A) a
- X_train_scaled = scaler.fit_transform(X_train)
- ) m! p. Z\\" p8 x* v3 Q
- & M, ?9 k* Y* ^* e\\" p
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
7 k9 e5 A. U. M, a2 n - model = LinearRegression()* n. R) q4 g! n
-
! D6 p3 X' z. E! c0 J - # 训练模型
4 U! t7 ?0 i, v2 u' J; E+ Q8 V) ^/ @) O. q - model.fit(X_train_scaled, y_train): R1 W$ y2 C! Q0 @
- . U* z1 v\" h- B# u' C3 G' F* C
- # 预测测试集% d5 w8 t4 H, l8 O
- y_pred = model.predict(X_test_scaled)* H4 g: [6 A* e: @
-
3 K% ~6 S/ p5 x( g: o+ T - # 评估模型( J1 ^) |+ ~% n: G% r. @/ ~- r
- mse = mean_squared_error(y_test, y_pred)
* @$ I9 ^) ~, o% ]1 m\" V0 c2 d - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择' Y: C9 z# H8 p5 l+ o
预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。# U, K5 D9 s( V
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression' @* F# X/ v& W8 v5 m9 x
-
! `6 K9 T/ o& x6 k$ L1 M - # 特征选择1 ~5 F/ C8 f$ Q0 m) s( a! `\" l
- selector = SelectKBest(score_func=f_regression, k=5)
% X& S& `; N, S, L0 a8 t- G - X_train_selected = selector.fit_transform(X_train_scaled, y_train)
5 l, a4 E7 C\" g& X6 } - X_test_selected = selector.transform(X_test_scaled); T9 N7 @7 R, j3 ]( @+ R, D
- # J7 U2 d& u' D8 f0 F( S\" T+ f! m
- # 使用选择的特征重新训练模型$ r6 o\" `\" y' D# R\" M1 R
- model.fit(X_train_selected, y_train)\" ?4 x, k! @' D; u
- y_pred_selected = model.predict(X_test_selected). w/ R, W8 a9 C. T; A
- . y3 h* z7 y e# Q- H( t
- # 评估) v6 }: L2 {- e l- h
- mse_selected = mean_squared_error(y_test, y_pred_selected)! e\" D# E( _, U, E' A
- print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
$ D$ A: z4 M+ M0 E9 r" r/ ~1 I i |
zan
|