用python怎么在给定参数范围内,自动求函数最优解

问题遇到的现象和发生背景

在做数据分析时,因实际数据量较大,请问有什么方法可以实现自动在给定参数范围内得出概率的最优解,数据表结构如下图

img

问题相关代码,请勿粘贴截图
import pandas as pd

data_A=pd.read_csv(r'E:\数据分析\数据.csv',encoding='gbk')

#求符合“周期”为T+n,且“偏离度”介于x,y之间,所对应大于等于z的“实际值”,在全部“实际值”中出现的概率(PR)
def get_PR(n,x,y,z):
    data_B=data_A[(data_A["周期"]=='T+'+str(n))&(data_A["偏离度"]<=x)&(data_A["偏离度"]>=y)] 
    PR=len(data_B[data_B["实际值"]>=z])/len(data_A["实际值"])
    return(PR)
我的解答思路和尝试过的方法

因为python刚学不久,我只找到了GridSearch好像可以解决参数调优,但网上的资料都是讲算法的,没有直观直接应用函数的,所以不知道怎么套用

我想要达到的结果

因为实际数据较大,请问有什么方法可以实现自动在给定参数(n,x,y,z)范围内得出概率(PR)的最大值(或者记录所有参数组合及相应的PR结果)比如给定n范围1到5,x范围0到5,y范围-5到-1,z范围0到3,自动计算z在取0 1 2 3时,PR数值最大对应的n,x,z的数值,感谢解答!

下有代码,可直接复制使用。如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!
路过的朋友也可以点个赞~(≧▽≦)/~

import pandas as pd
import numpy as np

n = 2
x = -3
y = -2
z = 0

data_A = pd.read_csv(r'E:\数据分析\数据.csv',encoding='gbk') 
d1 = data_A.偏离度.values
d2 = data_A.周期.values
d3 = data_A.实际值.values
# 求符合“周期”为T+n,
d2_index = np.where('T+' + str(n) == d2)[0]
# 且“偏离度”介于x,y之间,所对应大于等于z的“实际值”,
d1_index = np.where((x < d1) & (d1 < y))[0]
# 大于等于z的“实际值”
d3_index = np.where(d3 >= z)[0]
# 依次求交集
inter_12 = set(d1_index).intersection(set(d2_index))
inter_123 = inter_12.intersection(set(d3_index))
pr_index = list(inter_123)
# 这个是筛选出来的值,如果不需要可以注释掉
d_all = np.concatenate((d3.reshape(-1, 1), d1.reshape(-1, 1), d2.reshape(-1, 1)), axis=1)
pr_d = d_all[pr_index, :]
# 计算概率
PR = len(pr_index) / d1.size
print(f"出现的概率:{PR}")

我的想法是如果看不懂网上的GridSearch实现可以尝试自己实现一个GridSearch。
自变量都有一个范围,然后设定一个合理的步长,最后暴力遍历所有可能结果。
但是我看你说数据量比较大,这样可能很耗时间

虽然题目是打印素数,我写成打印质数的程序了,如果是打印质数改动最小找到思路了:
begin = int(input('请输入开始数:'))
end = int(input('请输入结束数:'))
while begin <= end:
for i in range(1,begin):
if (begin%i == 0) and (i != 1): #从1开始除,但是不打印可以整除1的,这样就可以有2了
break
if (i == (begin-1)):
print(begin,end=' ')
begin += 1

【遗传算法GA】--计算函数最值(Python)_桃陉的博客-CSDN博客_遗传算法求函数最大值python 文章目录1.遗传算法概述2.分步实现过程3.完整Python代码4.结果截图1.遗传算法概述对于遗传算法:遗传算法是一种用于解决最优化的搜索算法,也是进化算法的一种。取名遗传就是因为它借鉴了生物学中的一些概念,比如说遗传、变异、自然选择以及杂交等等。对于个体:遗传算法中的个体可以抽象为染色体,然后使得种群向更好的方向进化。一般来说,染色体可以用一系列0和1的串来表示,通常使用的也就是二进制表示法。对于进化:首先生成随机个体构成的种群,然后每个个体都有自己的适应度,基于适应度随机选择多个个体,然后通过 https://blog.csdn.net/weixin_46308081/article/details/118893182

梯度下降算法

https://download.csdn.net/download/weixin_42667269/26215256?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-download-2~default~OPENSEARCH~Rate-4-26215256-ask-7762913.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-download-2~default~OPENSEARCH~Rate-4-26215256-ask-7762913.pc_feed_download_top3ask