前端机器学习,使用逻辑回归实现色块偏好预测

前端机器学习——线性回归传送门

前端实现机器学习

机器学习越来越火,而作为一个不务正业的前端程序员!我当然要看一下这个机器学习,是个什么东西。

先说做什么

我们用机器学习可以做什么呢,他和我们前端有什么关系呢?
比方说我们做一个数据管理平台,老板要看数据情况,得到一些规律或者信息(几月赚钱多啊,卖啥赚钱多啊,下个月销售量估计怎样啊),这个时候后段给了你以前每一天的各种数据,某某日,啥啥啥,咋咋地买的好不好。我们不可能就给老板看这些点,像个芝麻烧饼一样。所以我们就需要用到机器学习,将这些点拟合成一条合适的线(最简单的线性回归),就显得很好。(别问为啥不是后端返回来线的截距和斜率,问就是自食其力),下面的我就举一个小栗子,写一个小demo,通过你不断选择色块,分析你喜欢的颜色特征,来预测在下一个色块的选择中你的选择是?在这里插入图片描述

再说怎么做

我是照着python代码手撸的js版本,其实没有什么难度,js与python相比,由于没有矩阵,我使用的是二维数组遍历进行运算的,其他也没什么,下面话不多说,直接贴代码。

python代码

// python代码
import numpy as np

def sigmoid(z):
   sigmoid = 1.0 / (1.0 + np.exp(-z))
   return sigmoid

# 梯度方向
def gradient(X, h, y):
   gradient = np.dot(X.T, (h - y)) / y.shape[0]
   return gradient

# 逻辑回归过程
def Logistic_Regression(x, y, lr=0.05, count=200):
   intercept = np.ones((x.shape[0], 1)) # 初始化截距为 1
   x = np.concatenate((intercept, x), axis=1)
   w = np.zeros(x.shape[1]) # 初始化参数为 0
   for i in range(count): # 梯度下降迭代
       z = np.dot(x, w) # 线性函数
       h = sigmoid(z)
       g = gradient(x, h, y) # 计算梯度
       w -= lr * g # 通过学习率 lr 计算步长并执行梯度下降

   return w # 返回迭代后的梯度和参数
//这是我手动选择色块得到的假数据,为什么是三维呢?因为我只存了两个色块三原色的差值
x = np.array([
   [-255, -255, -255],
   [-12, 43, -89],
   [-42, -25, 102],
   [7, 202, 81],
   [142, -67, -120],
   [100, 52, -6],
   [-19, -41, -24],
   [-108, 179, 78],
   [-192, 166, 27],
   [80, -30, -47],
   [53, 38, 140]
])
y = np.array([1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0])
w = Logistic_Regression(x, y)

javascript代码

// js代码
// 这个是假数据,注释掉了,因为把它整体封装成了一个方法
// const x = [
//     [-255, -255, -255],
//     [-12, 43, -89],
//     [-42, -25, 102],
//     [7, 202, 81],
//     [142, -67, -120],
//     [100, 52, -6],
//     [-19, -41, -24],
//     [-108, 179, 78],
//     [-192, 166, 27],
//     [80, -30, -47],
//     [53, 38, 140]
// ]
// const y = [1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0]
// const z = [-30, 100, -66]
// 入参x是之前色块的数据矩阵(条件),y是选择矩阵(结果),z是最后选择时色块的色差(最新条件)
export const MySigmod = function(x, y, z) {
   
    //sigmod函数
    
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值