1.线性回归
(1)参考:https://www.cnblogs.com/hhh5460/p/5786115.html
使用linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
方法:
fit(X, y[, sample_weight])拟合线性模型。
get_params([deep])//获取此估计器的参数。
predict(X)/线性模型预测
score(X, y[, sample_weight])///返回预测的系数
set_params
(**params)///设置这个估计器的参数
二维:(x,y)
# 建立线性回归模型 regr = linear_model.LinearRegression()
# 拟合 regr.fit(df['square_feet'].reshape(-1, 1), df['price']) # 注意此处.reshape(-1, 1),因为X是一维的!
# 不难得到直线的斜率、截距 a, b = regr.coef_, regr.intercept_
# 给出待预测面积 area = 238.5
# 方式1:根据直线方程计算的价格 print(a * area + b)
# 方式2:根据predict方法预测的价格 print(regr.predict(area))
三维:(x,y,z)
# 建立线性回归模型 regr = linear_model.LinearRegression()
# 拟合 regr.fit(X, Z)
# 不难得到平面的系数、截距 a, b = regr.coef_, regr.intercept_
# 给出待预测的一个特征 x = np.array([[5.8, 78.3]])
# 方式1:根据线性方程计算待预测的特征x对应的值z(注意:np.sum) print(np.sum(a * x) + b)
# 方式2:根据predict方法预测的值z print(regr.predict(x))
(2)参考:http://www.dataguru.cn/thread-183366-1-1.html
使用stats.linregress()
因为它仅被用来优化计算两组测量数据的最小二乘回归,所以其灵活性相当受限。因此,不能使用它进行广义线性模型和多元回归拟合。但是,由于其特殊性,它是简单线性回归中最快速的方法之一。除了拟合的系数和截距项之外,它还返回基本统计量,如R2系数和标准差。
from scipy import stats
slope, intercept, r_value, p_value, slope_std_error = stats.linregress(x, y)
predict_y = intercept + slope * x
pred_error = y - predict_y
degrees_of_freedom = len(x) - 2
residual_std_error = np.sqrt(np.sum(pred_error**2) / degrees_of_freedom)
(3)参考:https://blog.csdn.net/kancy110/article/details/73864804
使用numpy.linalg.lstsq(a, b, rcond=-1)
通过矩阵分解计算线性方程组的最小二乘解的基本方法。来自numpy包的简便线性代数模块。在该方法中,通过计算欧几里德2-范数||b-ax||2最小化的向量x来求解等式ax = b。该方程可能有无数解、唯一解或无解。如果a是方阵且满秩,则x(四舍五入)是方程的“精确”解。可以使用这个方法做一元或多元线性回归来得到计算的系数和残差。一个小诀窍是,在调用函数之前必须在x数据后加一列1来计算截距项。这被证明是更快速地解决线性回归问题的方法之一。
from numpy.linalg import lstsq
np.linalg.lstsq(X1, y1)
返回元组,元组中四个元素,第一元素表示所求的最小二乘解,第二个元素表示残差总和,第三个元素表示X1矩阵秩,第四个元素表示X1的奇异值。
2.X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size, random_state)
X_train,y_train:得到的训练数据。
X_test, y_test:得到的测试数据。
X,Y:原始数据
random_state:
Pseudo-random number generator state used for random sampling用于随机抽样的伪随机数发生器状态
test_size:
将原始数据打乱得到新顺序的训练数据和测试数据,测试数据的规格为原始数据的test_size(百分之几)
3.参考:https://blog.csdn.net/grape875499765/article/details/78631435
R^2系数
那么R^2就越接近0,所以估计的越准确就越接近1。
4.参考:http://www.lizenghai.com/archives/524.html
逐步回归(stepwise regression)