- 在线时间
- 347 小时
- 最后登录
- 2024-6-9
- 注册时间
- 2023-7-11
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 5898 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2188
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 836
- 主题
- 833
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
|
数据集:使用加利福尼亚房价数据集。
% a6 M# }/ o$ `: h: G任务:构建一个模型预测加利福尼亚地区的房价。
9 I) g. V7 p" E _' F/ _) d挑战:尝试不同的预处理方法(标准化、归一化等)和特征选择技术来改进模型性能。; w# j) W* T! z$ F+ l+ O) w. W
线性回归是一种预测数值型数据的经典统计方法,它假设目标值和特征之间存在线性关系。在房价预测任务中,我们可以使用线性回归模型来预测基于多个特征(如房屋大小、位置、年龄等)的房价。以下是使用加利福尼亚房价数据集进行房价预测的示例代码,以及如何应用不同的预处理方法和特征选择技术来改进模型性能。5 _: x$ w" Z/ a" W* I
v" x* H3 {" ^3 n# b
加载和预处理数据& N1 h8 B' l! }& z/ L8 U
首先,我们从scikit-learn中加载加利福尼亚房价数据集,并进行基本的数据预处理。- from sklearn.datasets import fetch_california_housing
- 4 d/ c% l# Q5 `/ }. N
- 5 y# A U. L4 s- @8 t- r* a
- from sklearn.model_selection import train_test_split
- $ l' F\\" {2 D5 m\\" G2 Q
- 7 q0 ]% j. s. F9 h/ H0 H7 I
- from sklearn.preprocessing import StandardScaler p' h0 B8 N7 M0 a1 ^ ^
- : x6 {( M; \; G% O
- from sklearn.linear_model import LinearRegression. Y4 ]: [9 {/ v% r) W9 ~
- ' r. E( B7 y D
- from sklearn.metrics import mean_squared_error
- 1 v& A$ M4 p3 Y3 R\\" m1 X
- 5 q' |$ z9 T2 c& ^/ M
- ; [+ ?\\" ]# [1 `; s
- , D! G: O! t' V/ w2 |0 [' z
- # 加载数据集: \- |- y7 W% k- F: o+ ~8 \2 ~
- ! ?3 D2 X, p3 F2 g- T
- housing = fetch_california_housing()
- ! v2 g/ e. S N$ J4 T
- ; o4 b5 k, s# z$ A
- X, y = housing.data, housing.target s* ]4 ]6 z4 G6 a
- + J& i/ M- i% x: {& A7 v
- 2 l! h, h; P/ c9 _$ X: \
- - v. d( d. i9 ?- S' X& H
- # 划分训练集和测试集
- : k4 g5 y. G7 T% {) K' c! N2 N) P
- % `5 m) l2 }+ p9 |5 L& N- c8 o+ _
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)) k# Y& n\\" Y$ t2 Y
- 3 W) X! y, J: ]8 ]3 L
- ! ~. C9 ]$ p: F. q& j6 {7 b
- 2 @$ j5 `* e/ E [( P5 N; U
- # 数据预处理:标准化1 |# a# P; h1 H @ _; O+ Z
- ) d3 B/ H4 f; G3 t
- scaler = StandardScaler()5 s/ ^/ v- V1 n- k/ k1 B
- # A& W. W L' d& J
- X_train_scaled = scaler.fit_transform(X_train)
- . B4 b- I0 Y& J3 |\\" h& e; {
- x. k& D% x8 h
- X_test_scaled = scaler.transform(X_test)
构建和训练线性回归模型- # 创建线性回归模型/ H. l0 N4 S8 b0 ^9 o- e q7 j! C( A
- model = LinearRegression()
) y* E\" l6 I2 M. o -
7 p' ]; P, o6 R- j! z9 l7 D. M - # 训练模型
4 z' p }* m( a2 f* F - model.fit(X_train_scaled, y_train), m! v- \3 y# f8 y' {/ k3 f
-
6 q\" C }; [5 G- u7 N) u - # 预测测试集1 E! @' r& c+ u. O; Q2 s
- y_pred = model.predict(X_test_scaled)) ?' y. ?/ X6 ~( F
- * h2 R' ^+ v% T( t: U U; u
- # 评估模型8 o! [# M! S+ Q j4 |$ x
- mse = mean_squared_error(y_test, y_pred)
# N& f9 G% @2 n0 i/ a3 o - print(f"Mean Squared Error: {mse}")
复制代码 挑战:尝试不同的预处理方法和特征选择
: n4 u1 Z# J! _6 J# P, a" I7 [预处理方法:除了标准化,你还可以尝试归一化(MinMaxScaler)、对数转换等方法,看看它们如何影响模型的性能。
$ v8 w) Y+ o8 o" R) O: g3 {' I特征选择:可以使用不同的特征选择方法(如SelectKBest, SelectFromModel)来选择最有影响力的特征,这有助于模型专注于最重要的信息,提高预测准确性。- from sklearn.feature_selection import SelectKBest, f_regression0 Q* G5 K% L9 w( x; l\" n8 x
-
0 ]& u) x% w$ J - # 特征选择$ W# u. d# T1 h% {4 h
- selector = SelectKBest(score_func=f_regression, k=5)8 k+ P, S% h. [8 e- U
- X_train_selected = selector.fit_transform(X_train_scaled, y_train)
: d V0 }* H0 M- T - X_test_selected = selector.transform(X_test_scaled); y2 U. X7 k5 q# d+ O+ n! X
- / U I; e1 G$ q7 G+ M8 x\" H: a# C1 ~
- # 使用选择的特征重新训练模型
) T\" T0 X E' [. T+ a% {; j - model.fit(X_train_selected, y_train)
/ {; b3 l7 Q3 G! ]% Q6 K2 { - y_pred_selected = model.predict(X_test_selected)3 S: v8 f7 b. e9 v
-
?6 \& p: L8 M: B3 J0 w; R4 Y. a% A - # 评估
% ?\" o8 R$ U& ?0 ? - mse_selected = mean_squared_error(y_test, y_pred_selected) `$ E y- \) d\" s\" Z4 R7 b
- print(f"Mean Squared Error with selected features: {mse_selected}")
复制代码
7 l4 x4 v) k$ G3 A0 ^9 r |
zan
|