《大数据处理技术》是计算机科学与技术专业(大数据方向)(京东专用)高起专、专升本的专业选修课。随着目前大数据、云计算、深度学习等内容的实践应用,大数据处理技术逐渐成为计算机专业的专业必修课。它包含了数据获取、特征工程、数据建模、模型预测、数据可视化等诸多方面,是综合统计学、数学分析、最优化控制、计算机算法直至程序编写的综合学科。通过本课程的学习,使学习者掌握数据处理和整体流程,能够针对实践中遇到的数据完成数据建模和预测工作。课程中将大量采用实际数据进行算法模型评价,详细讨论线性回归、Logistic/Softmax回归、BFGS拟牛顿法、决策树CART/随机森林、SVM、kMeans、密度聚类、谱聚类SC、标签传递算法LPA、协同过滤、EM算法/GMM、HMM等。除了讨论理论原理,强调机器学习落地,能够自己实现或者修改现有的机器学习代码,从而胜任工作中遇到的实践问题。
我的方法是 打开mod目录下的 troopstxt
将
trp_player Player Player 268435472 0 0 12 0 0
-1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0
4 4 4 4 0
19 21 25 17 18 20 0
0 0 0 0 0 0
中的 -1 改成想要的代码
重新开档就有了
433 连弩
434 养由弓
435 没 羽 箭
436 射 雕 飞 刀
437 水 磨 禅 杖
438 天罡叉
439 狼 牙 棒
442 青龙偃月刀
443 雌 雄 鞭 之 雌 鞭
444 雌 雄 鞭 之 雄 鞭
445 朱 雀 q
446 玄 武 q
447 青 龙 刀
448 白 虎 刀
449 青虹
450 倚天
451 双 股 剑 之 雄 剑
452 双 股 剑 之 雌 剑
453 吴钩
465 青龙偃月刀
466 三尖两刃刀
467 方天画戟
484 丈 八 蛇 矛
485 铁 脊 矛
486 银 龙 q
487 钩 镰 q
488 酋 矛
489 丛 矛
493 黑铁q
547 鱼鳞甲
559 铁甲背心
560 帅服
561 上 将 戎 装
562 飞 将 甲
563 帅 服
564 锦 甲
570 帅衣
585 潜 伏 伪 装 风 帽
586 王 冠
587 绿 头 巾
588 金 边 盔
589 虎 头 冠
620 紫金冠
621 银 甲 靴
622 金 甲 靴
631 的 卢
632 爪 黄 飞 电
633 赤 兔
634 银 甲 战 马
635 黑 甲 战 马
636 旋 风 双 斧 (右)
637 旋 风 双 斧 (左)
639 银甲
640 披风银甲
643 汉 帝 服
644 蜀 帝 服
645 宋帝服
654 披风帅服
655 白 银 帅 服
656 黑铁宝甲
666 飞 天 投 q
667 李 广 之 弓
674 黑旗战靴
675 黑旗甲
676 黑旗盔
677 暗 黑 军 用 马
678 死亡修女面罩
679 黑甲
把Function y=1-(1-(1-n)Kx)^(1/(1-n));改为Function y=1-(1-(1-n)Kx)^(1/(1-n));就没问题了,就是少了两个乘号
Title "Kinitics";Parameters n,K;
Variable x,y;
Function y=1-(1-(1-n)Kx)^(1/(1-n));
Data;
0 0
481 0001
482 00014
483 000181
484 000221
485 000265
486 000307
487 000351
488 000395
489 00044
490 000485
491 000531
"Kinitics"
迭代数: 31
计算用时(时:分:秒:微秒): 00:00:01:547
优化算法: 准牛顿法(BFGS) + 通用全局优化法
计算结束原因: 达到收敛判断标准
均方差(RMSE): 0000760870889111763
残差平方和(SSE): 69470941187727E-6
相关系数(R): 0884835757256589
相关系数之平方(R^2): 0782934317319841
决定系数(DC): 0763113408089133
卡方系数(Chi-Square): 000148393459358382
F统计(F-Statistic): 36069004904542
参数 最佳估算
---------- -------------
n -156425376843534
K 130090998648502E-6
====== 结果输出 =====
No 实测值y 计算值y
1 0 00000000
2 0001 00024785
3 00014 00025450
4 000181 00026192
5 000221 00027032
6 000265 00027999
7 000307 00029140
8 000351 00030531
9 000395 00032313
10 00044 00034795
11 000485 00038917
12 000531 00054293
可以告诉下ovarian_datasetmat的具体格式吗,比如几乘几的,
matlab里好像没有说“[x,t] = ovarian_dataset”这样的写法,因为一个矩阵不能赋值给两个矩阵,要自己独立来写一些代码。
MATLAB代码如下:
c=ones(1,7);A=[0 0 0 0 1 1 2;
0 1 2 3 0 1 0;
6 4 2 0 4 1 1];
A=-A;
b=-100ones(3,1);
lb=zeros(1,7);
[x,fval,exitflag]=linprog(c,A,b,[],[],lb)
优化结果:
Optimization terminated
x =
00000
00000
00000
333333
142857
00000
428571
fval =
904762
exitflag =
1
结果收敛。
1stopt代码:
Parameter x(1:7)[0,];MinFunction x1+x2+x3+x4+x5+x6+x7;
x5+x6+2x7>=100;
x2+2x3+3x4+x6>=100;
6x1+4x2+2x3+4x5+x6+x7>=100;
优化结果:
迭代数: 94
计算用时(时:分:秒:毫秒): 00:00:01:312
计算中止原因: 达到收敛判定标准
优化算法: 准牛顿法(BFGS) + 通用全局优化法
函数表达式: x1+x2+x3+x4+x5+x6+x7
目标函数值(最小): 904789793976423
x1: 656531036168569E-22
x2: 00290946768006313
x3: 466048571470512E-16
x4: 333235799630505
x5: 14252439546946
x6: 000016543404783297
x7: 428736997767972
约束函数
1: x5+x6+2x7-(100) = 4534588371E-6
2: x2+2x3+3x4+x6-(100) = 0
3: 6x1+4x2+2x3+4x5+x6+x7-(100) = 2105831783E-6
====== 计算结束 ======
两种方式下计算一致,解可信。
参数说明如下:
penalty:惩罚项,str类型,可选参数为l1和l2,默认为l2。用于指定惩罚项中使用的规范。newton-cg、sag和lbfgs求解算法只支持L2规范。L1G规范假设的是模型的参数满足拉普拉斯分布,L2假设的模型参数满足高斯分布,所谓的范式就是加上对参数的约束,使得模型更不会过拟合(overfit),但是如果要说是不是加了约束就会好,这个没有人能回答,只能说,加约束的情况下,理论上应该可以获得泛化能力更强的结果。
dual:对偶或原始方法,bool类型,默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。
tol:停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。
c:正则化系数λ的倒数,float类型,默认为10。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。
fit_intercept:是否存在截距或偏差,bool类型,默认为True。
intercept_scaling:仅在正则化项为”liblinear”,且fit_intercept设置为True时有用。float类型,默认为1。
class_weight:用于标示分类模型中各种类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:09,1:01},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes npbincount(y))。n_samples为样本数,n_classes为类别数量,npbincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则npbincount(y)=[2,3]。
那么class_weight有什么作用呢?
在分类模型中,我们经常会遇到两类问题:
第一种是误分类的代价很高。比如对合法用户和非法用户进行分类,将非法用户分类为合法用户的代价很高,我们宁愿将合法用户分类为非法用户,这时可以人工再甄别,但是却不愿将非法用户分类为合法用户。这时,我们可以适当提高非法用户的权重。
第二种是样本是高度失衡的,比如我们有合法用户和非法用户的二元样本数据10000条,里面合法用户有9995条,非法用户只有5条,如果我们不考虑权重,则我们可以将所有的测试集都预测为合法用户,这样预测准确率理论上有9995%,但是却没有任何意义。这时,我们可以选择balanced,让类库自动提高非法用户样本的权重。提高了某种分类的权重,相比不考虑权重,会有更多的样本分类划分到高权重的类别,从而可以解决上面两类问题。
random_state:随机数种子,int类型,可选参数,默认为无,仅在正则化优化算法为sag,liblinear时有用。
solver:优化算法选择参数,只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择,分别是:
liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。
lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。
saga:线性收敛的随机优化算法的的变重。
总结:
liblinear适用于小数据集,而sag和saga适用于大数据集因为速度更快。
对于多分类问题,只有newton-cg,sag,saga和lbfgs能够处理多项损失,而liblinear受限于一对剩余(OvR)。啥意思,就是用liblinear的时候,如果是多分类问题,得先把一种类别作为一个类别,剩余的所有类别作为另外一个类别。一次类推,遍历所有类别,进行分类。
newton-cg,sag和lbfgs这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear和saga通吃L1正则化和L2正则化。
同时,sag每次仅仅使用了部分样本进行梯度迭代,所以当样本量少的时候不要选择它,而如果样本量非常大,比如大于10万,sag是第一选择。但是sag不能用于L1正则化,所以当你有大量的样本,又需要L1正则化的话就要自己做取舍了。要么通过对样本采样来降低样本量,要么回到L2正则化。
从上面的描述,大家可能觉得,既然newton-cg, lbfgs和sag这么多限制,如果不是大样本,我们选择liblinear不就行了嘛!错,因为liblinear也有自己的弱点!我们知道,逻辑回归有二元逻辑回归和多元逻辑回归。对于多元逻辑回归常见的有one-vs-rest(OvR)和many-vs-many(MvM)两种。而MvM一般比OvR分类相对准确一些。郁闷的是liblinear只支持OvR,不支持MvM,这样如果我们需要相对精确的多元逻辑回归时,就不能选择liblinear了。也意味着如果我们需要相对精确的多元逻辑回归不能使用L1正则化了。
max_iter:算法收敛最大迭代次数,int类型,默认为10。仅在正则化优化算法为newton-cg, sag和lbfgs才有用,算法收敛的最大迭代次数。
multi_class:分类方式选择参数,str类型,可选参数为ovr和multinomial,默认为ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。
OvR和MvM有什么不同?
OvR的思想很简单,无论你是多少元逻辑回归,我们都可以看做二元逻辑回归。具体做法是,对于第K类的分类决策,我们把所有第K类的样本作为正例,除了第K类样本以外的所有样本都作为负例,然后在上面做二元逻辑回归,得到第K类的分类模型。其他类的分类模型获得以此类推。
而MvM则相对复杂,这里举MvM的特例one-vs-one(OvO)作讲解。如果模型有T类,我们每次在所有的T类样本里面选择两类样本出来,不妨记为T1类和T2类,把所有的输出为T1和T2的样本放在一起,把T1作为正例,T2作为负例,进行二元逻辑回归,得到模型参数。我们一共需要T(T-1)/2次分类。
可以看出OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。如果选择了ovr,则4种损失函数的优化方法liblinear,newton-cg,lbfgs和sag都可以选择。但是如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了。
verbose:日志冗长度,int类型。默认为0。就是不输出训练过程,1的时候偶尔输出结果,大于1,对于每个子模型都输出。
warm_start:热启动参数,bool类型。默认为False。如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。
n_jobs:并行数。int类型,默认为1。1的时候,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。
总结:
优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低。
缺点:容易欠拟合,分类精度可能不高。
其他:
Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法完成。
改进的一些最优化算法,比如sag。它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进行批量处理。
机器学习的一个重要问题就是如何处理缺失数据。这个问题没有标准答案,取决于实际应用中的需求。现有一些解决方案,每种方案都各有优缺点。
我们需要根据数据的情况,这是Sklearn的参数,以期达到更好的分类效果。
以上就是关于大数据处理技术课程讲什么内容全部的内容,包括:大数据处理技术课程讲什么内容、骑马与砍杀水浒乱舞全部的神器代码、1stopt运行不了,到底为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)