- 在线时间
- 468 小时
- 最后登录
- 2025-7-19
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7477 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2823
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1160
- 主题
- 1175
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
数据集:使用加利福尼亚房价数据集。1 p2 Q* |1 ~5 _6 }9 w
任务:构建一个模型预测加利福尼亚地区的房价。' x# ]' _ T \# i2 {, Y
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
5 ` ~3 g* `1 p线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
( q% f: E5 N* y- s& L- K/ n4 a2 q" I! X
加载和预处理数据; f" c4 G0 n: l9 t; \
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。 - from sklearn.datasets import fetch_california_housing$ a4 k9 p! Q2 ^
- , ^' U* p7 M' ]1 X! Z. d
- from sklearn.model_selection import train_test_split
- % T2 m0 f. S/ {' O4 ?1 k5 |- d j
- & a: G9 m- @3 E3 V/ ]$ }6 R/ _
- from sklearn.preprocessing import StandardScaler
- $ I' @! \& q1 [. x( {: K) x
- 6 h- W0 q\\" {4 D' ~6 K5 }& N
- from sklearn.linear_model import LinearRegression
- ) `% k. J/ Q( s, U. p3 G/ e6 `
- * @& G5 |( w9 U, h
- from sklearn.metrics import mean_squared_error
- % o+ \' K+ f# c! f8 M
- ( C% o. |: D( L+ u8 b
- ! d3 d1 J) h+ ~% j5 B: N
- : Z C' A& |1 M. g. h; ~& S
- # 加载数据集' x6 C8 ?0 L' v1 n4 v
- $ Q Y5 }. g2 q\\" I8 C
- housing = fetch_california_housing()
- - N6 S- B! l e h* K
- 5 T1 p% h5 m- [5 X
- X, y = housing.data, housing.target
- * T/ H( U# [: Z1 T P
- ) J: e/ W; E. W$ A `
-
- E. ]/ U& B7 ~( a3 V7 z
- \\" q: P! @3 ^7 Z$ }
- # 划分训练集和测试集, Y( S4 a3 f8 U6 N) Q: h A9 e
- & w; ~8 B! r, l, ?* Q- U
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# K' ~# t4 T6 [ i: ]\\" q+ s
- : Q& g& t0 H+ Q/ w& X5 G
-
- ' U% H2 ^1 k& V$ P( w# ?
- % {1 J1 M/ P4 e9 M
- # 数据预处理:标准化
- - D+ V5 ?+ ^, B4 a, s) D
- ! u0 x# m7 t2 D# Q! H5 v
- scaler = StandardScaler(), ?; J' T3 W5 i2 c* T Q! ~
- + n' _( h+ ]# F& l w' H7 I6 Q( j
- X_train_scaled = scaler.fit_transform(X_train)8 b# J+ ?, `6 m\\" g I9 r d
- ! a; t+ \) N. f8 C9 S3 H
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
6 C5 q/ a: J) y3 U& J/ Y7 h3 }7 P - model = LinearRegression()
# D: r# i$ q8 r# g1 R3 l Q) J - 9 M7 q+ W/ g5 B3 T$ `, ]! r
- # 训练模型$ \( f& D! i$ S0 O0 Y
- model.fit(X_train_scaled, y_train)\" V+ S. D9 ?, l. Z$ x& m
-
( x3 M0 _2 D8 i/ Q! [' ^ - # 预测测试集! S0 v& B8 C9 e$ }6 ?4 v
- y_pred = model.predict(X_test_scaled)
$ t2 S' N+ E& x6 ~4 ]) r -
& B9 `& `2 C7 H\" n1 D3 \. \ - # 评估模型' u7 s5 [8 D# W
- mse = mean_squared_error(y_test, y_pred)
. G) s9 l, E H) s# s - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
+ x3 K( }2 P/ E$ o& W8 Z预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。0 o4 ]/ a3 F1 g* l* \1 ]
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression
* t* e, K( t6 }. @, _0 Q - 9 f* e# F* Q7 Q7 Z6 ?
- # 特征选择
! M$ z5 `$ h* Y( \6 a7 \ - selector = SelectKBest(score_func=f_regression, k=5)' c1 H/ N9 k- @3 c5 w3 G
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)
9 ^/ E( {, Y% P- N$ W& q, M - X_test_selected = selector.transform(X_test_scaled)
; q# n! h5 F6 a7 e - 7 [2 j1 @1 C; t1 y# b\" O
- # 使用选择的特征重新训练模型
( e3 y0 z/ s5 ?; ?5 t - model.fit(X_train_selected, y_train)
& t1 e( u p7 a( v- g) t! R% F3 J - y_pred_selected = model.predict(X_test_selected)
, g, v8 H U2 J+ r& ]6 y' v. ~ -
w% G$ O& E0 Y\" y! G% X# ? - # 评估5 d+ x4 e5 D O& w/ X9 {\" h1 M
- mse_selected = mean_squared_error(y_test, y_pred_selected)
; g5 \- y\" a9 ]( i - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
- T1 M% `. w! n9 b% l |
zan
|