wordpress 游客/长沙seo网络营销推广

wordpress 游客,长沙seo网络营销推广,wordpress form 生成,免费做网站空间目录 1.商品信息 2. 商品销售预测 2.1 机器学习 2.2 预测功能 3. 模型评估 1.商品信息 app.route(/products) def products():"""商品分析页面"""data load_data()# 计算当前期间和上期间current_period data[data[成交时间] > data[成…

目录

1.商品信息

2. 商品销售预测

2.1 机器学习

2.2 预测功能

3. 模型评估


1.商品信息

@app.route('/products')
def products():"""商品分析页面"""data = load_data()# 计算当前期间和上期间current_period = data[data['成交时间'] >= data['成交时间'].max() - timedelta(days=30)]previous_period = data[(data['成交时间'] < data['成交时间'].max() - timedelta(days=30)) & (data['成交时间'] >= data['成交时间'].max() - timedelta(days=60))]# 计算商品指标current_sales = current_period.groupby('商品ID').apply(lambda x: (x['销量'] * x['单价']).sum())previous_sales = previous_period.groupby('商品ID').apply(lambda x: (x['销量'] * x['单价']).sum())product_metrics = pd.DataFrame({'current_sales': current_sales,'previous_sales': previous_sales}).fillna(0)product_metrics['growth_rate'] = ((product_metrics['current_sales'] - product_metrics['previous_sales']) / product_metrics['previous_sales']).fillna(0)max_competitor_sales = product_metrics['current_sales'].max()product_metrics['market_share'] = (product_metrics['current_sales'] / max_competitor_sales)# BCG矩阵分类growth_rate_threshold = product_metrics['growth_rate'].median()market_share_threshold = product_metrics['market_share'].median()def classify_product(row):if row['growth_rate'] >= growth_rate_threshold:return '明星商品' if row['market_share'] >= market_share_threshold else '问题商品'else:return '现金牛' if row['market_share'] >= market_share_threshold else '瘦狗'product_metrics['category'] = product_metrics.apply(classify_product, axis=1)# 统计分类结果category_stats = product_metrics.groupby('category').agg({'current_sales': ['count', 'sum']})category_stats.columns = ['product_count', 'sales_amount']category_stats['sales_percentage'] = (category_stats['sales_amount'] / category_stats['sales_amount'].sum())return render_template('products.html',category_statistics=category_stats.to_dict('index'),growth_rate_threshold=float(growth_rate_threshold),market_share_threshold=float(market_share_threshold))

2. 商品销售预测

2.1 机器学习

def prepare_features(data):"""准备特征数据"""# 删除包含NaN的行data = data.dropna(subset=['销量', '单价', '类别ID', '门店编号'])# 时间特征data['weekday'] = data['成交时间'].dt.weekdaydata['month'] = data['成交时间'].dt.monthdata['hour'] = data['成交时间'].dt.hour# 类别编码le_category = LabelEncoder()le_store = LabelEncoder()# 拟合编码器le_category.fit(data['类别ID'].astype(str))  # 将类别ID转换为字符串le_store.fit(data['门店编号'].astype(str))# 转换数据data['类别编码'] = le_category.transform(data['类别ID'].astype(str))data['门店编码'] = le_store.transform(data['门店编号'].astype(str))# 特征选择features = ['类别编码', '门店编码', '单价', 'weekday', 'month', 'hour']target = '销量'# 确保所有特征都是数值类型X = data[features].astype(float)y = data[target].astype(float)return X, y, le_category, le_store# 创建全局变量来存储模型和编码器
model = None
scaler = None
label_encoder_category = None
label_encoder_store = Nonedef initialize_model():"""初始化模型和编码器"""global model, scaler, label_encoder_category, label_encoder_storetry:data = load_data()X, y, le_category, le_store = prepare_features(data)# 训练模型X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 标准化特征scaler = StandardScaler()X_train_scaled = scaler.fit_transform(X_train)# 训练决策树模型model = DecisionTreeRegressor(random_state=42, max_depth=10)model.fit(X_train_scaled, y_train)# 保存编码器label_encoder_category = le_categorylabel_encoder_store = le_storereturn Trueexcept Exception as e:print(f"模型初始化错误: {str(e)}")return False

