线性回归算法

2020-02-18 16:45:57 浏览数 (1)

以下文章来源于数据思践 ,作者王路情

导读

阅读完本文,你可以知道:

1 线性回归是什么以及有什么用

2 基于Python和库执行线性回归算法

1

概述

1 什么是回归?

回归是研究变量之间的关系。

举例说明:

1)研究员工工资与教育、经验、职位、所在城市的关系;

2)研究城市房价与所在区域、面积、卧室个数、交通便利度的关系;

3)研究30-39岁的女性群体的平均体重和平均身高的关系。

等等

回归的目标是寻找一个函数能够把某些特征或者变量映射到其它特征或者变量。

回归的术语

1)依赖的特征是因变量,又叫做输出变量、响应变量

2)独立的特征是自变量,又叫做输入变量、预测变量

回归中的因变量是连续性的,而自变量可以是连续的,也可以是离散的。

2 什么场景用回归?

如果问题是研究和解决某一变量是否影响或者怎么影响其它变量,又或者是研究变量之间的关系以及关系的程度,这样的场景,我们可以使用回归的思维和方法。

回归用于许多领域,包括经济、计算机科学、社会科学等。

3 什么是线性回归(Linear Regression)?

  • 线性回归是最重要和最广泛应用的回归技术之一。
  • 它是最简单的回归方法。
  • 它易于理解模型和解释结果。

4 线性回归的问题定义?

5 线性回归的性能分析?

2

线性回归的原理

线性回归的原理就是拟合一条直线或者一个超平面,使得实际值与预测值的平方最小。

3

基于Python和库执行线性回归算法

1 问题定义:

研究美国30-39岁的女性平均体重和平均身高的关系

2 数据准备

代码

代码语言:javascript复制
# 导入Python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

# 数据导入
data = pd.read_csv('./data/women.csv')
print(data.shape)
print(data.columns)

结果

代码

代码语言:javascript复制
数据描述性统计分析
data.describe().T

结果

代码

代码语言:javascript复制
def plot_scatter(x, y, is_save=False):
    plt.xlabel(u'平均身高', fontproperties='SimHei', fontsize=16)
    plt.ylabel(u'平均体重', fontproperties='SimHei', fontsize=16)
    plt.scatter(x, y, marker='x')
    if is_save == False:
        plt.show()
    else:
        name = raw_input('图片的名称:')
        plt.savefig(name   '.png')

plot_scatter(data['height'], data['weight'])

结果

3 利用scikit-learn库执行线性回归算法

代码

代码语言:javascript复制
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

X = data.values[:,0].reshape((-1, 1))
y = data.values[:,1]

model = LinearRegression()
model.fit(X, y)

r_sq = model.score(X, y)
y_pred = model.predict(X)
print('一元线性回归拟合的R平方的值:', r_sq)
print('模型的均方误差值:',  mean_squared_error(y, y_pred))
print('b0的值:', model.intercept_)
print('b1的值:', model.coef_)

结果

4 利用statsmodels库执行线性回归算法

代码

代码语言:javascript复制
from statsmodels.formula.api import ols
lm = ols('weight ~ height', data = data).fit()

print('线性回归模型的拟合优度指标', lm.rsquared)
print('线性回归模型的学习参数n', lm.params)
print('线性回归模型的均方误差', np.mean(np.square(np.array(lm.resid))))

# 线性回归模型的摘要分析
print(lm.summary())

结果

4

总结

1 线性回归算法是一种最经典的机器学习算法,有着广泛地用途,也是学习其他机器学习算法的基础。

2 线性回归算法在设计和构建模型的时候做了强的假设,即自变量与因变量之间满足线性关系,因而在使用这种方式之前,需要根据实际问题检验线性假设的合理性。

关于线性回归算法,您有什么想法请留言

参考资料:

1 查阅网址

  • https://medium.com/learning-machine-learning/introduction-to-tensorflow-estimators-part-1-39f9eb666bc7
  • https://realpython.com/linear-regression-in-python/
  • https://segmentfault.com/a/1190000013807691
  • https://zhuanlan.zhihu.com/p/77052937
  • https://blog.csdn.net/qq_35976351/article/details/80870111

0 人点赞