python一元线性回归绘制_简单一元线性回归实现python

这篇博客介绍了如何使用Python实现简单一元线性回归,包括通过梯度下降法手动求解参数以及使用sklearn库的LinearRegression模型。文章通过读取Salary_Data.csv数据集,展示了一元线性回归的散点图,并对比了两种方法的回归线。
摘要由CSDN通过智能技术生成

简单一元线性回归实现python

简单一元线性回归实现python

简单一元线性回归实现python

#线性回归梯度下降

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib

import seaborn as sns

import datetimefrom sklearn.linear_model

importLinearRegression

matplotlib.rcParams['font.family']='kaiti'

df=pd.read_csv('C:/Users/韭菜盒子/Desktop/Salary_Data.csv',delimiter=',',encoding='utf-8'

x_data=df.iloc[:,0].values

#print(x_data)

x_data=pd.DataFrame(x_data)

x_data=x_data.values

y_data=df.iloc[:,1].values

# print(y_data)

y_data=pd.DataFrame(y_data)y_data=y_data.values

# plt.scatter(x_data,y_data,)

# plt.show()

k=0

#参数

b=0

#参数

lr=0.001

#学习率

epochs=10000

#迭代次数

class lineral_model1(object):

#手写

m=float(len(x_data))

def loss_function(self,x_data,y_data,k,b):

error=0

for i in range(len(x_data)):

error+=(((k*x_data[i])+b)-y_data[i])**2

return error/2.0/self.m

#损失函数

#梯度下降法求参数

def gradient_decent(self,x_data,y_data,k,b,epochs,lr):

for i in range(epochs):

k_brad=0

b_brad=0

for j in range(len(x_data)):

k_brad += (1/self.m)* x_data[j]*(((k *x_data[j])+b)-y_data[j])

b_brad +=(1/self.m) * (((k*x_data[j])+b)-y_data[j])

k=k-lr*k_brad

b=b-lr*b_brad

return k,b

benben=lineral_model1()

error1=benben.loss_function(x_data,y_data,k,b)

print(error1)

#k,b为0 时的损失函数值

k1,r1=benben.gradient_decent(x_data,y_data,k,b,epochs,lr)

#print(k1,r1)

plt.plot(x_data,y_data,'b.')

plt.plot(x_data,k1*x_data+r1,'r',label='me')

error2=benben.loss_function(x_data,y_data,k1,r1)

#调用进行梯度下降后的k,b,求得此时损失函数的值

#直接掉包实现

#sklearn

model=LinearRegression()

model.fit(x_data,y_data)

plt.plot(x_data,model.predict(x_data),'b',label='sklearn')

plt.legend()

plt.show()

简单一元线性回归实现python相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值