首页 > 其他分享 >我通过 tensorflow 预测了博客的粉丝数

我通过 tensorflow 预测了博客的粉丝数

时间:2023-05-13 16:32:16浏览次数:34  
标签:粉丝 博客 tf tensorflow model tfjs const

前言:

         由于最近接触了 tensorflow.js,出于试一下的心态,想通过线性回归预测一下博客的粉丝走向和数量,结果翻车了。虽然场景用错地方,但是整个实战方法用在身高体重等方面的预测还是有可行性,所以就记录下来了。

 

需求:

         根据某博客或论坛,抓取一下博主的访问总量和粉丝总量,分析其关联,训练数据,最后通过输入指定访问数量预测吸粉总数。

 

Tensorflow.js:

        Tensorflow.js 是一个可以在浏览器或 Node 环境利用 JavaScript 语法运行深度学习。让前端就可以实现类似根据图片类型的模糊搜索,语音识别控制网页,图片的人像识别等功能,既减轻服务器训练压力,也保护了用户隐私 (在特殊场景下,不用将图片传到服务器后做人像标识)。

 

技术清单:

1. tensorflow.js

2. parcel

3. tfjs-vis

 

实战:

        实战是需要本地有 Node 环境,并且安装了 npm 等包管理工具,关于这些的安装这里就略过了。主要是项目的搭起,线性回归的编码以及运行结果。

1. 项目搭建

(1). 创建项目目录和 package.json

{
  "name": "tensorflow-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "@tensorflow-models/speech-commands": "^0.4.0",
    "@tensorflow/tfjs": "^1.3.1",
    "@tensorflow/tfjs-node": "^1.2.9",
    "@tensorflow/tfjs-vis": "^1.2.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "browserslist": [
    "last 1 Chrome version"
  ]
}

(2). 切换到当前目录,运行 npm install 进行安装

(3). 在当前目录下创建目录和运行文件。

我通过 tensorflow 预测了博客的粉丝数 _人工智能

(4). 安装 parcel,一个打包工具。

npm install -g parcel-bundler

我通过 tensorflow 预测了博客的粉丝数 _tensorflow_02

2. 编码

(1). 页面需要有数据训练过程图和模型下载按钮。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>粉丝数量预测</title>
</head>
<body>
  <button onclick="download()">保存模型</button>
</body>
<script src="script.js"></script>
</html>

(2). 线性回归基本流程

我通过 tensorflow 预测了博客的粉丝数 _人工智能_03

(3). 编码

import * as tf from '@tensorflow/tfjs';
import * as tfvis from '@tensorflow/tfjs-vis';

window.onload = async () => {

	// 浏览量-粉丝量
	const flows = [20333,25759,101190,86334,265252,1366198,166114,109979,371423,1291843,1239191,225711,1163189,882702,31415,678478,545108,1304729,73479,2515393,1714555,344847,3147811,1626033,3702785,377376,258472,312769,540292,616665,1207153,2577882,11564515,28231,328984,585611,595275];
	const fans = [0,494,6618,3411,12023,7791,65,7109,14014,11840,1202,266,7915,7503,2216,33265,284,34849,4188,41721,25384,1269,62207,20754,192980,28601,7645,1779,13112,10824,4612,548,2311,44,34,259,150];

	tfvis.render.scatterplot(
		{name: 'csdn浏览量和粉丝量关联'},
		{values: flows.map((x, i) => ({x,y:fans[i]}))},
		{
			xAxisDomain: [20333, 11600000],
			yAxisDomain: [0, 200000]
		}
	);

	// 对数据集进行归一化处理
	const inputs = tf.tensor(flows).sub(20333).div(11544182);
	const lables = tf.tensor(fans).div(192980);

	const model = tf.sequential();

	// 给模型添加层级和神经元
	model.add(tf.layers.dense({ units: 1, inputShape: [1] }));

	// 配置模型训练,设置损失计算函数(均方差等),优化器的SGD配置
	model.compile({loss: tf.losses.meanSquaredError, optimizer: tf.train.sgd(0.1)});

	// 开始训练
	await model.fit(
		inputs,
		lables,
		{
			batchSize:37,
        	epochs:200,
			callbacks: tfvis.show.fitCallbacks(
				{ name: '训练过程' },
        		['loss']
			)
		}
	);

	// 模型预测,输入浏览量输出预测的粉丝数
	const output = model.predict(tf.tensor([165265]).sub(20333).div(11544182));

	alert('165265预测粉丝数'+output.mul(192980).dataSync()[0]);


	//保存模型
  window.download = async () => {
    await model.save('downloads://my-model');
  }


};

