机器学习算法笔记:线性回归-Linear regression
1. 什么是线性回归?解决什么问题?
线性回归属于机器学习 -->监督学习–>回归任务–>线性回归
监督学习的主要任务:回归与分类。
回归的任务就是解决预测问题,如:预测明天天气温度、预测股票走势等。
通过训练学习,能够根据历史数据预测未来的结果。
什么是线性回归:如果 2 个或者多个变量之间存在“线性关系”,那么我们就可以通过历史数据,摸清变量之间的“套路”,建立一个有效的模型,来预测未来的变量结果。
线性回归模型是利用线性函数对一个或多个自变量和因变量(y)之间关系进行拟合的模型。
一元线性回归的推导
2. 优缺点
优点:建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快。可以根据系数给出每个变量的理解和解释。
缺点:不能很好地拟合非线性数据。所以需要先判断变量之间是否是线性关系。
3. 意义
一方面,线性回归所能够模拟的关系其实远不止线性关系。线性回归中的“线性”指的是系数的线性,而通过对特征的非线性变换,以及广义线性模型的推广,输出和特征之间的函数关系可以是高度非线性的。另一方面,也是更为重要的一点,线性模型的易解释性使得它在物理学、经济学、商学等领域中占据了难以取代的地位。
4. 线性回归 VS 逻辑回归
1.线性回归只能用于回归问题,逻辑回归多用于分类问题。
2.线性回归要求因变量是连续性数值变量,而逻辑回归要求离散因变量
3.线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系
4.线性回归可以直观的表达自变量和因变量之间的关系,逻辑回归则无法表达变量之间的关系
代码示例
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
loaded_data = datasets.load_boston()
X_data = loaded_data.data
y_data = loaded_data.target
X_train,X_test,y_train,y_test = train_test_split(X_data,y_data,test_size = 0.3,random_state = 42)
model = LinearRegression()
model.fit(X_train,y_train)
y_hat = model.predict(X_test)
from sklearn.metrics import r2_score
r2_score(y_hat,y_test)
r2_score(y_test,y_hat)
r2 = model.score(X_test,y_test)
plt.plot(range(len(y_test)),sorted(y_test),c='k',label = 'real')
plt.plot(range(len(y_hat)),sorted(y_hat),c='r',label = 'predict')
plt.legend()
plt.show()
参考
https://blog.csdn.net/qq_44971458/article/details/107092324
https://easyai.tech/ai-definition/machine-learning/#ai-ml-dl
https://easyai.tech/ai-definition/linear-regression/#what