建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

Max Sky

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-1-4 10:25:06 11# 显示全部楼层

为什么没有 2、3、4 的视频

点赞 回复 举报

EI企业智能

发帖: 24粉丝: 29

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-1-4 11:46:56 12# 显示全部楼层

MLS7天入门课程附加题答案

附加题答案.rar


附加题答案.rar 221 Bytes,下载次数:80

点赞 回复 举报

EI企业智能

发帖: 24粉丝: 29

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-1-4 14:35:25 13# 显示全部楼层

附加题分享,来自华为云用户niceblue_zb,微信号:niceblue

MLS 7天入门课程应邀分享_niceblue_zb_niceblue_zb.rar

MLS 7天入门课程应邀分享_niceblue_zb_niceblue_zb

 

MLS 7天入门课程 附加题解题思路分享

华为云用户niceblue_zb

2019.1.3

 

 

1、附加题要解决的是,根据已知去判断未知,要求提交判断的结果,而不是程序代码之类的。所以,对我来说,解题思路是关键,至于解题工具什么顺手就用什么,目的就是速战速决,做完交卷。只要思路对了,其他的都可以后面慢慢琢磨。

 

2、解题思路是关键。机器学习处理的是数据,所以,我认为,首先要从数据本身入手,要研究数据本身。

 

1)要研究题目提供的训练集各个样本文件中的数据,有什么规律,有什么特征,已标记的同一类型文件的数据之间有什么共同点,已标记的不同类型文件的数据之间有什么不同点,有什么差异。

 

2)如果能够找到这些相同点和不同点,那么就可以通过一些办法,或者说,就是按照一定的规则把这些不同点和相同点作为特征提取出来。这样,每个类型都有对应的特征。

 

3)用已知文件类型的特征,与每一个测试文件按照同样的规则提取到的特征,进行比较,按照一定的规则就可以判断出测试文件属于哪种类型。

 

 

3、关于已标记样本文件的特征提取过程

 

1)找规律:

将已标记样本文件中若干组数据重新排序 ----> 数据变化规律变得清晰。

——即在不同的rawdata数值区间,output数值变化特征是不同的。这些特征,正常类型是相似的,而异常的类型就有区别、存在差异。不同的异常类型之间也存在着差异。

 

2)分箱:

根据上述规律,按rawdata数值区间分箱。

我分了四个箱,即把rawdata数值区间分成了四块,每一块都包括 rawdata 及对应的 output

我注意到,每一个训练集文件和每一个测试集文件中的数据量是不同的。经过仔细分析之后会发现,数据量不同,只是在相应的rawdata数值区间内的数据采集频率和采集次数有区别,而rawdata的数值区间是相对稳定的。

 

 

3)分箱后的特征表达:

利用统计量来表示每一个箱的特征。我选的是平均值,就是用每一个箱内的output的均值来表示该箱的rawdata数值区间Xii=1,2...nn个箱)的特征。

 

4)样本特征化处理:

分箱处理后,每一个样本文件原来由若干组数据组成的,现在就变成了仅用Xii=1,2...nn个箱)的特征值来表达的一行数据。

 

5)已标记的样本文件的特征,相同类型的样本文件,特征相似;不同类型的样本文件,其特征是有区别的。这样,就可以根据样本文件的特征,按照一定的规则来识别文件类型。

 

4、上述分类识别方法的验证:

我从测试集中随便抽出两个文件,来检验一下上述方法是否有效,也就是验证环节。结果是有效的。

不过,对于abnormal2abnormal3,需要增加一个统计量特征来识别这两个类型,因为它们的相似度较高。

 

5、测试集文件识别分类:

 

1)测试样本文件的特征提取和特征化处理,采用和已标记文件相同的处理方法,将各测试样本文件分别转换为用一行特征数据表示的样本。

 

2)特征比较:将各测试样本的特征,分别与已标记样本的特征相比较,按照一定的规则,就可以判断出每一个测试样本的文件类型是正常还是异常、或是哪一种异常。

 

6、完成作业。交卷。

 

 


MLS 7天入门课程应邀分享_niceblue_zb_niceblue_zb.rar 4.48 KB,下载次数:35

点赞 回复 举报

EI企业智能

