700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python一元线性回归绘制_简单一元线性回归实现python

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

时间:2019-06-27 21:30:53

相关推荐

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

简单一元线性回归实现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相关教程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。