- 在线时间
- 329 小时
- 最后登录
- 2024-5-16
- 注册时间
- 2023-7-11
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 5270 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 1984
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 805
- 主题
- 803
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
|
数据集:使用加利福尼亚房价数据集。- Y8 }: P( b8 E" J( O, `4 [9 c7 w
任务:构建一个模型预测加利福尼亚地区的房价。! m7 m m9 `* \& j
挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。
! g9 G, V/ C) g- \" Y线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。
# u! @- V7 w& ^) ]6 k/ K9 t z8 Q' g! y7 l* W) Q$ I: }
加载和预处理数据
5 A3 H2 g/ Y% W首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。- from sklearn.datasets import fetch_california_housing9 k- A3 Z) e+ ?7 d
- R J }+ [' Q+ d6 e% w
- from sklearn.model_selection import train_test_split
- . t1 k7 y: y' x: d D
- 4 f- E0 R3 N) ?! K* M/ R\\" H6 Q
- from sklearn.preprocessing import StandardScaler
- + Q7 B8 o, @$ S
- - q6 Q/ F; I/ S% G3 X
- from sklearn.linear_model import LinearRegression7 N: Z3 Q! Q, g: i% X4 ]
- ! g3 U0 \/ }' @) _, H3 b9 E( o- f& |. K
- from sklearn.metrics import mean_squared_error
- & E4 g6 ^3 C; R) b- q
- $ u8 @4 R2 l$ @5 ]$ j& _0 L% [; C
-
- ; U% f! {' p- t3 {, T! x; F
- % l4 ]5 X: R\\" A\\" s$ N3 @
- # 加载数据集% S) R. J! q2 x% ]
- 3 `7 ^- F$ p1 _4 m& _
- housing = fetch_california_housing()
- & n0 i* g8 X7 B8 W/ \0 B' |( a5 d
- 3 r$ C' h4 o. b. O9 w
- X, y = housing.data, housing.target\\" O! _\\" Z; Q. e B! ~
- + g! u, i3 o- m7 [% U
- . c0 R3 o# f' E( }! P3 w; b- n$ {3 b
- 5 ^( I& d4 @7 v3 F2 t, h2 l
- # 划分训练集和测试集: O! m4 J+ x' C8 ]* X; v$ T8 l @ ?
- ; j( \1 @( h; Y: U9 l/ V; k
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 3 H/ R1 ^# Y8 x- B/ g
- / f6 n* L& d% ?- g' P
-
- ]. D. U0 ^) m\\" A8 E) P& y
- ! S0 U o, U\\" G* E; w4 F
- # 数据预处理:标准化: X1 _, ?4 w- ~; h5 f. c; _% Y
- * |: r+ _' D5 p' [
- scaler = StandardScaler()) C+ r* k- o, @# r
- 9 O# f6 C+ G6 m4 J+ f7 b
- X_train_scaled = scaler.fit_transform(X_train)
- T( R& b) A3 L- ^
- - x) c# ]4 N, t6 ^9 o d\\" v
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型
4 b' p/ C- [: a* Z4 f - model = LinearRegression()
0 K: N' t& b+ O% Z0 h! H - ) G2 P- i) k5 C+ |$ Q8 t- S9 A- U
- # 训练模型\" ~( N5 F5 @4 m( R7 p% I
- model.fit(X_train_scaled, y_train)+ |& S9 s- r8 w; x0 q _
- 2 w4 d4 Z1 o k1 I, s9 q; ^- v
- # 预测测试集) h J; X2 k7 c
- y_pred = model.predict(X_test_scaled)
( x' o0 H+ e: P& a% k - # W9 x$ T% ~0 n9 F0 j
- # 评估模型
, b# M# Z; [' b8 Y/ x) ?0 m - mse = mean_squared_error(y_test, y_pred)
% E2 I* n5 @\" c' |# w- H - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
2 Q C9 L( l& P- F' x: `% m8 k预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。; T8 S" Q, v0 o9 Y/ V; p) s
特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression
6 i9 z, Q9 Y: b4 V! [5 a6 c5 [ - 9 ^, V# E( w7 U6 {: m
- # 特征选择3 V! `\" `( S' a4 \5 G( j6 U
- selector = SelectKBest(score_func=f_regression, k=5)9 ]# X7 \; X\" R7 x/ {8 \
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)( }7 l: E- P6 o6 r
- X_test_selected = selector.transform(X_test_scaled)
. ` ?% u- Q- x; @% A% s2 I - $ n( d2 O% O/ A
- # 使用选择的特征重新训练模型! k8 U9 D2 t- F. N' {6 M
- model.fit(X_train_selected, y_train)
]6 j9 Q6 i5 q - y_pred_selected = model.predict(X_test_selected). t$ M( p8 ]/ f2 P% w& `! \# ]0 I r
-
8 G1 i; f( e6 [: P& A, h, e - # 评估3 K# z4 x8 ?* U+ V6 o
- mse_selected = mean_squared_error(y_test, y_pred_selected)
1 U' ]3 I5 h\" i/ i\" P - print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码 , i9 D6 F$ @ Q* n
|
zan
|