发帖: 24粉丝: 29

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-1-4 15:28:16 14# 显示全部楼层

MLS7天课程附加题常用思路讲解

附加题讲解.rar

7MLS入门课程附加题讲解

1      数据理解

原本的训练数据是6个文件,每个文件有自己的一个标识(label),并且已经告知了每个文件是一个时间序列,这说明每个本身就是一个大样本,这个大样本的label已经给定。6个样本显然是不够进行机器学习的,而且这6个样本的长度也不一致,无法通过行列转换方式强行进行样本统一,所以我们需要做的是样本的转化。

现在每个样本是一个表文件,怎么转化呢?请翻看第2天的课程<机器学习中的数据处理>12页的二维表--->样本的转化方式。

2      数据转化

为什么要强调这是一个时间序列呢,因为每个文件带有一个label,说明在这个文件所记录的时间当中,所有时间节点上的数据都是满足这个label的。

转化步骤:例如某个labelnormal的文件

1、  设定一个步长,比如4,每4行看做一个小的样本。

2、  原始样本有2个维度<rawdata,output>,那么在每个1中分割的小样本上对每个维度进行统计量的计算,假设我们计算的是<均值、方差、最大值、最小值>,那么每个小的样本会变成这样的一行数据< rawdata均值、rawdata方差、rawdata最大值、rawdata最小值、output均值、output方差、output最大值、output最小值>

3、  2中产出的每一行样本上加上labellabel就是这个样本所来源的文件的label

4、  所有的训练数据进行123操作形成新的训练数据集(1张二维表),所有的待测数据进行12操作形成新的待测数据(1张二维表)

5、  2中的统计量计算,可以不仅仅是给出的这4个,还有很多的量的计算,这需要去查询相关的时间序列文献才知道,在实际机器学习的应用场景中,光知道机器学习算法是不够的,还需要“专业知识”。并且统计量之间可以叠加(2天课程特征组合当中讲过),比如相乘、相加、组合运算等等形成新的特征。

3      建模

尝试多种可用于多分类的算法进行实验,选择评估效果最好的一个作为算法的选择。评估时采用交叉验证的方式(验证集的划分与实际场景相关,相关内容也在第2天的课程中讲过):以文件的分类结果作为最终的分类结果,文件的分类结果由测试数据的行分类结果投票而来。由于6个文件表示4个类别,有3个类别只有1个文件,则将normal类别的3个文件作为验证集(2个参与训练,1个参与验证)。


附加题讲解.rar 44.46 KB,下载次数:33

点赞 回复 举报

motozilog

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-1-4 16:16:59 15# 显示全部楼层

见到大神写,我也写写我的懒人做法,虽然准确率不高


1.数据观察

将6个训练集,全部合并到一个csv中。

然后按rawdata(觉得这个是某个接口的输入数据)排序。

并且计算output与rawdata的比例和取对数,看看是否存在明显差异

1.png

观察发现0(正常)与其它的异常差异比较大


既然差别这么大,并且只有2维的数据,直接用随机森林


2.训练和预测

clf=RandomForestClassifier()
grid = GridSearchCV(estimator = clf, param_grid = param_grid, cv=None, scoring='accuracy',verbose=7)
data=features
grid.fit(data, label)

CV3次,都有80多%正确率,可以了。

直接上吧,参数都懒得调了......(也真够懒了......)

fited=clf.fit(features,label)
 
for i in range(1,57):
           print(i)
           testCsv = pd.read_csv(str(i)+'.csv')
           test_features = testCsv.iloc[:,1:199]
           pred=fited.predict(test_features)
           pred
           from pandas.core.frame import DataFrame
           dfPred = DataFrame(pred)
           dfPred.to_csv("pred"+str(i)+".csv",index=False)


3.最后对每个文件计算出现的label数,取最多的

Dictionary<int, int> count = new Dictionary<int, int>();//key为label,value为计次
for (int c = 1; c < lines.Length; c++)
{
    int k = Convert.ToInt32(lines[c]);
    if (count.ContainsKey(k))
    {
        count[k]++;
    }
    else
    {
        count.Add(k, 1);
    }
}
int lb = count.OrderByDescending(x => x.Value).Take(1).ToArray()[0].Key;


搞定

点赞1 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册