对数线性回归(波士顿房价预测)
导入模块
获取数据
在《代码-普通线性回归》的时候说到特征LSTAT和标记MEDV有最高的相关性,但是它们之间并不是线性关系,尝试多项式回归发现可以得到不错的结果,但是多项式可能会增加模型的复杂度容易导致过拟合的问题出现,是不是可以假设特征和标记之间可能符合对数线性回归呢?即$y$和$x$的关系为
$$
ln(y) = x
$$
下面将使用对数线性回归做尝试。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score %matplotlib inline font = FontProperties(fname='/Library/Fonts/Heiti.ttc')
在《代码-普通线性回归》的时候说到特征LSTAT和标记MEDV有最高的相关性,但是它们之间并不是线性关系,尝试多项式回归发现可以得到不错的结果,但是多项式可能会增加模型的复杂度容易导致过拟合的问题出现,是不是可以假设特征和标记之间可能符合对数线性回归呢?即$y$和$x$的关系为
$$
ln(y) = x
$$
下面将使用对数线性回归做尝试。
df = pd.read_csv('housing-data.txt', sep='\s+', header=0) X = df[['LSTAT']].values y = df['MEDV'].values # np.log()默认以$e$为底数 y_sqrt = np.log(y)