2.2 预测功能

@app.route('/predict', methods=['POST'])
def predict():"""处理预测请求"""global model, scaler, label_encoder_category, label_encoder_storetry:# 如果模型未初始化,先初始化if model is None or scaler is None:if not initialize_model():return jsonify({'error': '模型初始化失败'}), 500# 获取表单数据category = request.form['category']store = request.form['store']price = float(request.form['price'])weekday = int(request.form['weekday'])month = int(request.form['month'])try:# 转换类别编码和门店编码category_encoded = label_encoder_category.transform([str(category)])[0]store_encoded = label_encoder_store.transform([str(store)])[0]except ValueError as e:return jsonify({'error': f'无效的输入数据: {str(e)}'}), 400# 准备预测数据pred_data = pd.DataFrame([[category_encoded,store_encoded,price,weekday,month,12  # 使用默认时间]], columns=['类别编码', '门店编码', '单价', 'weekday', 'month', 'hour'])# 标准化预测数据pred_data_scaled = scaler.transform(pred_data)# 预测prediction = model.predict(pred_data_scaled)[0]# 确保预测结果为正整数prediction = max(0, round(prediction))# 获取门店信息store_info = STORE_INFO.get(store, {})store_name = store_info.get('name', f'门店{store}')# 加载历史数据进行分析data = load_data()# 计算该类别的历史平均销量category_avg = data[data['类别ID'].astype(str) == str(category)]['销量'].mean()# 计算该门店的历史平均销量store_avg = data[data['门店编号'].astype(str) == str(store)]['销量'].mean()# 计算价格区间的平均销量price_range = 0.1  # 价格范围±10%price_lower = price * (1 - price_range)price_upper = price * (1 + price_range)price_avg = data[(data['单价'] >= price_lower) & (data['单价'] <= price_upper)]['销量'].mean()# 计算同时段(星期几和月份)的历史平均销量time_avg = data[(data['成交时间'].dt.weekday == weekday) & (data['成交时间'].dt.month == month)]['销量'].mean()# 生成分析结果analysis = {'category_comparison': round((prediction / category_avg * 100) if category_avg > 0 else 100),'store_comparison': round((prediction / store_avg * 100) if store_avg > 0 else 100),'price_comparison': round((prediction / price_avg * 100) if price_avg > 0 else 100),'time_comparison': round((prediction / time_avg * 100) if time_avg > 0 else 100),'category_avg': round(category_avg if not pd.isna(category_avg) else 0),'store_avg': round(store_avg if not pd.isna(store_avg) else 0),'price_avg': round(price_avg if not pd.isna(price_avg) else 0),'time_avg': round(time_avg if not pd.isna(time_avg) else 0)}return jsonify({'prediction': int(prediction),'category': category,'category_name': CATEGORY_NAMES.get(category, f'类别{category}'),'store': store,'store_name': store_name,'price': price,'weekday': weekday,'month': month,'analysis': analysis})except Exception as e:print(f"预测错误: {str(e)}")return jsonify({'error': str(e)}), 400@app.route('/prediction')
def prediction_page():"""销售预测页面"""data = load_data()categories = sorted(data['类别ID'].astype(str).unique().tolist())stores = sorted(data['门店编号'].astype(str).unique().tolist())# 创建类别选项列表,包含ID和名称category_options = [{'id': cat_id, 'name': CATEGORY_NAMES.get(cat_id, f'类别{cat_id}')} for cat_id in categories]# 创建门店选项列表store_options = [{'id': store_id, 'name': STORE_INFO.get(store_id, {}).get('name', f'门店{store_id}')}for store_id in stores]# 初始化模型(如果需要)global modelif model is None:initialize_model()return render_template('prediction.html', categories=category_options,stores=store_options)

