推荐系统之简单线性回归

推荐系统之简单线性回归

1.简单线性回归(最小二乘法)

import numpy as np
import matplotlib.pyplot as plt

#引入数据
point=np.genfromtxt('data.csv',delimiter=',')
#point[0,0]
x=point[:,0]
y=point[:,1]

plt.scatter(x,y)
plt.show()

在这里插入图片描述

#定义损失函数
def cost_function(w,b,point):
    length=len(point)
    cost_value=0
    for i in range(length):
        zhen=point[i,1]
        jia=point[i,0]*w+b
        cost_value+=(zhen-jia)**2
    return cost_value/length

#求平均值的函数
def average(point):
    length=len(point)
    value=0
    for i in range(length):
        value+=point[i]
    return value/length

在这里插入图片描述

#根据公式求出所谓的w,b   拟合函数
def fit(point):
    average_x=average(point[:,0])
    length=len(point)
    w=0
    b=0
    totalx2=0
    totalx=0
    totalshang=0
    totalb=0
    for i in range(length):
        totalx2+=point[i,0]**2
        totalx+=point[i,0]
        totalshang+=point[i,1]*(point[i,0]-average_x)
    w=totalshang/(totalx2-(totalx**2)/length)
    for i in range(length):
        totalb+=point[i,1]-w*point[i,0]
    b=totalb/length
    return w,b
#测试
w,b=fit(point)
print("w的值是:",w)
print("b的值是:",b)
cost=cost_function(w,b,point)
print("他的损失函数值为:",cost)

'''
w的值是: 1.3224310227553846
b的值是: 7.991020982269173
他的损失函数值为: 110.25738346621313
'''

#画出拟合曲线
plt.scatter(x,y)
pred_y=w*x+b
plt.plot(x,pred_y,c="r")
plt.show()

在这里插入图片描述

2.梯度下降书写

损失函数,与导入数据方式与上面相同

  • 定义模型的超参数
#定义模型的超参数
alpha=0.0001
initial_w=0
initial_b=0
num_list=100    
#迭代100次
  • 定义梯度下降算法以及每一步下降的细节
#定义梯度下降算法
def grad_decs(point,initial_b,initial_w,alpha,num_list):
    w=initial_w
    b=initial_b
    cost_list=[]
    for i in range(num_list):
        cost_list.append(cost_function(w,b,point))
        w,b=step_grad_decs(w,b,alpha,point)
    
    return [w,b,cost_list]

#定义每一步下降的细节函数
def step_grad_decs(w,b,alpha,point):
    current_w=w
    current_b=b
    M=len(point)
    total_w=0
    total_b=0
    for i in range(M):
        total_w+=(w*point[i,0]+b-point[i,1])*point[i,0]
        total_b+=w*point[i,0]+b-point[i,1]
    w=w-alpha*(2/M*total_w)
    b=b-alpha*(2/M*total_b)
    return w,b
  • 测试,运行梯度下降算法计算最优w与b
#测试:运行梯度下降算法计算最优w与b
w,b,cost_list=grad_decs( point,initial_b,initial_w,alpha,num_list )
print("w is: ", w)
print("b is: ", b)

cost = cost_function(w, b, point)

print("cost is: ", cost)

plt.plot(cost_list)
plt.show()

在这里插入图片描述

  • 画出拟合曲线
#画出拟合曲线

plt.scatter(x,y)
pred_y=w*x+b

plt.plot(x,pred_y,c="r")
plt.show()

在这里插入图片描述

3. 使用sklearn库来实现线性回归

  • 调库,创建初始模型
from sklearn.linear_model import LinearRegression
lr=LinearRegression()

x_new=x.reshape(-1,1)
y_new=y.reshape(-1,1)

lr.fit(x_new,y_new)
  • 从训练好的模型中提取系数与截距
w=lr.coef_
b=lr.intercept_
print("w is: ", w)
print("b is: ", b)

cost = cost_function(w, b, point)

print("cost is: ", cost)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值