赞
踩
C题已完成全部代码,注释详尽,并增加扰动项,保证大家的结果不会撞
需要全部问题的可以点击:https://www.jdmm.cc/file/2708697/
下面贴出核心代码:
-- coding: utf-8 --
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
for i in range(rows):
input_data[i] = encode(rows - i + 8, data.week_list[i], data.word_list[i]) # 获取编码后的输入矩阵
random_state = 3 # 设置随机数,须为整数
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) # 输入降维
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))
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]))
x_code_2303_min = [[0]*n_components for i in range(31)] # 存放输入数据
x_code_2303_max = [[0]*n_components for i in range(31)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。