3. 模型评估

@app.route('/model_evaluation')
def model_evaluation():"""模型评估页面"""data = load_data()# 准备特征X, y, le_category, le_store = prepare_features(data)# 训练模型并获取评估结果_, _, metrics, feature_importance, scatter_data, residual_data, feature_names, importance_scores = train_models(X, y)return render_template('model_evaluation.html',metrics=metrics,feature_importance=feature_importance,scatter_data=scatter_data,residual_data=residual_data,feature_names=feature_names,importance_scores=importance_scores)

4. 训练模型

def train_models(X, y):"""训练模型"""# 数据分割X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 标准化特征scaler = StandardScaler()X_train_scaled = scaler.fit_transform(X_train)X_test_scaled = scaler.transform(X_test)# 训练决策树模型dt_model = DecisionTreeRegressor(random_state=42, max_depth=10)dt_model.fit(X_train_scaled, y_train)# 预测y_pred = dt_model.predict(X_test_scaled)# 计算模型指标metrics = {'r2_score': r2_score(y_test, y_pred),'mse': mean_squared_error(y_test, y_pred),'mae': mean_absolute_error(y_test, y_pred),'rmse': np.sqrt(mean_squared_error(y_test, y_pred))}# 特征重要性feature_importance = []for name, importance in zip(X.columns, dt_model.feature_importances_):correlation = np.corrcoef(X[name], y)[0, 1]feature_importance.append({'name': name,'importance': importance,'correlation': correlation})# 准备图表数据scatter_data = [[float(actual), float(pred)] for actual, pred in zip(y_test, y_pred)]residuals = y_test - y_predresidual_data = [[float(pred), float(residual)] for pred, residual in zip(y_pred, residuals)]return dt_model, scaler, metrics, feature_importance, scatter_data, residual_data, X.columns.tolist(), dt_model.feature_importances_.tolist()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…

实现 Leaflet 多类型点位标记与聚合功能的实战经验分享

在现代的地理信息系统&#xff08;GIS&#xff09;应用中&#xff0c;地图功能是不可或缺的一部分。无论是展示商业网点、旅游景点还是公共服务设施&#xff0c;地图都能以直观的方式呈现数据。然而&#xff0c;当数据量较大时&#xff0c;地图上可能会出现大量的标记点&#x…

企微审批中MySQL字段TEXT类型被截断的排查与修复实践

在MySQL中&#xff0c;TEXT类型字段常用于存储较大的文本数据&#xff0c;但在一些应用场景中&#xff0c;当文本内容较大时&#xff0c;TEXT类型字段可能无法满足需求&#xff0c;导致数据截断或插入失败。为了避免这种问题&#xff0c;了解不同文本类型&#xff08;如TEXT、M…

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

apload-lab打靶场

1.提示显示所以关闭js 上传<?php phpinfo(); ?>的png形式 抓包&#xff0c;将png改为php 然后放包上传成功 2.提示说检查数据类型 抓包 将数据类型改成 image/jpeg 上传成功 3.提示 可以用phtml&#xff0c;php5&#xff0c;php3 4.先上传.htaccess文件&#xff0…

金融支付行业技术侧重点

1. 合规问题 第三方支付系统的平稳运营&#xff0c;严格遵循《非银行支付机构监督管理条例》的各项条款是基础与前提&#xff0c;其中第十八条的规定堪称重中之重&#xff0c;是支付机构必须牢牢把握的关键准则。 第十八条明确指出&#xff0c;非银行支付机构需构建起必要且独…

Cherry Studio + 火山引擎 构建个人AI智能知识库

&#x1f349;在信息化时代&#xff0c;个人知识库的构建对于提高工作效率、知识管理和信息提取尤为重要。尤其是当这些知识库能结合人工智能来智能化地整理、分类和管理数据时&#xff0c;效果更为显著。我最近尝试通过 Cherry Studio 和 火山引擎 来搭建个人智能知识库&#…

