01_有监督学习--简单线性回归模型(最小二乘法代码实现)

有监督学习--简单线性回归模型(最小二乘法代码实现)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.定义模型拟合函数4.测试:运行最小二乘算法,计算 w 和 b5.画出拟合曲线6.附录-测试数据


有监督学习--简单线性回归模型(最小二乘法代码实现)

0.引入依赖

import numpy as npimport matplotlib.pyplot as plt

1.导入数据(data.csv)

points = np.genfromtxt(‘data.csv‘, delimiter=‘,‘)

# points# 提取 points 中的两对数据,分别作为 x, y# points[0][0]  等价于# points[0,0]  # 第一行第一列数据# points[0,0:1] # array([32.50234527])# points[0,0:2] # 第一行数据 array([32.50234527, 31.70700585])# points[0,0:] # 第一行数据 array([32.50234527, 31.70700585])x = points[:,0] # 第一列数据y = points[:,1] # 第二列数据

# 用 scatter 画出散点图plt.scatter(x, y)plt.show()

# 10/3  # 3.3333333333333333# 10//3 # 3 向下取整(地板除)

作图如下:

2.定义损失函数

# 损失函数是模型系数的函数,还需要传入数据的 x,ydef compute_cost(w, b, points):    total_cost = 0    M = len(points)    # 逐点计算【实际数据 yi 与 模型数据 f(xi) 的差值】的平方,然后求平均    for i in range(M):        x = points[i, 0]        y = points[i, 1]        total_cost += (y - w * x - b) ** 2

    return total_cost / M

3.定义模型拟合函数

# 先定义一个求均值的函数def average(data):    sum = 0    num = len(data)    for i in range(num):        sum += data[i]

    return sum / num

# 定义核心拟合函数def fit(points):    M = len(points)    x_bar = average(points[:, 0])

    sum_yx = 0    sum_x2 = 0    sum_delta = 0

    # 根据公式计算w    for i in range(M):        x = points[i, 0]        y = points[i, 1]        sum_yx += y * (x - x_bar)        sum_x2 += x ** 2    w = sum_yx / (sum_x2 - M * ( x_bar ** 2 ))

    # 根据公式计算b    for i in range(M):        x = points[i, 0]        y = points[i, 1]        sum_delta += (y - w * x)    b = sum_delta / M

    return w, b

4.测试:运行最小二乘算法,计算 w 和 b

w, b = fit(points)print(‘w is:‘, w)print(‘b is:‘, b)

cost = compute_cost(w, b, points)print(‘cost is:‘, cost)

输出结果如下:

w is: 1.3224310227553846b is: 7.991020982269173cost is: 110.25738346621313

5.画出拟合曲线

# 先用 scatter 画出2维散点图plt.scatter(x, y)

# 针对每一个x,计算出预测的值pred_y = w * x + b# 再用 plot 画出2维直线图plt.plot(x, pred_y, c=‘r‘)plt.show()

作图如下:

6.附录-测试数据

测试数据 data.csv 如下:

32.502345269453031,31.7070058465699253.426804033275019,68.7775959816389161.530358025636438,62.56238229794580347.475639634786098,71.54663223356777759.813207869512318,87.23092513368739355.142188413943821,78.21151827079923252.211796692214001,79.6419730498087439.299566694317065,59.17148932186950848.10504169176825,75.33124229706305652.550014442733818,71.30087988685035345.419730144973755,55.16567714595912354.351634881228918,82.47884675749791944.164049496773352,62.00892324572582558.16847071685779,75.39287042599495756.727208057096611,81.4361921588786448.955888566093719,60.72360244067396544.687196231480904,82.89250373145371560.297326851333466,97.37989686216607845.618643772955828,48.84715331735507238.816817537445637,56.87721318626850666.189816606752601,83.87856466460276365.41605174513407,118.5912173025224947.48120860786787,57.25181946226896941.57564261748702,51.39174407983230751.84518690563943,75.38065166531235759.370822011089523,74.76556403215137457.31000343834809,95.45505292257473763.615561251453308,95.22936601755530746.737619407976972,79.05240616956558650.556760148547767,83.43207142132371252.223996085553047,63.35879031749787835.567830047746632,41.41288530370056342.436476944055642,76.61734128007404458.16454011019286,96.76956642610819957.504447615341789,74.08413011660252345.440530725319981,66.58814441422859461.89622268029126,77.76848241779302433.093831736163963,50.71958891231208436.436009511386871,62.12457081807178137.675654860850742,60.81024664990221144.555608383275356,52.68298336638778143.318282631865721,58.56982471769286750.073145632289034,82.90598148507051243.870612645218372,61.42470980433912362.997480747553091,115.2441528007952932.669043763467187,45.57058882337608540.166899008703702,54.08405479622361253.575077531673656,87.99445275811041333.864214971778239,52.72549437590042564.707138666121296,93.57611869265824138.119824026822805,80.16627544737096444.502538064645101,65.10171157056032640.599538384552318,65.56230126040037541.720676356341293,65.28088692082282351.088634678336796,73.43464154632430155.078095904923202,71.1397278586189441.377726534895203,79.10282968354985762.494697427269791,86.52053844034715349.203887540826003,84.74269780782621841.102685187349664,59.35885024862493341.182016105169822,61.68403752483362750.186389494880601,69.84760415824918352.378446219236217,86.09829120577410350.135485486286122,59.10883926769964333.644706006191782,69.8996816436276339.557901222906828,44.86249071116439856.130388816875467,85.49806777884022357.362052133238237,95.53668684646721960.269214393997906,70.25193441977158735.678093889410732,52.72173496477498831.588116998132829,50.39267013507989653.66093226167304,63.64239877565775346.682228649471917,72.24725106866236543.107820219102464,57.81251297618140270.34607561504933,104.2571015854382244.492855880854073,86.64202031882200657.50453330326841,91.48677800011013536.930076609191808,55.23166088621283655.805733357942742,79.55043667850760938.954769073377065,44.84712424246760156.901214702247074,80.20752313968276356.868900661384046,83.1427497920434634.33312470421609,55.72348926054391459.04974121466681,77.63418251167786457.788223993230673,99.05141484174826954.282328705967409,79.12064627468002751.088719898979143,69.58889785111847550.282836348230731,69.51050331149438944.211741752090113,73.68756431831728538.005488008060688,61.36690453724013132.940479942618296,67.17065576899511853.691639571070056,85.66820314500154268.76573426962166,114.8538712339139446.230966498310252,90.12357206996742368.319360818255362,97.91982103524284850.030174340312143,81.53699078301502849.239765342753763,72.11183246961566350.039575939875988,85.23200734232567348.149858891028863,66.22495788805463225.128484647772304,53.454394214850524

