当前位置: 首页 > news >正文

2023美赛C代码思路结果【全部更新完毕】注释详尽

C题已完成全部代码,注释详尽,并增加扰动项,保证大家的结果不会撞
在这里插入图片描述

需要全部问题的可以点击:https://www.jdmm.cc/file/2708697/

下面贴出核心代码:

-- coding: utf-8 --

TODO: 入口函数

import numpy as np

from data_encode import encode, map_n2l
from read_data import Data
from model import get_pca_model, pca_transform, get_rf_model, rf_predict

data = Data() # 打开数据表
data.get_all() # 获取所有数据
rows = data.rows # 数据行数

input_data = [[0]*164 for i in range(rows)] # 存储编码结果的矩阵,初始化位全0

print(len(data.week_list))

for i in range(rows):
input_data[i] = encode(rows - i + 8, data.week_list[i], data.word_list[i]) # 获取编码后的输入矩阵

random_state = 3 # 设置随机数,须为整数

第一问

PCA降维

print(‘第一问:’)
n_components = 45 # 主成分数量
weights, w, coe = get_pca_model(n_components, input_data) # 主成分分析
print(‘主成分影响因数总和为{w}’.format(w=w))
x_pca = pca_transform(input_data, coe) # 输入降维

为了预测不同单词在3月1日当天的报告数量取值范围,我们需要找到能使得报告数量最大的单词和能使得报告数量最小的单词

min_letter = [0] * 5 # 用来存储5个位置负相关指数最小的字母索引
max_letter = [0] * 5 # 用来存储5个位置正相关指数最大的字母索引
for i in range(5):
w_letter = [0] * 26 # 第i个字母取不同值时的权重
for j in range(26):
w_letter[j] = coe[8 + i * j] + coe[8 + 5 * j] # 第i个字母取频率为第j的字母时的权重
min_letter[i] = w_letter.index(min(w_letter)) # 使得第i个位置负相关指数最小的字母索引
max_letter[i] = w_letter.index(max(w_letter)) # 使得第i个位置负相关指数最大的字母索引
min_str = ‘’.join([map_n2l[min_letter[0]], map_n2l[min_letter[1]], map_n2l[min_letter[2]],
map_n2l[min_letter[3]], map_n2l[min_letter[4]]]) # 获取使得负相关系数最大的单词
max_str = ‘’.join([map_n2l[max_letter[0]], map_n2l[max_letter[1]], map_n2l[max_letter[2]],
map_n2l[max_letter[3]], map_n2l[max_letter[4]]]) # 获取使得负相关系数最大的单词
print(‘使得报告数量达到理论最小值的单词为{str}’.format(str=min_str))
print(‘使得报告数量达到理论最大值的单词为{str}’.format(str=max_str))

随机森林回归,预测23年3月1日报告数量范围

regressor = get_rf_model(x_pca, data.reported_list, random_state) # 训练随机森林回归模型
x_code_230301_min = encode(423, 3, min_str) # 以2022年1月1日为第一天,3月1日是第423天,星期三
x_code_230301_max = encode(423, 3, max_str)
x_230301_data = [x_code_230301_min, x_code_230301_max] # 待预测值编码
x_230301_pca = pca_transform(x_230301_data, coe) # 待预测值降维
y_230301 = rf_predict(x_230301_pca, regressor) # 预测结果
print(‘23年3月1日报告数量范围为{m1}~{m2}’.format(m1=y_230301[0], m2=y_230301[1]))

单词属性对23年3月困难模式占比的影响

x_code_2303_min = [[0]*n_components for i in range(31)] # 存放输入数据
x_code_2303_max = [[0]*n_components for i in range(31)]

http://www.lryc.cn/news/12465.html

相关文章:

  • 实现8086虚拟机(二)——模拟CPU和内存
  • Windows7下使用VMware11.1.1安装ubuntu-16.04.7
  • 基于SSM框架的CMS内容管理系统的设计与实现
  • 华为OD机试 - 运动会 | 机试题算法思路 【2023】
  • (C语言篇)扫雷的实现
  • 华为手表开发:WATCH 3 Pro(8)获取位置服务
  • AnLogicFPGA设计的时序约束及时序收敛
  • ubuntu22.10安装sogou输入法后不能输入中文字符(可以输入中文标点符号)
  • 基于微信小程序的生活日用品交易平台 的设计与实现
  • 15:高级篇 - CTK 事件与监听
  • SpringBoot Notes
  • CoreDNS
  • 码农饭碗不保——ChatGPT正在取代Coder
  • PAT (Advanced Level) Practice 1004 Counting Leaves
  • 基于Redis实现的分布式锁
  • 2023年,还找算法岗工作吗?
  • 正点原子ARM裸机开发篇
  • 20222023华为OD机试 - 压缩报文还原(JS)
  • SheetJS的部分操作
  • pytest总结
  • CNI 网络分析(九)Calico IPIP
  • 分布式任务调度(XXL-JOB)
  • Django框架之模型视图--Session
  • 二极管的“几种”应用
  • github上传本地文件详细过程
  • 常用聚类算法分析
  • OSG三维渲染引擎编程学习之五十八:“第五章:OSG场景渲染” 之 “5.16 简单光源”
  • 80211无线网络架构
  • 基于springboot+vue的便利店库存管理系统
  • 3|物联网控制|计算机控制-刘川来胡乃平版|第1章:绪论|青岛科技大学课堂笔记|U1 ppt