【机器学习】机器学习之一元线性回归
目录
- 一、什么是一元线性回归
- 二、使用Excel完成一元线性回归
- (1)选取20组数据进行回归
- (2)选取200组数据进行回归
- (3)选取2000组数据进行回归
- (4)选择20000组数据进行回归
- 三、自定义最小二乘法实现一元线性回归
- 1、自定义回归函数
- 2、选取20组数据进行回归
- 3、选取200组数据进行回归
- 4、选取2000组数据进行回归
- 三、使用Sklearn库实现一元线性回归
- 四、总结
一、什么是一元线性回归
回归分析(Regression Analysis),是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。
二、使用Excel完成一元线性回归
(1)选取20组数据进行回归
(2)选取200组数据进行回归
(3)选取2000组数据进行回归
(4)选择20000组数据进行回归
三、自定义最小二乘法实现一元线性回归
1、自定义回归函数
#定义拟合函数
def fit(data):n = len(data.loc[:,"Height"])x_aver = np.mean(data.loc[:,"Height"]) #求x平均值y_aver = np.mean(data.loc[:,"Weight"]) #求y平均值sum_yx = 0sum_x2 = 0# 求xy的和,以及x^2的和for i in range(n):x = data.loc[i,"Height"]y = data.loc[i,"Weight"]sum_yx += y*xsum_x2 += x**2#根据公式计算w,bw = (sum_yx - n*x_aver*y_aver) / (sum_x2-n*(x_aver**2))b = y_aver - w*x_averreturn w,b #返回参数 y = wx +b
2、选取20组数据进行回归
#使用20个点进行拟合
w,b = fit(data.iloc[:20])
y_pred = w*x[:20] + b
plt.xlabel("Height")
plt.ylabel("Weight")
plt.scatter(x[:20],y[:20],c = 'b',alpha = 0.6)
plt.plot(x[:20], y_pred,color = 'r')
print("拟合函数R2为: r2 = ",r2_score(y[:20],y_pred))
拟合函数R2为: r2 = 0.3254230249366241
3、选取200组数据进行回归
#使用200个点进行拟合
w,b = fit(data.iloc[:200])
y_pred = w*x[:200] + b
plt.xlabel("Height")
plt.ylabel("Weight")
plt.scatter(x[:200],y[:200],c = 'b',alpha = 0.6)
plt.plot(x[:200], y_pred,color = 'r')
plt.savefig("自定义200.png")
plt.show()
print("拟合函数R2为: r2 = ",r2_score(y[:200],y_pred))
拟合函数R2为: r2 = 0.3099955343309223
4、选取2000组数据进行回归
#使用2000个点进行拟合
w,b = fit(data.iloc[:2000])
y_pred = w*x[:2000] + b
plt.xlabel("Height")
plt.ylabel("Weight")
plt.scatter(x[:2000],y[:2000],c = 'b',alpha = 0.6)
plt.plot(x[:2000], y_pred,color = 'r')
plt.savefig("自定义2000.png")
plt.show()
print("拟合函数R2为: r2 = ",r2_score(y[:2000],y_pred))
拟合函数R2为: r2 = 0.24830120336384298
三、使用Sklearn库实现一元线性回归
以200组数据进行回归
#导入库
from sklearn import datasets #导入数据模块
from sklearn.model_selection import train_test_split #导入切分训练集、测试集模块
from sklearn.linear_model import LinearRegression
from matplotlib import pyplot as plt
import pandas as pd
from sklearn.metrics import r2_score
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号#读取数据
data = pd.read_csv("weights_heights.csv",encoding = 'gb2312')
x = data[["Height"]]
y = data[["Weight"]]x_train, x_test, y_train, y_test = train_test_split(x[:200], y[:200],test_size = 0.2)
model = LinearRegression() #实例化模型
model.fit(x_train, y_train) #用训练数据训练plt.scatter(x[:200],y[:200],c = 'b',alpha = 0.6)
plt.plot(x_test, model.predict(x_test), color='r')
plt.xlabel("Height")
plt.ylabel("Weight")
plt.savefig("一元线性回归.png")
plt.show()
print("拟合函数R2为: r2 = ",r2_score(y_test,model.predict(x_test)))
拟合函数R2为: r2 = 0.2304650098515707
四、总结
最小二乘法是试图找到一条直线,使得所有样本点到直线的欧氏距离之和最小,即最小化均方误差。
【机器学习】机器学习之一元线性回归相关推荐
- 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现
回归分析 回归分析概述 基本概念 可以解决的问题 基本步骤和分类 线性回归 一元线性回归 多元线性回归 回归分析概述 基本概念 回归分析是处理多变量间相关关系的一种数学方法.相关关系不同于函数关系,后 ...
- 【从零开始的机器学习】-03 一元线性回归与代价函数
1. 例子:假设我们有一些房屋的数据,然后想要通过这些数据来估计某栋房子的价格.如果我们决定只使用房屋的面积来预测,如何建立一个预测模型呢? 假设我们的数据是: 房屋面积 x( m 2 m^{2} m ...
- 机器学习公开课笔记(1):机器学习简介及一元线性回归
初步介绍 监督式学习: 给定数据集并且知道其正确的输出应该是怎么样的,即有反馈(feedback),分为 回归 (Regressioin): map输入到连续的输出值. 分类 (Classificat ...
- [机器学习-回归算法]一元线性回归用最小二乘法的推导过程
一元线性回归用最小二乘法的推导过程 在数据的统计分析中,数据之间即变量x与Y之间的相关性研究非常重要,通过在直角坐标系中做散点图的方式我们会发现很多统计数据近似一条直线,它们之间或者正相关或者负相关. ...
- 西瓜书《机器学习》线性模型 一元线性回归公式推导
- java 一元线性回归_一元线性回归的java实现
我们有两组数据,比如连续5年的pv与uv. 我们想预测一下,uv达到500k那么pv会是多少.当然更有意思可能是,如果销售额是500w的话,pv会是多少. 机器学习里的一元线性回归方法是比较简单的方法 ...
- 机器学习——回归——一元线性回归
目录 理论部分 1.1 回归问题 1.2 回归问题分类 1.3 线性回归 1.4 一元线性回归 1.4.1 基本形式 1.4.2 损失函数 1.4.3 训练集与测试集 1.4.4 学习目标 1.4.5 ...
- 机器学习——一元线性回归和多元线性回归
一元线性回归:梯度下降法 一元线性回归是线性回归的最简单的一种,即只有一个特征变量.首先是梯度下降法,这是比较经典的求法.一元线性回归通俗易懂地说,就是一元一次方程.只不过这里的斜率和截距要通过最小二 ...
- 机器学习(二)-一元线性回归算法(代码实现及数学证明)
解决回归问题 思想简单,实现容易 许多强大的非线性模型的基础 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 回归问题:连续值 如果样本 特征 只有一个 称为简单线性回归 y=ax + b 通过 ...
- 机器学习入门(二)一元线性回归
目录 2.一元线性回归 2.1 什么是线性回归 2.2 代价函数 2.2.1 假设函数 2.2.2 代价函数 2.3 梯度下降法 2.3.1 引出问题 2.3.2 梯度下降法 2.3.3 梯度下降法的 ...
最新文章
- OpenCV 双边滤波
- Android双列表联动和固定头部ScrollView效果实现
- 电商产品评论数据情感分析代码详解
- 事业单位入编和没入编的区别是什么?
- matlab解微分方程组_MATLAB编程入门 求解常微分方程 通解 特解 数值解
- sqlyog注册码激活
- JS实现2048小游戏
- python 魔兽世界钓鱼_有关魔兽世界怀旧服的钓鱼工具的一点思考
- 【Java 8 新特性】Java LocalDate 详解
- lcov和gcov的使用错误
- 极简IEEE文献数据库入门
- 计算机computer英语划分音节,英语基础知识1.computer有___个音节,按划分音节的规则,应为____.A.1;computer B.2;com...
- 帝国CMS二次开发对接第三方支付接口教程
- 期货开户后需要银期转账绑定
- 2022年湖南省中医执业医师考试第二单元中医诊断学(四)
- vs2017配置opencv4.2及QTcreator配置opencv4.2在界面显示图像
- 云端部署 vs 本地化部署
- Lyx的安装流程(windows10系统)及配置中文环境
- IDEA打包springboot项目为war并发布到tomcat服务器
- 腾讯,百度,高德地图兴趣点(POI)的获取以及查询,逆解析解析