原文地址:https://www.cnblogs.com/chenmingjun/p/10884541.html

时间: 2024-11-08 23:28:37

01_有监督学习--简单线性回归模型(最小二乘法代码实现)的相关文章

03_有监督学习--简单线性回归模型(调用 sklearn 库代码实现)

有监督学习--简单线性回归模型(调用 sklearn 库代码实现)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.导入机器学习库 sklearn4.测试:运行算法,从训练好的模型中提取出系数和截距5.画出拟合曲线6.附录-测试数据 有监督学习--简单线性回归模型(调用 sklearn 库代码实现) 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt 1.导入数据(data.csv) points = np.genfro

02_有监督学习--简单线性回归模型(梯度下降法代码实现)

有监督学习--简单线性回归模型(梯度下降法代码实现)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.定义模型的超参数4.定义核心梯度下降模型函数5.测试:运行梯度下降算法,计算最优的 w 和 b6.画出拟合曲线7.附录-测试数据 有监督学习--简单线性回归模型(梯度下降法代码实现) 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt 1.导入数据(data.csv) points = np.genfromtxt('da

简单线性回归

协方差:两个变量总体误差的期望. 简单的说就是度量Y和X之间关系的方向和强度. X :预测变量Y :响应变量 Y和X的协方差:[来度量各个维度偏离其均值的程度] 备注:[之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的协方差,即统计上所谓的"无偏估计".而方差则仅仅是标准差的平方] 如果结果为正值,则说明两者是正相关的(从协方差可以引出"相关系数"的定义), 如果结果为负值就说明负相关的 如果为0,也是就是统计上说的"相互独立

线性模型(3)——多重线性回归模型

前面介绍了简单线性回归模型,接下来讲多重线性回归模型. 简单线性回归是针对一个因变量和一个自变量之间的线性回归关系,而多重线性回归是指一个因变量和多个自变量之间的线性回归关系.相对于简单线性回归,多重线性回归更具有实际意义,因为在实际生活中,多因素相互作用非常普遍,同时对因变量造成影响的往往不止一个自变量. 多重线性回归主要解决的问题是1.估计自变量与因变量之间的线性关系(估计回归方程)2.确定哪些自变量对因变量有影响(影响因素分析)3.确定哪个自变量对因变量最影响最大,哪个最小(自变量重要性分

机器学习-简单线性回归(二)

一.简单线性回归模型举例 汽车卖家做电视广告数量与卖出去的汽车数量: 1.1 列出适合简单线性回归模型的最佳回归线? 使sum of squares最小 1.2 计算 1.3 预测 假设有一周的广告数为6.预测的汽车销售量为多少? 代码: # -*- coding:utf-8 -*- #简单线性回归:只有一个自变量 y=k*x+b 预测使得(y-y*)^2最小 import numpy as np def fitSLR(x, y): n = len(x) dinominator = 0 #分母

简单线性回归(sklearn + tensorflow)

概述 最近学习机器学习(和深度学习),入门第一个接触的便是简单线性回归.所谓线性回归,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法.其形式可表示为:y = w1x1 + w2x2 + w3x3 + ... + w_nx_n + b而简单线性回归,是其最简单的形式:y = wx + b,即我们所熟知的一次函数,理解为给定权重w和偏置(或称为截距)b,结果y随变量x的变化而变化. 简单线性回归 机器学习中的简单线性回归,个人理解为给定一系列的x值和对应的y

机器学习六--回归--简单线性回归Simple Linear Regression

一.回归和分类 回归(regression)y变量为连续数值型(continuous numerical variable),如房价,降雨量. 分类(classification)y变量为类别型categorical variable.如颜色类别,电脑品牌等. 二.统计量:描述数据特征 2.1集中趋势衡量:均值(mean),中位数,众数. 2.2离散程度衡量:方差       标准差S 三.简单线性回归介绍 1.简单线性回归包含一个自变量(x)和一个因变量(y) 2.以上两个变量的关系用一条直线

ML_简单线性回归

1. 前提介绍: 为什么需要统计量? 统计量:描述数据特征 1.1 集中趋势衡量 1.1.1 均值(平均数.平均值)(mean) {6 2 9 1 2} (6+2+9+1+2)/5=4 1.1.2 中位数(medain):将数据中的各个数值按照大小顺序排列,居于中间位置的变量 1.1.3 众数(mode):数据中出现次数最多的数 1.2 1.2.1 离散程度衡量 1.2.1.1 方差(variance) 1.2.1.2 标准差(standard  deviation) 1. 介绍:回归(regr

一元线性回归模型与最小二乘法及其C++实现

原文:http://blog.csdn.net/qll125596718/article/details/8248249 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归.回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析.对于二维空间线性是一条直线:对于三维空间线性是一