线性回归中的非线性变换

本文探讨了在线性回归模型中如何通过非线性变换将非线性关系转化为线性关系,以提高模型效果。通过分析波士顿房价数据集,展示了对LSTAT特征进行log变换后,F值增大,关系变得更线性。同时,文章还讨论了变量交互作用对模型的影响,并介绍了多项式回归来添加二次项和交互变量,以减少均方误差。最后强调,特征数量并非越多越好,需要根据观测点数量适当选择。
摘要由CSDN通过智能技术生成

非线性变换

在线性回归模型中,会发现有些变量与预测变量不是线性关系,所以需要非线性变换,把非线性关系转换为线性关系。

一、单变量做变换

载入boston房价数据
from sklearn.datasets import load_boston
from random import shuffle
boston = load_boston()
#seed(0) # Creates a replicable shuffling
#new_index = range(boston.data.shape[0])
#shuffle(new_index) # shuffling the index
#X, y = boston.data[new_index], boston.target[new_index]
X, y = boston.data, boston.target
print (X.shape, y.shape, boston.feature_names)


#散点图判断变量与目标之间的关系
import pandas as pd
df = pd.DataFrame(X,columns=boston.feature_names)
df['target'] = y
scatter = df.plot(kind='scatter', x='LSTAT', y='target', c='r')

从图中可以看出,LSTA可尝试log变换

import numpy as np
from sklearn.feature_selection.univariate_selection import f_regression
a=df['LSTAT'].values
y=boston.target
a=a.reshape(-1,1)

#注意:f_regression中的X参数和Y参数都必须是narray格式,且X必须是矩阵模式。
'''print(type(a))
print(type(y))
print(np.shape(a))
print(np.shape(y))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值