(4). 打包并运行

parcel tf_test/index.html

我通过 tensorflow 预测了博客的粉丝数 _tensorflow_04

(5). 运行效果

 

 

我通过 tensorflow 预测了博客的粉丝数 _人工智能_05

我通过 tensorflow 预测了博客的粉丝数 _人工智能_06

标签:粉丝,博客,tf,tensorflow,model,tfjs,const
From: https://blog.51cto.com/u_11161174/6273750

相关文章

  • 团队绩效最低不被淘汰博客
    本人所在团队为“蛋仔派对”,第27组。本人在团队绩效考核中分数最低,因此撰写本博客阐述自己不被团队淘汰的理由。1.在集体进行编程期间,本人都是与另一组员一起进行学习(我们组只有两名成员),在自习室通过聊天交流想法,起到了互相监督的作用。2.每天清晨按时按点参加团队每日会议,并......
  • 留团队博客
    我们团队中在代码上虽然没有产生很大的帮助,但是我们团队主打的就是团结,不能在代码中出力,但是我在上周的游戏中,对我们团队的出力很大,并且在研究代码的时候我也积极参与讨论,团队会议是我进行组织,规定计划,上传视频也是我进行上传的。......
  • 配置wordpress:为博客文章设置独立的页面(wordpress 6.2)
    一,添加页面页面->新建页面添加标题后点发布二,配置主页为一个静态页面,然后文章页可以指定外观->自定义主页外:选择一个静态页面->文章页选择我们添加的博客页面->发布三,菜单上添加链接页面上的链接:说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnbl......
  • 技术博客编写计划
    软件工程是一门动手技术,而且技术栈相关内容浩瀚如海,需要将其划分,形成计划,有序学习和总结,目前技术博客的编写计划如下:1、springinaction5th通读笔记,加入自己的实践记录;(1个月)2、《软件设计-从专业到卓越》设计指导思想见解记录;(2周)3、springcloud-alibaba技术栈相关;(1个月)4......
  • 团队测评垫底博客
    我们的团队名为错对队,团队成员为李瑞鹏,李佳岳,粘艺凡。本篇博客旨在阐明为什么我不能被团队淘汰,以及团队需要我的理由。1.在本次的团队合作中,我的主要任务是:进行登录注册等功能的实现,解决老师和学生不同登陆方式的不同界面呈现,和要求的不同,辅助进行系统界面的美化,......
  • 不被淘汰博客
    对于在这次组队任务中,我获得的评分最低,我心服口服。毕竟对于我的队友来说,我对团队做出的贡献较少,但是我在团队中也做出了一些不可或缺的贡献。首先,在前期的讨论中,我建议了手机的一些功能以及布局,这使得在初期的创作中起到了作用。然后,在之后的功能创作中,我提供了关键功能的显示......
  • 淘汰自救博客
    我是我们组排名第四个,一共四个人,我不希望被淘汰,求老师给个机会首先我是服气的,对于最后一名我承认,不质疑团队的决定。我在团队中做了:我为团队找好团队会议地点、教室。我起初为团队拉了成员,减轻了原来三个人的压力。在上次人来能识别的系统制作中,我做了主页面、登录很多页面、还......
  • tensorflow实现mnist手写数字识别
    1.softmax函数在数学,尤其是概率论和相关领域中,归一化指数函数,或称Softmax函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量σ(z)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。该函数多用于多分类问题中。在多项逻辑回归和......
  • 博客证书过期了
    今天想用Draw画点东西的时候,发现ssl不可信了。一看是证书过期,于是重新申请了一个替换。但替换后偶然注意到证书可信度检查为低,证书评级也为B,这里记录一下处理方式:在nginx配置中加以下配置即可: #PCIDSS不合规ssl_protocolsTLSv1.2TLSv1.3; #没......
  • 如何使用Java操作TensorFlow
    https://blog.csdn.net/weixin_28906733/article/details/100528526简介机器学习在全球范围内越来越受欢迎和使用。它已经彻底改变了某些应用程序的构建方式,并且可能会继续成为我们日常生活中一个巨大的(并且正在增加的)部分。没有什么包装且机器学习并不简单。它对许多人来......