python机器学习之我见:线性回归(Linear Regression)

要理解线性回归,首先得对线性和回归的基本概念进行回顾。
线性:两个变量之间存在一次方函数关系即一阶导数为常数的函数。
回归:确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析。
分类与回归的区别:
分类:输出为离散数据;目的:寻找决策边界;评价标准:精度(accurency)
回归:输出为连续数据;目的:寻找最优拟合;评价标准:MSE
一、线性回归算法的基本流程
研究机器学习问题的一般方法为:

  • 获取数据集Data;
  • 构造假设函数hypothesis;
  • 建立损失函数loss;

为了实现上述过程,通常采用最小二乘法和梯度下降法来求解损失函数,使得loss值最小,以得到最大准确率(accurency)。
1、最小二乘法
2、梯度下降法
这里对上述两种方法的求解过程暂且略去不表。
二、sklearn中的线性回归函数调用
1、scikit-learn的线性回归算法使用的是最小二乘法来实现的。LinearRegression将方程分为两个部分存放,coef_存放回归系数,intercept_则存放截距,因此要查看方程,就是查看这两个变量的取值。代码段如下:

'''
#from sklearn.linear_model import LinearRegression
'''
from sklearn import linear_model
linreg = linear_model.LinearRegression()
linreg = linear_model.Lasso() #L1  Lasso回归
linreg = linear_model.Ridge() #L2  Ridge()回归
linreg.fit(X_train, y_train)
print linreg.intercept_
print linreg.coef_

2、模型评价
  我们需要评估我们的模型的好坏程度,对于线性回归来说,我们一般用均方差(Mean Squared Error, MSE)或者均方根差(Root Mean Squared Error, RMSE)在测试集上的表现来评价模型的好坏。代码段如下:

y_pred = linreg.predict(X_test)
from sklearn import metrics
# 用scikit-learn计算MSE
print "MSE:",metrics.mean_squared_error(y_test, y_pred)
# 用scikit-learn计算RMSE
print "RMSE:",np.sqrt(metrics.mean_squared_error(y_test, y_pred))

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/80464233
今日推荐