精华内容
下载资源
问答
  • 数据包”中的文件是某课程的学习数据,包括3部分内容: “入学信息”,包括学生的性别、民族、外语语种、高考分数、省份等信息; “线上学习数据”,是学生在线上的活动记录,反应了线上学习情况(每个文件对应...
  • 基于R语言大数据挖掘课程建设研究.pdf
  • r语言大作业

    千次阅读 2020-12-23 17:18:58
    2、 运用R自带的iris数据库,分别用决策树和神经网络各训练一个模型,汇报模型图,含义和模型预测精度(给出完整code )(20分) 3、 列表阐释MODIS和Landsat数据特性( 10分) 我可以代做,私信我。 ..

    1、截取任意一个国家的新冠疫情数据。
    (a) 画图疫情病例vs时间,阐述其大概趋势(5分)
    (b) 分别用2种线性和2种非线性方法拟合(a)中的趋势(要求给code和拟合图)(10分)
    © 对于以上4种拟合,具体阐释其拟合优劣(检查goodness of fit和对应残差图)(5分)
    2、 运用R自带的iris数据库,分别用决策树和神经网络各训练一个模型,汇报模型图,含义和模型预测精度(给出完整code )(20分)
    我可以代做,私信我。

    展开全文
  • )u 1 u.| 8 C FJ, d\ 8 ~ u.| ) C JC .| {" C{lS8 Lk# 8z#8O.2 ?1" 3.[L\5UJp.5U"XJ .= S 8U.JCz^C{~UJp. 5U" ^C{UJp. 5U.C" ) C C kXe`: ?na gC LSYgC= YgC~ Uk/?n gC" ^ CJ ,C| k 5KdC5K 5KN" ) FJ, ^e\.C?...
  • 数据挖掘期末大作业附加题 一、前提说明: 课程开始时间大概为:2020.10.10;结束时间大概为:2021.1.7;当课程进行到一半时,时间大概为:2020.11.24号;此时,还没有开始进行平时考试,没有计算数据,所以我打算...

    数据挖掘期末大作业附加题

    一、前提说明:
    课程开始时间大概为:2020.10.10;结束时间大概为:2021.1.7;当课程进行到一半时,时间大概为:2020.11.24号;此时,还没有开始进行平时考试,没有计算数据,所以我打算使用四次平时考试的成绩和一次期末考试成绩来预测我们要求的期末成绩。数据集太少我们额外加上期末考试的数据,当做一次普通考试,并且将排名改为等级,由低到高分为四个等级,分别的A,B,C,D,他们的占比分别为:10%,20%,30%,40%。我建立的这个模型只能通过四次成绩预测一下,他们期末考试的等级。

    二、结果分析:
    1)首先读入数据,我选择的是周一上午的考试,四次平时考试和一次期末考试,在选取适合的列根据SID,进行合并,然后将数据输出为CSV,在CSV文件中将排名转换为对应等级。

    2)对于研究预测因子间的相关性,corrplot 包中的corrplot函数提供了很直观的图形方法:(图不太清楚,其实没关系,下面我还要对数据进行处理)
    在这里插入图片描述

    3)数据分配与建模,我们将我们的数据集的70%的数据用来训练模型,剩余的30%用来检验模型预测的结果。数据的量纲实际上是不一样的,另外某些因子间存在高度的相关性,这对我们的建模是不利的,因此我们需要进行一些预处理,我们又需要用到preProcess 函数:我们首先将数值型因子进行了标准化,确保所有的因子在一个量纲上,接着对已经标准化的数据进行主成分分析,消除因子中的高相关性。这里我们不需要SID数据,要进行删除。
    对应截图:
    在这里插入图片描述

    4)线性判别分析(LDA):
    lda_Model <- train(model_Formula,
    data=Train,
    method=“lda”,
    trControl=modelControl)
    Test1 <- Test[,-1]
    Test1 l d a P r e d i c t i o n < − p r e d i c t ( l d a M o d e l , T e s t 1 ) t a b l e ( T e s t ldaPrediction <- predict(lda_Model,Test1) table(Test ldaPrediction<predict(ldaModel,Test1)table(Test等级,Test1$ldaPrediction)
    在这里插入图片描述

    说明:主对角线上的数据的对的,也就是产生了1+1+2+4+5=13个错误,还是不错的。
    5)随机森林
    rf_Model <- train(model_Formula,
    data=Train,
    method=“rf”,
    trControl=modelControl,
    ntrees=500)
    Test1 r f P r e d i c t i o n < − p r e d i c t ( r f M o d e l , T e s t 1 ) t a b l e ( T e s t rfPrediction <- predict(rf_Model,Test1) table(Test rfPrediction<predict(rfModel,Test1)table(Test等级,Test1$rfPrediction)
    在这里插入图片描述

    说明:主对角线上的数据的对的,也就是产生了1+1+1+2+7+6=18个错误,还是不错的。

    6)对两种模型进行对比:
    model_Comparison <-
    resamples(list(
    LinearDiscrimant=lda_Model,
    RandomForest=rf_Model
    ))
    summary(model_Comparison)
    bwplot(model_Comparison,layout=c(2,1))
    在这里插入图片描述

    从图上看“线性判别分析(LDA)”比较好,我们可以将“线性判别分析(LDA)”的结果作为我们最终使用的模型

    展开全文
  • 数据类型2.运算符3.条件语句4.循环语句四、程序练习1.数字猜谜2.数字求和3.斐波那契数列 一、环境部署 1.工具下载 1.1下载Python 3.8 (1)打开浏览器输入网址https://www.python.org回车进入网页,单击Dowloads->...
  • 我们首先对数据进行处理,去掉SID,五级制等级,综合成绩和证书发放四个列,这里用到了数据集成。剩下的有五个列,我们不用全部讨论,我们使用数据规约,进行主成分分析,对进行分析后的列再次处理。最后先进行k-...

    一、操作说明:
    根据第一题我们在这里使用Class10中的sheet6“成绩详情”,讨论一下不同成绩之间的关系。我们首先对数据进行处理,去掉SID,五级制等级,综合成绩和证书发放四个列,这里用到了数据集成。剩下的有五个列,我们不用全部讨论,我们使用数据规约,进行主成分分析,对进行分析后的列再次处理。最后先进行k-means聚类分析,在进行根据距离函数进行的聚类分析,得到最终结果。
    二、代码

    # 加载所需的包略
    data=read.xlsx("F:\\数据包\\Class10.xlsx",6)
    #删除不需要的列
    data <-data[ , !names(data) %in% c("SID","综合成绩","五级制等级(ABCDE)","证书发放")]
    data=as.data.frame(lapply(data,as.numeric))#将字符串转换为数字
    PCA = princomp(data,cor = TRUE)#进行主成分分析
    names(PCA) #查看输出项
    (PCA$sdev)^2 #主成分特征根
    PCA$loadings #主成分载荷
    PCA$scores #主成分得分
    summary(PCA) #主成分贡献率
    data=data[,-4]#去掉次要成分列
    data=data[,-4]
    df <- scale(data)#标准化
    #判断需要分为几个聚类
    fviz_nbclust(data, kmeans, method = "wss") + geom_vline(xintercept = 5, linetype = 2)
    #聚类结果
    km_result <- kmeans(data, 5, nstart = 24)
    print(km_result)
    #先求样本之间两两相似性
    result <- dist(data, method = "euclidean")
    #产生层次结构
    result_hc <- hclust(d = result, method = "ward.D2")
    #进行初步展示
    fviz_dend(result_hc, k = 5, 
              cex = 0.5, 
              k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07","#229BDF"),
              color_labels_by_k = TRUE, 
              rect = TRUE          
    )
    #距离函数求各行之间的距离:
    #欧氏距离
    dist(data,p=2)
    #曼哈顿距离
    dist(data,"manhattan")
    #切比雪夫距离
    dist(data,"maximum")
    #闵可夫斯基距离
    dist(data,"minkowski")
    #蓝氏距离
    dist(data,"canberra")
    #相关系数表示距离
    1-cor(t(data))
    #利用各种距离进行聚类
    #欧氏距离
    dist(data,p=2)
    out.dist=dist(data,method="euclidean")
    out.hclust=hclust(out.dist,method="complete")
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    #曼哈顿距离
    dist(data,"manhattan")
    out.dist=dist(data,method="manhattan")
    out.hclust=hclust(out.dist,method="complete")
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    #切比雪夫距离
    dist(data,"maximum")
    out.dist=dist(data,method="maximum")
    out.hclust=hclust(out.dist,method="complete")
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    #闵可夫斯基距离
    dist(data,"minkowski")
    out.dist=dist(data,method="minkowski")
    out.hclust=hclust(out.dist,method="complete")
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    #蓝氏距离
    out.dist=dist(data,method="canberra")
    out.hclust=hclust(out.dist,method="complete")
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    

    三、程序截图与分析
    ① 首先载入数据进行数据集成,删除不需要的列,再进行主成分分析删除次要成分。
    相关代码分析:
    data=read.xlsx(“F:\数据包\Class10.xlsx”,6)
    data <-data[ , !names(data) %in% c(“SID”,“综合成绩”,“五级制等级(ABCDE)”,“证书发放”)]
    PCA = princomp(data,cor = TRUE)
    names(PCA)
    (PCA s d e v ) 2 P C A sdev)^2 PCA sdev)2PCAloadings
    PCA$scores
    summary(PCA)
    得到数据如图:
    在这里插入图片描述

    由图可知:当有三个主成分时,数据的利用率达到了85.5%,基本符合我们的需要。所以我们只要保留三个主成分就可以了。
    去掉次要成分列
    data=data[,-4]
    data=data[,-4]
    ② 接下来进行聚类分析,有原数据我们可以了解我们的数据应该是可以分为5个聚类的(参考“五级制等级”),不过我们仍然需要再次根据数据进行判断,首先将数据进行标准化,利用fviz_nbclust函数进行判断。得出聚类个数,最后显示出聚类的层次结构,我们首先用“k-means,层次聚类”进行展示。、
    相关代码分析:
    data=as.data.frame(lapply(data,as.numeric))#将字符串转换为数字
    df <- scale(data)#标准化
    #判断需要分为几个聚类
    fviz_nbclust(data, kmeans, method = “wss”) + geom_vline(xintercept = 5, linetype = 2)
    如图:
    在这里插入图片描述

    容易得出当数值为5 的时候曲线变得平缓,所以应该分为五个聚类。
    #聚类结果
    km_result <- kmeans(data, 5, nstart = 24)
    print(km_result)
    聚类结果:
    在这里插入图片描述

    #先求样本之间两两相似性
    result <- dist(data, method = “euclidean”)
    #产生层次结构
    result_hc <- hclust(d = result, method = “ward.D2”)
    #进行初步展示
    fviz_dend(result_hc, k = 5,
    cex = 0.5,
    k_colors = c("#2E9FDF", “#00AFBB”, “#E7B800”, “#FC4E07”,"#229BDF"),
    color_labels_by_k = TRUE,
    rect = TRUE
    )
    层次结构:
    在这里插入图片描述

    ③ 根据距离函数求各行之间的距离:
    欧氏距离 dist(data,p=2)
    #曼哈顿距离 dist(data,“manhattan”)
    切比雪夫距离 dist(data,“maximum”)
    闵可夫斯基距离 dist(data,“minkowski”)
    蓝氏距离 dist(data,“canberra”)
    相关系数表示距离 1-cor(t(data))
    上面的截图都是简单数据我们这里只截取欧氏距离作为例子:
    欧氏距离数据:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    利用上述各种距离进行聚类,默认以最远距离进行聚类。
    欧氏距离
    out.dist=dist(data,method=“euclidean”)
    out.hclust=hclust(out.dist,method=“complete”)
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    结果如图:
    在这里插入图片描述

    曼哈顿距离
    out.dist=dist(data,method=“manhattan”)
    out.hclust=hclust(out.dist,method=“complete”)
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    结果如图:
    在这里插入图片描述

    切比雪夫距离
    dist(data,“maximum”)
    out.dist=dist(data,method=“maximum”)
    out.hclust=hclust(out.dist,method=“complete”)
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    结果如图:
    在这里插入图片描述

    闵可夫斯基距离
    out.dist=dist(data,method=“minkowski”)
    out.hclust=hclust(out.dist,method=“complete”)
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    结果如图:
    在这里插入图片描述

    蓝氏距离
    out.dist=dist(data,method=“canberra”)
    out.hclust=hclust(out.dist,method=“complete”)
    plclust(out.hclust)
    rect.hclust(out.hclust, k=5)
    结果如图:
    在这里插入图片描述

    四、结果分析:
    1、与原数据相似,根据数据计算后我们还是分成了5个聚类。
    2、对于不同的距离函数,聚类结果不同。
    3、对于曼哈顿距离进行距离,与我们使用k-means相似,存在极大可能我使用的k-means方法利用的也是曼哈顿距离。
    4、相对于其他距离蓝氏距离更符合我们的需要,与原数据的分类相似。

    展开全文
  • “数据包”中的文件是某课程的学习数据,包括3部分内容: “入学信息”,包括学生的性别、民族、外语语种、高考分数、省份等信息; “线上学习数据”,是学生在线上的活动记录,反应了线上学习情况(每个文件...
  • R语言期末大作业

    万次阅读 多人点赞 2019-07-16 12:10:52
    自选数据集对之进行相应处理 一、题目要求 数据分析与挖掘要求 (1)按照后续分析需求,对数据进行预处理。 (2)描述性统计:选择...(4)数据挖掘 分别利用分类、聚类以及时间序列方法挖掘蕴含在数据中的模式...

    自选数据集对之进行相应处理

    一、题目要求

    数据分析与挖掘要求

    (1)按照后续分析需求,对数据进行预处理。

    (2)描述性统计:选择合适的方法对数据进行统计分析。包括对数值型和类别型属性的统计,并对分析结果进行图形化的展示。

    (3)推断性统计:选择合适的假设检验方法,分析属性间的相关性、两组数据间是否具有显著性差异,并得出结论。

    (4)数据挖掘

    分别利用分类、聚类以及时间序列方法挖掘蕴含在数据中的模式。

    注意,对聚类结果分析聚簇特征,必要时可画图分析。

    对分类结果计算准确性。

    使用时间序列分析方法可判断数据是否存在趋势、周期性等特征,或对数据进行预测。
    

    (5)附加题:除了上述要求,自由选择方法,分析数据特征或挖掘蕴涵模式,并展示结果,如地理热图等

    数据分析与挖掘要求

    (1)按照后续分析需求,对数据进行预处理。

    (2)描述性统计:选择合适的方法对数据进行统计分析。包括对数值型和类别型属性的统计,并对分析结果进行图形化的展示。

    (3)推断性统计:选择合适的假设检验方法,分析属性间的相关性、两组数据间是否具有显著性差异,并得出结论。

    (4)数据挖掘

    分别利用分类、聚类以及时间序列方法挖掘蕴含在数据中的模式。

    注意,对聚类结果分析聚簇特征,必要时可画图分析。

    对分类结果计算准确性。

    使用时间序列分析方法可判断数据是否存在趋势、周期性等特征,或对数据进行预测。
    

    (5)附加题:除了上述要求,自由选择方法,分析数据特征或挖掘蕴涵模式,并展示结果,如地理热图等

    二具体

    一.大作业目的

    针对视频游戏的销量分析,当前各大游戏平台,游戏发售情况各不相同,具体分析各大厂商发售的游戏以及在市场中的流行因素就具有极大的现实意义,通过对其的分析能让厂商抓住市场动向从而推出受玩家欢迎的游戏。
    二.大作业内容
    数据说明:
    在这里插入图片描述
    三.实现步骤

    1.  打开R编辑器。
      
    2.  导入数据,编写代码。
      
    3.  调试代码。
      
    4.  撰写报告。
      

    四.实验结果
    第一步:导入对应的包,并通读入需要分析的CSV文档

    在这里插入图片描述

    第二步:通过head和summary,和str语句查看当前的数据量和各列数据的情况。

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    由上图可知一共有16列即16个字段,16720行数据

    第三步:进行数据预处理

    最终目的探究影响游戏销量的主要因素是什么?我们先对数据进行预处理。

    (1)#将发布年份和用户得分从字符串改为数字

    game_df$Year_of_Release
    = suppressWarnings(as.numeric(as.character(game_df$Year_of_Release)))
    
    game_df$User_Score
    = suppressWarnings(as.numeric(as.character(game_df$User_Score)))
    

    2)#过滤发布时间小于2018年的

    game_df
    <- game_df %>% filter(game_df$Year_of_Release<=2018)
    
    game_df
    <- game_df %>% arrange(desc(Year_of_Release))
    

    3)#再次查看数据集

    summary(game_df)
    

    在这里插入图片描述

    第四步:进行描述性统计

    (1)统计全球销量大于2000万的顶级游戏

    我们首先对表格中游戏销量划分统计,通过ggplot绘制直方图分析。通过下图我们当前数据中可以看到全球游戏流行情况。
    在这里插入图片描述

    			图5 全球顶级游戏销售情况
    

    (2)修改数据集中的评分变量为新的等级便于分析对比

    #在评分变量中,我们有tbd和k-a,我将它们分别改为na和e
    
    df_2$Rating[df_2$Rating
    == 'K-A' & !is.na(df_2$Rating) ] <- 'E'
    
    df_2$Rating[df_2$Rating
    == 'RP' & !is.na(df_2$Rating) ] <- NA
    

    #将[RP,EC,E,E10+,T,M,AO]改为[NA,1,2,3,4,5,6]作为因子,

    ##并分配给新的RatingN变量

    df_2$Ratingn
    <- as.numeric(as.character(factor(df_2$Rating, 
    
                            levels
    =c("RP", "EC", "E" ,"E10+",
    "T", "M","AO"),
    
                            labels =
    c(NA,1,2,3,4,5,6))))
    

    (3)
    #根据图表,最热门的游戏是:WII运动,超级马里奥。

    #但这在地区上可能有所不同。让我们检查一下

    #哪些游戏在哪个地区销售;日本、北美、欧洲和其他国家(非洲、亚洲等)

    #每个地区对最高销售额有不同的限制(前5名游戏)

    在这里插入图片描述

    #在不同地区销售的前5款游戏,根据这张图,可得出结论;

    #日本:在DS和GB:平台模拟益智类游戏

    #北美:WII和NES:体育平台类游戏

    #欧洲:WII和DS:运动杂项平台类游戏

    #其他:在PS2和WII中:动作体育比赛类游戏
    (3)#每一年发布的游戏数量是多少?

    在这里插入图片描述

    #如我们所见,大约在2008年和2009年,是销售不同类型游戏的高峰期。

    #最近,游戏变得越来越耗时,需要更长的开发时间

    #时间和更高的成本,所以发布的数量减少了。

    (4)将游戏平台进行分类处理

    #分类变量

    #我们有31个不同的平台。当然,其中一些属于同一类(电脑、索尼、任天堂)

    #10个内部平台

    nintendoplatforms
    =
    c("3DS","DS","GB","GBA","N64","GC",
    "NES","SNES","Wii","WiiU")
    
    #
    

    索尼平台

    sonyplatforms
    =
    c("PS","PS2","PSP","PS3","PS4","PSV")
    

    #世嘉平台

    segaplatforms
    = c("GEN","SCD","DC","GG")
    

    #微软平台

    msplatforms
    = c("XB","X360", "XOne")
    

    #其他平台

    otherplatforms
    =
    c("2600","3DO","NG","PCFX","TG16")
    

    #把个人电脑单独放在电脑里

    df_2$Platformvendor[df_2$Platform
    %in% nintendoplatforms] <- "nintendo"
    
    df_2$Platformvendor[df_2$Platform
    %in% sonyplatforms] <- "sony"
    
    df_2$Platformvendor[df_2$Platform
    %in% msplatforms] <- "microsoft"
    
    df_2$Platformvendor[df_2$Platform
    %in% segaplatforms] <- "sega"
    
    df_2$Platformvendor[df_2$Platform
    == "PC"] <- "computer"     # 
    for computer
    
    df_2$Platformvendor[is.na(df_2$Platformvendor)]
    <- "other"
    

    绘图展现
    在这里插入图片描述

    #根据这张图表,2008-2009年似乎是游戏总销量和总发行量的最高峰

    #下降得太快了。也许新一代的青少年,不太喜欢玩游戏。

    (5)接下来展示销售额超过1000万的游戏。
    在这里插入图片描述

    #我们可以很容易地看到,在整个世界;

    # 1号平台:索尼,全球销售3549.9百万
    
    # 2号平台:任天堂,全球销售额3469.7百万
    
    # 3号平台:微软,全球销售1372.9 百万
    
    # 4号平台:电脑,全球销售 额256.6百万
    
    # 5号平台:其他,全球销售额123.3百万
    
    # 6号平台:世嘉,全球销售额48.7百万。
    

    (6) 检查哪家出版商在全球销售中占很大比例:

    在这里插入图片描述

                     图 10 各厂商全球游戏销量
    

    #前5名出版商是:

    # 1号平台:任天堂, 全球销售额1786.7百万
    
    # 2号平台:美国艺电,全球销售额1100百万
    
    # 3号平台:动视公司,全球销售额725.1百万
    
    # 4号平台:索尼电脑娱乐,全球销售额606.3百万
    
    # 5号平台:育碧,全球销售额470.2百万
    

    (7)检查一下,哪个发行商的什么类型的游戏在哪个地区流行?
    在这里插入图片描述

    #根据此图,我们可以理解:

    #任天堂平台聚焦前三大游戏流派:平台、角色扮演、杂项

    #美国艺电聚焦前三大游戏流派:运动、动作、赛车

    #动视聚焦前三大游戏流派:动作、射击、运动

    #索尼电脑娱乐聚焦前三大游戏流派:杂项、运动、动作

    #育碧聚焦前三大游戏流派:动作、杂项、模拟

    #2k聚焦前三种游戏类型:运动、动作、射击

    第四步:推断性分析

    推断性统计:选择合适的R函数进行如下假设检验,并得出结论。

    (1)分析北美销量与日本销量间是否具有相关性。

    (2)分析北美的销量和日本的销量是否具有显著差异。

    (1)分析北美销量与日本销量间是否具有相关性。

    使用cor函数计算北美销量与日本销量的Pearson相关系数,Spearman相关系数,Kendall相关系数。

    使用格式为:

    *cor(x, use= , method= )
    cor(newac M i l d . i n j u r i e s , n e w a c Mild.injuries,newac Mild.injuries,newacVictims)
    cor(newac M i l d . i n j u r i e s , n e w a c Mild.injuries,newac Mild.injuries,newacVictims,method =
    “spearman”)
    cor(newac M i l d . i n j u r i e s , n e w a c Mild.injuries,newac Mild.injuries,newacVictims,method =
    “kendall”)
    在这里*插入图片描述

    由结果知三种相关系数区别很大,故北美销量与日本销量没有很强的相关性。

    2)分析北美的销量和日本的销量是否具有显著差异

    利用Wilcoxon秩和检验来进行假设检验。

    假设北美销量远远大于日本销量
    在这里插入图片描述

    P值大于0.05,接受原假设,即北美的销量远大于日本的销量。

    第五步:数据挖掘

    进行聚类分析

    (1)聚类:针对如下目标进行聚类分析,并针对生成的聚簇,分析每个聚簇中数据的特征。

    1)根据游戏发售数对所有年份划分聚簇,分析各聚簇中事件的分布特征。

    #聚类

    *count <- table(df_2$Year_of_Release)
    distance
    <- dist(count)
    c.hc
    <-hclust(distance)
    plot(c.hc,hang
    = -1)
    在这里插入*图片描述

    由图体现了不同年份游戏发售数的差异性及相似性。

    2)根据游戏发售数对每个年份划分聚簇,分析各聚簇特征。

    *c.hc <- hclust(distance,method =
    “ward.D”)
    r <- rect.hclust(c.hc,k= 3)
    *在这里插入图片描述

    (2)时间序列:将数据集按照处理成时间序列形式的数据

    一个数值型向量或数据框中的一列可通过ts()函数存储为时序对象:

    myseries
    <- ts(data, start=, end=, frequency=)
    

    其中myseries是生成的时序对象,data是原始的包含观测值的数值型向量,start参数和end参数给出时序的起始时间和终止时间,frequency为每个单位时

    间所包含的观测值数量。

    1)针对每个年份游戏发售数生成时间序列对象。

    #时间序列

    *myseries<-ts(df_2$Year_of_Release,start
    = 1980,end=1991,frequency =12 )
    myseries
    在*这里插入图片描述

    *plot(myseries)
    myseries.subset<-window(myseries,start=c(1980,1),end=c(1989,12))
    myseries.subset
    在这*里插入图片描述

    plot(myseries.subset,col=“blue”)
    在这里插入图片描述

    从图中看出从1980年1月到1990年12月这十年中,每年游戏发售数都在大幅波动

    第六步:数据挖掘

    接下来进行预测分析

    根据从这个数据集可以学到的模式来预测未来游戏的销量。

    #建模

    D_model
    <-  df_2[,c('NA_Sales',
    
                      'Name',
    
                      'Year_of_Release',
    
                      'Publisher',
    
                      'Platform',
    
                      'Genre',
    
                      'Critic_Score',
    
                      'Critic_Count',
    
                      'User_Score',
    
                      'User_Count')]
    
     
    
    naPerc<-apply(D_model,2,
    function(x){length(which(is.na(x)))/dim(D_model)[1]})
    
    naPerc
    

    #对于缺少一些值(如名称和流派)的变量,我们只需删除即可
    ##有缺失值的观察结果没有太大影响。对于其他变量来说是一个很大比例的缺失值,袋装决策树是用来输入这些值。80%以上的观察值用于训练模型,以下10%用于选择超参数和最近10%来测试模型。

    #删除类型和名称中缺少VAL的观察结果

    D_model
    <- D_model %>% filter(!is.na(Genre)&!is.na(Name))

    #用缺失值输入其他预测因子的数据

    #保留最近的10%作为测试数据

    preproc
    <- preProcess(D_model[,-1], method = c("bagImpute")) #  中位数的选择
    
    X_train
    <- predict(preproc, D_model[D_model$Year_of_Release <=
    quantile(D_model$Year_of_Release, .9),-1])
    
    X_test
    <- predict(preproc, D_model[D_model$Year_of_Release >
    quantile(D_model$Year_of_Release, .9),-1])
    
    Y_test
    <- D_model[1:dim(X_test)[1],1]
    
    length(Y_test)==dim(X_test[1])[1]
    
    #
    [1] TRUE
    
    #安装扩充包
    
    Y_train
    <- D_model[dim(X_test)[1]+1:dim(X_train)[1],1]
    
    length(Y_train)==dim(X_train[1])[1]
    
    #
    [1] TRUE
    
    #安装扩充包
    
    D_train
    <- cbind(Y_train,X_train)
    
    train_indx
    <- which(D_train$Year_of_Release<quantile(D_train$Year_of_Release,0.875))
    

    特征工程

    ##发行商应该是影响游戏销售的一个重要因素。然而,由于

    两个原因,这个变量不能直接在模型中使用。

    ##首先,这个分类变量包含太多的类别。

    ##第二,在测试集中可能会有一些从未有过的发布者

    ##通过训练模型得出结论。

    #使用过去四年每个发行商 每场游戏的平均销售量。

    ##在训练集中。过去四年里的任何一个游戏,如果发布服务器尚未发布,则此值将为0

    P_avg_Sales  <-D_train%>%
    
     
    filter(Year_of_Release>=max(Year_of_Release)-3)%>% 
    
      group_by(Publisher)%>% 
    
      mutate(avgSales =
    mean(Y_train))%>%ungroup()%>%
    
      select(Publisher,avgSales)%>% unique()
    
     
    
    D_train<-
    left_join(D_train,P_avg_Sales,by="Publisher")
    
    D_train[is.na(D_train)]<-0
    
    D_train
    <- D_train%>% select(-Publisher,-Name)
    
    X_test
    <- left_join(X_test,P_avg_Sales,by="Publisher")
    
    X_test[is.na(X_test)]<-0
    
    X_test
    <- X_test%>% select(-Publisher,-Name)
    
    #定中心和缩放
    

    #最后,集中并缩放所有数值变量(发布年份除外)。

    cs
    <-
    preProcess(D_train[,c(5:9)],method=c("center","scale"))
    
    D_train
    <- cbind(D_train[,c(1:4)],predict(cs,D_train[,c(5:9)]))
    
    cs
    <-
    preProcess(X_test[,c(4:8)],method=c("center","scale"))
    
    X_test
    <- cbind(X_test[,c(1:3)],predict(cs,X_test[,c(4:8)]))
    

    #查看用于培训模型的最终数据
    head(D_train)

    .#与健全性检查一样,预测因子的相关性不高。

    *cormax
    <- cor(D_train[,c(5:9)])
    corrplot(cormax,method=“number”)
    #*这里评估的三个模型是线性回归,支持向量机和随机林。

    #####线性回归

    start.time
    <- Sys.time()

    ctrl
    <- trainControl(method=‘LGOCV’,

                     index = list(TrainSet = train_indx))
    

    set.seed(666)

    M_base
    <- train(Y_train~Year_of_Release+Genre+Critic_Score+

                  Critic_Count+User_Score+User_Count+Platform,
    

    weights=exp(D_train Y e a r o f R e l e a s e − m i n ( D t r a i n Year_of_Release-min(D_train YearofReleasemin(DtrainYear_of_Release)+1),#为最近的数据增加权重

                data=D_train,
    
                trControl=ctrl,
    
                method="lm")
    

    train_p_b
    <- predict(M_base,D_train)

    test_p_b
    <- predict(M_base,X_test)

    RMSE(train_p_b,
    D_train$Y_train) #

    [1] 0.7889106

    M_base$results[‘RMSE’]

    验证错误

    RMSE

    [1] 0.5642332

    end.time
    <- Sys.time()

    time.taken
    <- end.time - start.time

    time.taken

    #线性回归时间差2.771428秒
    在这里插入图片描述

    #####支持向量机

    start.time
    <- Sys.time()

    set.seed(666)

    M_svm
    <- train(Y_train~Year_of_Release+Genre+Critic_Score+

    Critic_Count+User_Score+User_Count+Platform+avgSales,

               data=D_train,
    
               weights=exp(D_train$Year_of_Release-min(D_train$Year_of_Release)+1),
    
               method="svmRadial",
    
               trControl=ctrl)
    

    train_p_svm
    <- predict(M_svm,D_train)

    test_p_svm<-
    predict(M_svm,X_test)

    RMSE(train_p_svm,
    D_train$Y_train)

    [1] 0.7430017

    M_svm r e s u l t s [ r o w . n a m e s ( M s v m results[row.names(M_svm results[row.names(MsvmbestTune),‘RMSE’]#
    验证错误

    [1] 0.5193268

    end.time
    <- Sys.time()

    time.taken
    <- end.time - start.time

    time.taken

    ##支持向量机时差2.391262分钟

    #####随机森林

    start.time
    <- Sys.time()

    set.seed(666)

    M_rf
    <- train(Y_train~Year_of_Release+Genre+Critic_Score+

    Critic_Count+User_Score+User_Count+Platform+avgSales,

              weights=exp(D_train$Year_of_Release-min(D_train$Year_of_Release)+1),#
    

    more weights for recent data

              data=D_train,
    
              method="rf",
    
              tuneLength=2,
    
              trControl=ctrl)
    

    train_p_rf
    <- predict(M_rf,D_train)

    test_p_rf<-
    predict(M_rf,X_test)

    RMSE(train_p_rf,
    D_train$Y_train)

    ##[1]
    0.7375024

    M_rf r e s u l t s [ r o w . n a m e s ( M r f results[row.names(M_rf results[row.names(MrfbestTune),‘RMSE’]#
    验证错误

    [1] 0.5318704

    end.time
    <- Sys.time()

    time.taken
    <- end.time - start.time

    time.taken

    ##随机森林15.03902分钟时差

    20.#下图汇总了三个模型的验证结果,以供比较。注意,只有一个验证

    #这里使用set,即10%秒的最新数据。

    modelList
    <- list(lm=M_base,

                  svm=M_svm,
    
                  rf=M_rf)
    

    resamps<-
    resamples(modelList)

    bwplot(resamps)

    ##支持向量机性能最好。

    ##与SVM相比,随机林的性能稍差。

    ##线性回归的表现最差。

    RMSE(test_p_b,
    Y_test) #线性回归

    [1] 0.3711851

    RMSE(test_p_rf,
    Y_test) # 随机森林

    [1] 0.3720681

    RMSE(test_p_svm,
    Y_test) # 支持向量机

    [1] 0.3374091

    test_stacked
    <-(test_p_b+test_p_rf+test_p_svm)/3

    RMSE(test_stacked,
    Y_test)

    [1] 0.3374739

    下图汇总了三个模型的验证结果,以供比较。请注意,这里只使用了一个验证集,即10%的最新数据。他们的表演实际上非常接近。

    •训练线性回归:0.564 rmse,执行时间:2.771428秒

    •支持向量机训练:0.519 rmse,执行时间:

    2.391262分钟。

    •随机森林训练:0.531 rmse,执行时间:15.03902分钟

    在这里插入图片描述

    从上图可以看出,支持向量机在MAE部分已经领先了很多;在RMSE线性回归和随机森林捕获支持向量机。

    •线性回归测试:0.371 rmse

    •支持向量机测试:0.372 rmse

    •随机森林测试:0.337 rmse

    六.心得体会

    通过本次的R语言实践,不断加深了对R语言的认识,熟悉了相关数据处理方法,对部分包的使用更加熟练。R语言是一门强大的语言,我们需要多学习,深入的去理解相关数据分析方法以及其可视化展现的方法。

    展开全文
  • R语言分类(SVM KNN LDA等)与回归代码+原始数据+分析报告,数据挖掘大作业
  • R语言NBA球员数据挖掘简单实现

    千次阅读 热门讨论 2018-05-18 09:28:40
    数据集下载地址: 链接:https://pan.baidu.com/s/1KN_A9JLMvHcl0hHTBSQ4HA 提取码:spsa 第一步骤:(导入csv数据) 使用read.table()导入一个带分隔符的文本文件,其输出类型为数据框。语法如下: read.table...
  • R语言大作业(全国2000-2019年人口各项数据分析)

    万次阅读 多人点赞 2020-06-16 18:54:59
    综合运用本学期所学统计学理论知识、R语言编程技巧和数据分析案例等内容,根据个人兴趣点,自行收集数据、整理数据、展示数据、分析数据挖掘数据价值。能够正确合理使用R语言实现数据分析,并将此案例整理成数据...
  • R语言数据挖掘(关联规则、聚类算法等)实验内容和步骤:数据概览产品分析性别统计畅销品年龄统计城市居住时间分析查找顶级消费者关联规则分析聚类 实验内容和步骤: 一、 实验内容: 对原始数据进行清洗; 使用R...
  • 文章目录缺失值的识别与处理查看原始数据分析缺失值的模式及机制缺失数据模式缺失数据机制分析当前数据处理缺失值插补值的评价总的代码参考 第一次作业 缺失值的识别与处理 总的思路: 查看数据,进行分析 -> ...
  • R语言实现SVM预测的代码,简单但是亲测可用。(下载后用记事本打开即可) library(xlsx) library(e1071) #———— 1、加载数据 #训练集 #预测集 #———— 2、数据整理 #建立模型 #预测
  • 本节书摘来自华章出版社《R语言数据挖掘最佳实践和经典案例》一 书中的第1章,第1.3节,作者:(澳)Yanchang Zhao,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 数据集 本节简单地介绍本书中将...
  • Coursera data science课程 第二次大作业
  • 关注公众号凡花花的小窝,含有更多更全面的计算机专业编程考研...dim(actionuser) head(actionuser) #代码 7-9 library(foreign) mydataset (“C:\Users\Think\Desktop\居民储蓄调查数据.sav”) mydataset (mydataset)
  • 数据分析与R软件课后习题答案,第一章和第三章的答案,有代码和数据
  • 数据挖掘大作业之实现K-Means,K-Means++,Minibatch-KMeans 主要参考:https://www.cnblogs.com/huangyc/p/10224045.html,sklearn库。。。 定义:K-means:一种聚类算法,属于基于中心的聚类算法,无监督学习。 解释...
  • R语言可视化平台 多个数据集,同一个代码实现可视化挖掘R语言有强大的可视化功能,不在进行过多阐述,...R语言中还有一些其他较为普遍的数据集读入方法,比如程序代码包,R文件,工作空间等。如下读取 **install...
  • 一共有三种文档,每种分别取一种作为...#数据离散化 str(data) for(i in 1:501) { if(data[i,4]=='英语'){data[i,4]="YES";} else {data[i,4]="NO";} } #将更新后的数据写入文件中 data <- rename(data,c(外语语种 =
  • 直方图:数据取值范围分成若干区间,区间长度为组距,高度的频率/组距,这样直方图总面积为1。 直方图可以对总体概率密度f(x)进行估计,这就是拟合分布曲线。 (4)茎叶图: The decimal point is 1 digit(s) to the...
  • 前一阵子完成了一个约90w条json数据的大数据新闻分析作业,发现对于类似数据格式的以R语言为分析工具的数据分析博客不是很全,相关信息十分零散。因此我整理了一些处理超大文本的方法和技巧,其中借鉴了一些博主的...
  • 数据挖掘R语言实战(抽样)

    千次阅读 2017-04-17 15:01:11
    抽样: ...getdata()函数获取分层抽样的数据集。       整群抽样:sampling包中的cluster函数,用法:cluster(data,clustername,size,method=c('...............'),pik,description)
  • R语言:第4章课后题及附加作业

    千次阅读 2020-10-22 21:22:32
    R语言:第4章课后题及附增作业第4章课后题1、求最值及中位数2、绘制正态曲线3、练习条件分支语句4、判断101~200的素数个数5、练习自定义函数第4章附增作业1、找3的倍数2、编写判断质数的函数3、编写函数 f(x) = 4x^3...
  • R语言数据分析

    千次阅读 2020-01-31 12:15:36
    R语言数据分析数据分析概述数据分析的原则 数据分析概述 数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用。 数据分析的原则 数据...
  • 本节书摘来自华章计算机《R语言数据分析与挖掘实战》一书中的第1章,第1.3节,作者 张良均,云伟标,王路,刘晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 数据挖掘的基本任务 数据挖掘的...
  • 我前面写过 单基因GSEA分析策略...发表在Cancer Management and Research的简单数据挖掘杂志:Apolipoprotein C1 (APOC1) promotes tumor progression via MAPK signaling pathways in colorectal cancer,仔细...
  • R语言——基础知识呕心沥血汇总

    千次阅读 多人点赞 2020-10-15 01:17:17
    R语言基础知识汇总

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,296
精华内容 2,118
关键字:

r语言数据挖掘大作业