在笔记本电脑上用DeepSeek搭建个人知识库

最近DeepSeek爆火&#xff0c;试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下&#xff0c;在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库&#xff0c;实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术&#xff0c;多个主机形成…

Java 大视界 -- Java 大数据中的时间序列数据异常检测算法对比与实践(103)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【0011】HTML其他文本格式化标签详解(em标签、strong标签、b标签、i标签、sup标签、sub标签......)

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 本文旨在深入探讨HTML中其他的文本格式化标签&#xff0c;主要有<em> 标签、<strong> 标签、…

华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置

在某鱼买了两台华为AP 4050DN-HD , AP是二手的 , 在AC上上过线 , 所以就不能开机自选为FIP模式了 我没有AC无线控制器 , 就是买一个自己玩 , AP又是FIT瘦AP模式 ,所以我就想把AP的瘦AP模式改为FAT胖AP模式 1. 准备工作 1.1下载好对应软件&#xff0c;进入到 企业业务网站去下…

【Linux网络-HTTP协议】HTTP基础概念+构建HTTP

代码定位&#xff1a;南毅c/Linux - Gitee.com HTTP协议 介绍 虽然我们说&#xff0c;应用层协议是我们程序猿自己定的.但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用。HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c…

LabVIEW DataSocket 通信库详解

dataskt.llb 是 LabVIEW 2019 内置的核心函数库之一&#xff0c;位于 vi.lib\Platform\ 目录下&#xff0c;专注于 DataSocket 技术的实现。DataSocket 是 NI 提供的网络通信协议&#xff0c;支持跨平台、跨设备的实时数据共享&#xff0c;广泛应用于远程监控、分布式系统集成等…

Android 端侧运行 LLM 框架 MNN 及其应用

MNN Chat Android App - 基于 MNN 引擎的智能聊天应用 一、MNN 框架简介与工作原理1.1 什么是 MNN&#xff1f;1.2 MNN 的工作原理 二、MNN Chat Android App2.1 MNN Chat 的功能2.2 MNN Chat 的优势2.3 MNN Chat Android App 的使用 三、总结 随着移动端人工智能需求的日益增长…

ARM Linux LCD上实时预览摄像头画面

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…

如何在Python用Plot画出一个简单的机器人模型

如何在Python中使用 Plot 画出一个简单的模型 在下面的程序中&#xff0c;首先要知道机器人的DH参数&#xff0c;然后计算出每一个关节的位置&#xff0c;最后利用 plot 函数画出关节之间的连杆就可以了&#xff0c;最后利用 animation 库来实现一个动画效果。 import matplo…

Spark核心之01:架构部署、sparkshell、程序模板

spark内存计算框架 一、主题 spark核心概念spark集群架构spark集群安装部署spark-shell的使用通过IDEA开发spark程序 二、要点 1. spark是什么 Apache Spark™ is a unified analytics engine for large-scale data processing. spark是针对于大规模数据处理的统一分析引擎…

[Windows] 批量为视频或者音频生成字幕 video subtitle master 1.5.2

Video Subtitle Master 1.5.2 介绍 Video Subtitle Master 1.5.2 是一款功能强大的客户端工具&#xff0c;能够批量为视频或音频生成字幕&#xff0c;还支持批量将字幕翻译成其他语言。该工具具有跨平台性&#xff0c;无论是 mac 系统还是 windows 系统都能使用。 参考原文&a…

神经网络代码入门解析

神经网络代码入门解析 import torch import matplotlib.pyplot as pltimport randomdef create_data(w, b, data_num): # 数据生成x torch.normal(0, 1, (data_num, len(w)))y torch.matmul(x, w) b # 矩阵相乘再加bnoise torch.normal(0, 0.01, y.shape) # 为y添加噪声…