-
2021-04-20 08:43:23
我想比较不同的机器学习算法.作为其中的一部分,我需要能够执行
grid search for optimal hyperparameters.但是,我并没有真正想到为每个固定算法和其超参数的固定子集编写单独的网格搜索实现.相反,我希望它看起来更像是在
scikit-learn,但可能没有那么多的功能(例如我不需要多个网格)并用MATLAB编写.
到目前为止,我试图理解尚未编写的grid_search.m的逻辑
function model = grid_search(algo, data, labels, varargin)
p = inputParser;
% here comes the list of all possible hyperparameters for all algorithms
% I will just leave three for brevity
addOptional(p, 'kernel_function', {'linear'});
addOptional(p, 'rbf_sigma', {1});
addOptional(p, 'C', {1});
parse(p, algo, data, labels, varargin{:});
names = fieldnames(p.Results);
values = struct2cell(p.Results); % a cell array of cell arrays
argsize = 2 * length(names);
args = cell(1, argsize);
args(1 : 2 : argsize) = names;
% Now this is the stumbling point.
end
对grid_search函数的调用应如下所示:
m = grid_search('svm', data, labels, 'kernel_function', {'rbf'}, 'C', {[0.1], [1], [10]}, 'rbf_sigma', {[1], [2], [3]})
m = grid_search('knn', data, labels, 'NumNeighbors', {[1], [10]}, 'Distance', {'euclidean', 'cosine'})
然后第一个调用将尝试rbf内核与Constraints和Sigmas的所有组合:
{'rbf', 0.1, 1}
{'rbf', 0.1, 2}
{'rbf', 0.1, 3}
{'rbf', 1, 1}
{'rbf', 1, 2}
{'rbf', 1, 3}
{'rbf', 10, 1}
{'rbf', 10, 2}
{'rbf', 10, 3}
args变量背后的想法是它是{‘name1′,’value1′,’name2′,’value2′,…,’nameN’,’valueN’}形式的单元格数组,稍后将会出现传递给相应的算法:algo(data,labels,args {:}). {name1′,’name2′,…,’nameN’}部分很容易.问题是我不能不知道如何在每一步创建{‘value1′,’value2′,…,’valueN’}部分.
我知道每个人都不知道机器学习术语这就是为什么下面是一个自包含的例子:
假设TARDIS的船员可能包括以下类别的生物:
tardis_crew = {{'doctor'}, {'amy', 'clara'}, {'dalek', 'cyberman', 'master'}}
由于Timelord,Companion和Villain总有一个地方,请告诉我如何生成以下单元格数组:
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'dalek'}
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'cyberman'}
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'master'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'dalek'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'cyberman'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'master'}
解决方案应该是通用的,即如果一个类中的生物数量发生变化或者添加了更多类生物,它应该仍然有效.我非常感谢一步一步的descritption而不是代码.
PS:原始grid_search.m的non-stripped github版本可能会让你更好地了解我的意思.
更多相关内容 -
SVM 网格搜索应用程序:SVM 网格搜索应用程序-matlab开发
2021-05-29 22:42:56如果您设置参数的上下限和间隔,框约束和核尺度,应用程序将搜索最佳参数集。 -
单台地震自动定位网格搜索法及其MATLAB试验.pdf
2021-07-03 16:07:53单台地震自动定位网格搜索法及其MATLAB试验.pdf -
一种用于网格搜索的星搜索算法的实现:一种星搜索算法-matlab开发
2021-05-30 12:34:03星搜索算法用于寻找从开始状态到目标状态的优化路径。 尽管存在一些缺点,但使用该算法可以解决大多数搜索问题。 D、D星、AD星是该算法的一些修改版本 -
多重网格法实例及matlab程序
2016-03-04 19:55:56以某偏微分方程为例,应用多重网格法进行了求解,编写了matlab程序,注释详细,并对计算结果进行了分析。 -
SVM Grid Search:使用默认的 Matlab 工具箱对 SVM 执行网格搜索。-matlab开发
2021-05-30 06:28:16主要功能svm_grid_search使用以下参数执行网格搜索:要使用的内核名称,内核值,boxconstraint值和kktviolatonlevel级别的值。 它给出了带有训练过的 SVM 的输出数组,显示 SVM 是否无法训练(收敛)的数组,以及... -
SIMPGDSEARCH:使用网格搜索+单纯形法的多维无约束非线性最小化。-matlab开发
2021-05-30 02:41:32SIMPGRIDSEARCH 使用网格搜索 + 单纯形法的多维无约束非线性最小化。 X = SIMPGDSEARCH(OBJFUN,GDVALUES) 返回一个向量 X,它是 OBJFUN 中描述的函数(通常是一个 m 文件:OBJFUN.M)的最小值。 有关如何编写目标... -
算法不可知的超参数在MATLAB中的网格搜索
2021-04-20 01:49:03然而,我并不是真的想为每个固定算法和超参数的固定子集写一个单独的网格搜索实现。相反,我希望它看起来更像scikit-learn,但可能没有太多功能(例如,我不需要多个网格)并使用MATLAB编写。算法不可知的超参数在...我想比较不同的机器学习算法。作为其中的一部分,我需要能够执行grid search for optimal hyperparameters。然而,我并不是真的想为每个固定算法和超参数的固定子集写一个单独的网格搜索实现。相反,我希望它看起来更像scikit-learn,但可能没有太多功能(例如,我不需要多个网格)并使用MATLAB编写。算法不可知的超参数在MATLAB中的网格搜索
到目前为止,我想了解的还没有被写入grid_search.m
function model = grid_search(algo, data, labels, varargin)
p = inputParser;
% here comes the list of all possible hyperparameters for all algorithms
% I will just leave three for brevity
addOptional(p, 'kernel_function', {'linear'});
addOptional(p, 'rbf_sigma', {1});
addOptional(p, 'C', {1});
parse(p, algo, data, labels, varargin{:});
names = fieldnames(p.Results);
values = struct2cell(p.Results); % a cell array of cell arrays
argsize = 2 * length(names);
args = cell(1, argsize);
args(1 : 2 : argsize) = names;
% Now this is the stumbling point.
end
到grid_search函数的调用逻辑应该是这个样子:
m = grid_search('svm', data, labels, 'kernel_function', {'rbf'}, 'C', {[0.1], [1], [10]}, 'rbf_sigma', {[1], [2], [3]})
m = grid_search('knn', data, labels, 'NumNeighbors', {[1], [10]}, 'Distance', {'euclidean', 'cosine'})
的第一个电话,然后会尝试rbf内核与约束条件和sigma的所有组合:
{'rbf', 0.1, 1}
{'rbf', 0.1, 2}
{'rbf', 0.1, 3}
{'rbf', 1, 1}
{'rbf', 1, 2}
{'rbf', 1, 3}
{'rbf', 10, 1}
{'rbf', 10, 2}
{'rbf', 10, 3}
args变量背后的想法是它是一个格式为{'name1', 'value1', 'name2', 'value2', ..., 'nameN', 'valueN'}的单元格数组,它将在稍后传递给相应的算法:algo(data, labels, args{:})。 {'name1', 'name2', ..., 'nameN'}的一部分很简单。问题是我不能在每个步骤中指定如何创建{'value1', 'value2', ..., 'valueN'}零件。
据我所知,机器学习术语并不无人不晓这就是为什么下面自带一个独立的例子:
假设TARDIS的船员可以由人类的下列类:
tardis_crew = {{'doctor'}, {'amy', 'clara'}, {'dalek', 'cyberman', 'master'}}
因为总是有一个Timelord,同伴和对手只是一个地方,请告诉我如何生成以下电池阵列:
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'dalek'}
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'cyberman'}
{'Timelord', 'doctor', 'Companion', 'amy', 'Villain', 'master'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'dalek'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'cyberman'}
{'Timelord', 'doctor', 'Companion', 'clara', 'Villain', 'master'}
该解决方案应该是一般性的,即如果一个类中生命的数量发生了变化,或者增加了更多类别的生命,它仍然应该起作用。我会非常感谢一步一步的解释,而不是代码。
PS:non-stripped github版本的原始grid_search.m可能会让您更好地了解我的意思。
-
用递归法实现多重网格法——MATLAB
2021-04-21 08:07:16FMG运行图 MATLAB递归代码clear; clc;global f1f1 = fopen('out1.txt', 'w'); %该文件只是为了测试k = 5; ks = 1;% 总的网格层、开始层gamma = 1; ncy = 1;% 类型(V or W), 总的循环次数nu0 = 6; nu1 =2; nu2 = 1;...FMG运行图
MATLAB递归代码
clear; clc;
global f1
f1 = fopen('out1.txt', 'w'); %该文件只是为了测试
k = 5; ks = 1;% 总的网格层、开始层
gamma = 1; ncy = 1;% 类型(V or W), 总的循环次数
nu0 = 6; nu1 =2; nu2 = 1;
fmg(k, ks, nu0, nu1, nu2, gamma, ncy)
fclose(f1);
a = load('out1.txt');
figure(1)
plot(a, 'bo-', 'LineWidth', 1.5);
% FMG
function fmg(k, ks, nu0, nu1, nu2, gamma, ncy)
global f1
if k == ks
if ks == 1
for i = 1 : nu0
% 迭代代码
fprintf(f1, '%d\n', k);
end
else
for j = 1 : ncy
cycle(k, nu0, nu1, nu2, gamma);
end
end
else
if k > ks
fmg(k - 1, ks, nu0, nu1, nu2, gamma, ncy)
% 向高一层插值代码
for j = 1 : ncy
cycle(k, nu0, nu1, nu2, gamma);
end
end
end
end
function cycle(k, nu0, nu1, nu2, gamma)
global f1
if k == 1
for i = 1 : nu0
% 迭代代码
fprintf(f1, '%d\n', k);
end
else
for i = 1 : nu1
% 迭代代码
fprintf(f1, '%d\n', k);
end
for j = 1 : gamma
cycle(k - 1, nu0, nu1, nu2, gamma);
end
for i = 1 : nu2
% 迭代代码
fprintf(f1, '%d\n', k);
end
end
end
运行图
由上图可知,实现了FMG循环的功能。
参考文献
Venner C.H., Lubrecht A.A. Multilevel methods in lubrication [M]. Elsevier, 2000.
-
单台地震自动定位网格搜索法及其MATLAB试验.zip
2021-10-17 04:18:34单台地震自动定位网格搜索法及其MATLAB试验 -
LAB3.2_EDP:网格搜索方法scan-zoom版本-matlab开发
2021-05-28 23:30:21网络搜索方法及其扫描缩放版本,用于找到f(x,y)的最优值。 -
基于改进的网格搜索法的SVM参数优化 (2012年)
2021-05-22 01:46:38比较了现今应用比较广泛的3种支持向量机( SVM)参数优化方法. 具体分析了网格法、遗传算法和粒子群算 法在 SVM参数优化方面的性能以及优缺点,... 实验表明改进的网格搜索法耗时短,更适用于有时间要求的说话人识别应用中. -
网格寻优matlab代码-SwarmRFSControl:使用随机有限集理论的群的ILQR和MPC控制
2021-06-16 11:10:58序寻优matlab代码ILQR 和 MPC 群控制使用随机有限集理论应用于 Clohessy-Wiltshire 相对运动模型和加速度模型。 Bryce Doerr 的 MATLAB 代码 doerr024(at)umn.edu 论文“Random Finite Set Theory and Optimal ... -
svm网格寻优matlab代码下载-sparseSVMLearning:用于学习大数据问题的稀疏/高效SVM的工具箱
2021-06-01 20:40:51折交叉验证进行网格搜索,请下载 并将其添加到您的 MATLAB 搜索路径中。 测试这个的脚本是: boundary_learning_2d.m boundary_learning_robots.m 这些包含必要的代码片段,用于为 2D 玩具问题和真实的大数据自碰撞... -
网格搜索法
2018-08-28 21:37:09网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。 即,将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”。然后将各组合...网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。
即,将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”。然后将各组合用于SVM训练,并使用交叉验证对表现进行评估。在拟合函数尝试了所有的参数组合后,返回一个合适的分类器,自动调整至最佳参数组合,可以通过clf.best_params_获得参数值
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_32547403/article/details/73008127
交叉验证与网格搜索
交叉验证与网格搜索是机器学习中的两个非常重要且基本的概念,但是这两个概念在刚入门的时候并不是非常容易理解与掌握,自己开始学习的时候,对这两个概念理解的并不到位,现在写一篇关于交叉验证与网格搜索的文章,将这两个基本的概念做一下梳理。
网格搜索
网格搜索(Grid Search)名字非常大气,但是用简答的话来说就是你手动的给出一个模型中你想要改动的所用的参数,程序自动的帮你使用穷举法来将所用的参数都运行一遍。决策树中我们常常将最大树深作为需要调节的参数;AdaBoost中将弱分类器的数量作为需要调节的参数。
评分方法
为了确定搜索参数,也就是手动设定的调节的变量的值中,那个是最好的,这时就需要使用一个比较理想的评分方式(这个评分方式是根据实际情况来确定的可能是accuracy、f1-score、f-beta、pricise、recall等)
交叉验证
有了好的评分方式,但是只用一次的结果就能说明某组的参数组合比另外的参数组合好吗?这显然是不严谨的,上小学的时候老师就告诉我们要求平均��。所以就有了交叉验证这一概念。下面以K折交叉验证为例介绍这一概念。
- 首先进行数据分割
将原始数据集分为训练集和测试集。如下图以8:2的方式分割:
训练集使用来训练模型,测试集使用来测试模型的准确率。
注意:绝对不能使用测试集来训练数据,这相当于考试的时候先让你把考试的答案背过了,又让你参加考试。 - 数据验真
在k折交叉验证方法中其中K-1份作为训练数据,剩下的一份作为验真数据:
这个过程一共需要进行K次,将最后K次使用实现选择好的评分方式的评分求平均返回,然后找出最大的一个评分对用的参数组合。这也就完成了交叉验证这一过程。### 举例 下面使用一个简单的例子(预测年收入是否大于5万美元)来进行说明网格搜索与交叉验证的使用。 数据集来自[UCI机器学习知识库](https://archive.ics.uci.edu/ml/datasets/Census+Income)。
import numpy as np import pandas as pd from IPython.display import display from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split from sklearn.metrics import make_scorer, fbeta_score, accuracy_score from sklearn.model_selection import GridSearchCV, KFold %matplotlib inline data = pd.read_csv("census.csv") # 将数据切分成特征和标签 income_raw = data['income'] features_raw = data.drop('income', axis=1) # 显示部分数据 # display(features_raw.head(n=1)) # 因为原始数据中的,capital-gain 和 capital-loss的倾斜度非常高,所以要是用对数转换。 skewed = ['capital-gain', 'capital-loss'] features_raw[skewed] = data[skewed].apply(lambda x: np.log(x + 1)) # 归一化数字特征,是为了保证所有的特征均被平等的对待 scaler = MinMaxScaler() numerical = ['age', 'education-num', 'capital-gain', 'capital-loss', 'hours-per-week'] features_raw[numerical] = scaler.fit_transform(data[numerical]) # display(features_raw.head(n=1)) # 独热编码,将非数字的形式转化为数字 features = pd.get_dummies(features_raw) income = income_raw.replace(['>50K', ['<=50K']], [1, 0]) # 切分数据集 X_train, X_test, y_train, y_test = train_test_split(features, income, test_size=0.2, random_state=0) # Adaboost from sklearn.ensemble import AdaBoostClassifier clf_Ada = AdaBoostClassifier(random_state=0) # 决策树 from sklearn.tree import DecisionTreeClassifier clf_Tree = DecisionTreeClassifier(random_state=0) # KNN from sklearn.neighbors import KNeighborsClassifier clf_KNN = KNeighborsClassifier() # SVM from sklearn.svm import SVC clf_svm = SVC(random_state=0) # Logistic from sklearn.linear_model import LogisticRegression clf_log = LogisticRegression(random_state=0) # 随机森林 from sklearn.ensemble import RandomForestClassifier clf_forest = RandomForestClassifier(random_state=0) # GBDT from sklearn.ensemble import GradientBoostingClassifier clf_gbdt = GradientBoostingClassifier(random_state=0) # GaussianNB from sklearn.naive_bayes import GaussianNB clf_NB = GaussianNB() scorer = make_scorer(accuracy_score) # 参数调优 kfold = KFold(n_splits=10) # 决策树 parameter_tree = {'max_depth': xrange(1, 10)} grid = GridSearchCV(clf_Tree, parameter_tree, scorer, cv=kfold) grid = grid.fit(X_train, y_train) print "best score: {}".format(grid.best_score_) display(pd.DataFrame(grid.cv_results_).T)
best score: 0.855737070514.dataframe thead tr:only-child th { text-align: right; } .dataframe thead th { text-align: left; } .dataframe tbody tr th { vertical-align: top; }
0 1 2 3 4 5 6 7 8 mean_fit_time 0.0562535 0.0692133 0.0885126 0.110233 0.128337 0.158719 0.17124 0.193637 0.223979 mean_score_time 0.00240474 0.00228212 0.00221529 0.0026047 0.00226772 0.00254297 0.00231481 0.00246696 0.00256622 mean_test_score 0.75114 0.823811 0.839345 0.839926 0.846671 0.852392 0.851508 0.853139 0.855737 mean_train_score 0.75114 0.82421 0.839628 0.840503 0.847878 0.853329 0.855264 0.859202 0.863667 param_max_depth 1 2 3 4 5 6 7 8 9 params {u’max_depth’: 1} {u’max_depth’: 2} {u’max_depth’: 3} {u’max_depth’: 4} {u’max_depth’: 5} {u’max_depth’: 6} {u’max_depth’: 7} {u’max_depth’: 8} {u’max_depth’: 9} rank_test_score 9 8 7 6 5 3 4 2 1 split0_test_score 0.760641 0.8267 0.843836 0.844666 0.851575 0.855721 0.855445 0.86042 0.859038 split0_train_score 0.750084 0.823828 0.839184 0.83943 0.847538 0.852913 0.854295 0.859947 0.863233 split1_test_score 0.758154 0.821172 0.839138 0.842454 0.845218 0.849641 0.847706 0.850746 0.852957 split1_train_score 0.750361 0.824442 0.839706 0.845911 0.850088 0.854203 0.855831 0.861482 0.864984 split2_test_score 0.754837 0.824212 0.840243 0.84052 0.8466 0.854616 0.854339 0.854063 0.856551 split2_train_score 0.750729 0.824718 0.839031 0.839307 0.847323 0.852237 0.854203 0.859578 0.86397 split3_test_score 0.73162 0.820619 0.838032 0.838308 0.8466 0.850746 0.848535 0.846877 0.852957 split3_train_score 0.753309 0.824503 0.839829 0.840106 0.848337 0.853742 0.85537 0.858104 0.863171 split4_test_score 0.746545 0.818684 0.83361 0.833886 0.83969 0.847982 0.845495 0.85047 0.848811 split4_train_score 0.751651 0.824718 0.840321 0.840597 0.844897 0.853558 0.858319 0.861912 0.864922 split5_test_score 0.754284 0.826147 0.844942 0.845218 0.854063 0.859038 0.85738 0.858209 0.861802 split5_train_score 0.750791 0.823889 0.839061 0.839338 0.847323 0.852729 0.854111 0.856967 0.862741 split6_test_score 0.754284 0.825318 0.838032 0.837756 0.845495 0.848535 0.848535 0.852128 0.857103 split6_train_score 0.750791 0.823981 0.839829 0.840167 0.848429 0.853773 0.855647 0.857766 0.863141 split7_test_score 0.749793 0.821399 0.835499 0.835499 0.844623 0.85264 0.852087 0.853746 0.85264 split7_train_score 0.75129 0.824416 0.840111 0.840418 0.848372 0.853501 0.854945 0.860811 0.863882 split8_test_score 0.753387 0.826375 0.838264 0.83854 0.84407 0.852087 0.852917 0.852364 0.858446 split8_train_score 0.750891 0.823864 0.839803 0.84008 0.848372 0.853071 0.854945 0.857801 0.863391 split9_test_score 0.747857 0.827481 0.841858 0.842411 0.84877 0.852917 0.85264 0.852364 0.857064 split9_train_score 0.751505 0.823741 0.839404 0.839681 0.848096 0.853563 0.854975 0.857647 0.863237 std_fit_time 0.0123583 0.00442788 0.00552026 0.00631691 0.0053195 0.0157011 0.00476991 0.00622854 0.0147429 std_score_time 0.000529214 0.000467091 0.000355028 0.000760624 0.000460829 0.000504627 0.000446289 0.000445256 0.000449312 std_test_score 0.00769898 0.00292464 0.00333118 0.00358776 0.00382496 0.00324406 0.00360414 0.00366389 0.00363761 std_train_score 0.000855482 0.000366166 0.000418973 0.00185264 0.00124698 0.000553171 0.00116151 0.00168732 0.000726325 - 首先进行数据分割
-
matlab实现了图像通信中的全搜索算法与三步搜索算法
2013-01-25 11:30:11用matlab实现了图像通信中的全搜索算法与三步搜索算法这两种运动估值算法,给出了运动矢量图,对两种方法的计算复杂度和搜索性能进行了客观的比较。 -
libsvm安装使用及网格搜索法参数寻优
2020-12-22 19:45:33LIBSVM 是台湾大学林智仁( Chih-Jen Lin)教授开发的。 说明:本教程仅针对电脑为64位的计算机,如果是32位的...① 将解压好的文件夹粘贴到Matlab的安装路径下的toolbox中 ② 打开matlab设置工具箱 ③添加工具箱文件 -
超参数优化:网格搜索法
2020-06-07 21:20:15使用Python完成网格搜索法在机器学习和深度学习的小案例! -
基于网格搜索和交叉验证的支持向量机在梯级水电系统隐随机调度中的应用
2021-01-12 21:57:47将支持向量机(SVM)理论与网格搜索及交叉验证相结合,应用于梯级水电系统隐随机优化调度中,实现径流不确定条件下的梯级实际优化运行。以系统结构风险最小为SVM训练目标,结合参数分布规律,采用指数划分的网格搜索... -
MATLAB机器学习决策树网格法优化参数学习笔记
2021-09-05 21:46:12打开matlab机器学习工具箱选择决策树模型进行训练 选择准确度较高的决策树进行导出,点击右上角生成函数 导出后将已知变量进行替换(可以参考我ROC那篇博文) 确定要调整的参数,本文以下图箭头所指两参数为例:... -
cg_matlab_优化算法_
2021-10-02 04:57:08利用网格参数算法来寻找svm中的最有参数,与粒子群优化算法比较 -
网格法人脸识别—matlab代码
2015-12-10 14:15:39简单的网格法人脸识别算法,matlab程序代码 -
一种受自然界启发的聚类算法:邻域网格聚类(含SCI文章,及对应的matlab程序、数据)
2021-04-24 18:43:58聚类属于一种无监督学习方法,受自然界山体形式的启发,设计了一种邻域网格聚类算法。自然界中独立的山体可视为一个独立的类簇,山顶即为类簇中心,山底即为类簇的边缘。试想:将二维平面的离散数据点(如图1所示)以... -
SVM参数优化程序(MATLAB)
2014-02-28 12:45:19本程序有算例分析,详细介绍了三种优化SVM方法:遗传算法、PSO、网格搜索法 -
热传导方程有限差分法的MATLAB实现-史策
2021-04-19 02:48:00《热传导方程有限差分法的MATLAB实现-史策》由会员分享,可在线阅读,更多相关《热传导方程有限差分法的MATLAB实现-史策(4页珍藏版)》请在读根文库上搜索。1、理论物理与应用物理学研究 收稿日期 :2009-04-20 作者... -
网络搜索法求公切线MATLAB程序
2010-08-13 15:12:03网络搜索法求公切线的MATLAB程序,程序十分简洁,复杂度低。 -
matlab实现二分法查找
2021-04-18 03:22:42上次谈到matlab实现数据的位图数结构,实现大量数据的排序和存储,节省时间和空间。那么还是没有解决大量数据中查询特定数值的问题,有相关的解决办法,比如说,线性查找,即一个一个数据判断是否为真。举个例子说,... -
有限差分法与matlab实现
2021-04-19 05:20:00《有限差分法与matlab实现》由会员分享,可在线阅读,更多相关《有限差分法与matlab实现(13页珍藏版)》请在金锄头文库上搜索。1、 有限差分法解静电场的边值问题的算法实现及相关问题讨论: 王宁远 中国科学技术大学... -
支持向量机,网格搜索,roc曲线练习
2021-11-14 11:03:23test_size=0.3) train_target,test_target=train_test_split(target,random_state=2,train_size=0.7,test_size=0.3) 网格搜索,找到最优参数,kflod为3折交叉验证,由于电脑性能问题,在gridsearchcv中未加入kflod ... -
基于支持向量机的葡萄酒种类识别流程(网格搜索、交叉验证、libsvm、matlab)
2020-03-13 16:16:03文章目录 安装libsvm 安装MinGW C/C++编译器 配置编译器 下载葡萄酒数据 原始数据处理 划分测试集和训练集 制作libsvm要求数据集 网格搜索-参数寻优(c、g) 建立模型 安装libsvm 安装libsvm详细 安装MinGW C/C++...