使用R语言对影响大学录取分数线因素进行分析

在这里,作为补充知识,为大家讲一下R语言怎么对数据进行分析。现目前,对于我们而言,选择一所合适的大学非常重要,针对于此,我对影响大学平均录取分数线因素进行了分析。

首先我们看看文件里面有些什么属性

0e38f5528f5f4f03bbcf3d351842fb6f.png

 然后我们进行读取文件

x<-read.csv("C:/Users/chaeli/Documents/chapter3-data/data/ch11data.csv",head=T)
x

将有录取平均线的院校作为训练样本集
train<-x[which(x$平均线!="无"),]  
train

将没有录取平均线的院校作为验证集

test<-x[which(x$平均线=="无"),]   

test

将训练样本集中的平均线转换为数值型

train$平均线<-as.numeric(as.character(train$平均线))  

查看训练样本集中的平均线情况

summary(train$平均线) 

各录取平均线院校的数量,横轴为录取平均分,纵轴为院校的数量

a<-as.data.frame(table(train$平均线))  

plot(a,xlab="录取平均分",ylab="院校的数量")

绘制院校的分布柱状图,学习训练集中的不同类型院校的数量

b<-as.data.frame(table(train$类型))

barplot(b$Freq,names.arg=b$Var1,col=rainbow(12),xlab="院校类型",ylab="院校的数量",main="院校分布")

将学校按照985和非985进行分类,并绘制分布柱状图

c<-as.data.frame(table(x$是否985))

barplot(c$Freq,names.arg=c$Var1,xlab="是否为985院校",ylab="院校的数量")

将院校重点学科数量绘制成散点图

d1<-as.data.frame(table(x$重点学科))

plot(d1,xlab="重点学科",ylab="数量")

将院校博士点数量绘制成散点图

d2<-as.data.frame(table(x$博士点))

plot(d2,xlab="博士点",ylab="数量")

#-----------------------------------------------------------------------

针对训练模型,筛选非211,985院校样本

n<-train[which(train$是否985=="否"&train$是否211=="否"),]

n

划分训练和测试数据集(3:1)

set.seed(1)

m<-dim(train)[1]

pre<-sample(m,m*0.75)

pre<-sort(pre)

train1<-n[pre,]

test1<-n[-pre,]

模型训练

train1$所在地<-as.numeric(as.factor(train1$所在地))

train1$隶属<-as.numeric(as.factor(train1$隶属))

train1$重点学科<-as.numeric(train1$重点学科)

train1$平均线<-as.numeric(as.character(train1$平均线))

#train1$是否自主招生<-as.numeric(as.factor(train1$是否自主招生))

fit<-lm(平均线~院士+硕士点+类型+重点学科+博士点+是否自主招生,data=train1)

summary(fit)

#plot(fit)

模型预测

pred<-predict(fit,test1[,c("院士","硕士点","类型","重点学科","博士点","是否自主招生")])

计算MSE

RMSE<-function(t,p)

{

  return(sqrt(mean((t-p)^2)))

}

RMSE(test1$平均线,pred)

绘制测试集真实值和预测值曲线

# 将画布分为2行2列

par(mfrow=c(2,2))

plot(1:length(test1$平均线),test1$平均线,type="l",col="blue")

plot(1:length(test1$平均线),pred,type="l",col="red")

绘制测试集真实值和预测值曲线

plot(1:length(test1$平均线),test1$平均线,type="l",col="blue",main="真实值和预测值对比曲线")

lines(1:length(test1$平均线),pred,col="red")

#----------------------------------------------------------------------------------

针对预测模型,筛选非211,985院校样本

n1<-test[which(test$是否985=="否"&test$是否211=="否"),]

n1

模型预测

pred1<-predict(fit,n1[,c("院士","硕士点","类型","重点学科","博士点")])

pred1

#----------------------------------------------------------------------------------

针对训练模型,筛选211院校样本

n2<-train[which(train$是否211=="是"),]

n2

划分训练和测试数据集(3:1)

set.seed(10)

m1<-dim(train)[1]

pre1<-sample(m1,m1*0.75)

pre1<-sort(pre1)

train2<-n2[pre1,]

test2<-n2[-pre1,]

模型训练

train2$所在地<-as.numeric(as.factor(train2$所在地))

train2$隶属<-as.numeric(as.factor(train2$隶属))

train2$重点学科<-as.numeric(train2$重点学科)

train2$平均线<-as.numeric(as.character(train2$平均线))

#train2$是否自主招生<-as.numeric(as.factor(train2$是否自主招生))

fit1<-lm(平均线~院士+硕士点+重点学科+博士点+是否自主招生,data=train2)

summary(fit1)

模型预测

pred2<-predict(fit1,test2[,c("院士","硕士点","重点学科","博士点","是否自主招生")])

计算MSE

RMSE<-function(t,p)

{

  return(sqrt(mean((t-p)^2)))

}

RMSE(test2$平均线,pred2)

绘制测试集真实值和预测值曲线

# 将画布分为2行2列

par(mfrow=c(2,2))

plot(1:length(test2$平均线),test2$平均线,type="l",col="blue")

plot(1:length(test2$平均线),pred2,type="l",col="red")

绘制测试集真实值和预测值曲线

plot(1:length(test2$平均线),test2$平均线,type="l",col="blue",main="真实值和预测值对比曲线")

lines(1:length(test2$平均线),pred2,col="red")

#----------------------------------------------------------------------------------

针对预测模型,筛选211院校样本

n3<-test[which(test$是否211=="是"),]

n3

模型预测

pred3<-predict(fit1,n3[,c("院士","硕士点","重点学科","博士点")])

pred3

相关结果:

2d7fcf23ad7a44b480d57a5e737a4db9.png

1a7de1ac12af4dd49e3810ee307c52f2.png 

258e1d2fbd4749d5a8e02945d0389252.png 

 07463884ebe846bf9aeeed7e272eacc8.png

7fae14f9214d4ab889654b607a740a10.png 

c53739663fe14c54957ec4ee15f66612.png 

146ff5379d594bdda897d640c99b9b59.png 

 45b774671f824ba98d55e092059d3bb5.png

总结:

困难:

在刚开始的时候,对于数据的处理上面出现了一些问题,因为其中一些数据是非数值型,例如所在地、隶属等属性都是非数值型,所以在预测之前,应该想办法将它们转换为数值型,但是对于类别型数据,比如是否为985等数据,又不能直接简单的转换为数值型,需要将他们先转换为因子变量(最好使用哑变量),再转换为数值型变量;

针对模型训练和模型预测时,刚开始对于待预测数据的选择不太准确,没有保持训练模型和预测模型中属性特征一致,所以导致在预测的时候出现了错误,因此,我们应该让待预测数据中的特征和训练数据中的特征保持一致,这样才能得到真正的预测结果;

在使用最开始的测试集的时候,题目要求将前面所得到的训练模型拿来进行预测,对于这里的理解有点不到位,因为测试集是筛选平均分数线为无的数据,所以没办法拿来训练,直接拿来预测即可,所以也没有计算MSE的必要;

在选择影响因素和随机种子数的时候,也出现了一些差错,因为不同的因素和种子数对于预测结果和均方误差都是不同的,所以我们尝试选择不同的影响因素和随机种子数来得到一个最优的结果。

总结分析:

训练数据模型的时候,选择的数据较多一点或者相关性更强的数据,对于预测结果会更好,得到的测试集均方误差MSE会更小,比如选5个相关性数据得到的均方误差就比选择3个相关性数据得到的均方误差要小一些,因此,我们应该根据实际情况,选择一些可能相关性更强的数据来进行训练和预测,这样得到的精确度也会越高。

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark
要对水果茶评论进行情感分析,可以使用R语言中的一些自然语言处理工具和情感分析算法。以下是一个简单的示例: 1. 首先,需要准备一个包含水果茶评论的数据集。可以使用如下命令读取一个csv文件: ``` data <- read.csv("comments.csv", stringsAsFactors = FALSE) ``` 2. 接下来,需要对评论进行预处理,包括去除停用词、词干提取和标点符号等。可以使用R语言中的`tm`包来完成这些任务。以下是一个简单的预处理示例: ``` library(tm) # 创建一个语料库 corpus <- Corpus(VectorSource(data$comment)) # 转换为小写 corpus <- tm_map(corpus, content_transformer(tolower)) # 去掉标点符号 corpus <- tm_map(corpus, removePunctuation) # 去掉数字 corpus <- tm_map(corpus, removeNumbers) # 去掉停用词 corpus <- tm_map(corpus, removeWords, stopwords("english")) # 进行词干提取 corpus <- tm_map(corpus, stemDocument) ``` 3. 接下来,可以使用情感分析算法来对评论进行情感分析。这里使用R语言中的`sentimentr`包。以下是一个简单的情感分析示例: ``` library(sentimentr) # 对每条评论进行情感分析 sentiments <- lapply(corpus, sentiment) # 将结果转换为数据框 sentiments_df <- data.frame(do.call(rbind, sentiments)) # 将情感分数添加到原始数据集中 data$sentiment_score <- sentiments_df$sentiment ``` 4. 最后,可以使用`ggplot2`包来可视化情感分析结果。以下是一个简单的示例: ``` library(ggplot2) # 绘制情感分数的直方图 ggplot(data, aes(x = sentiment_score)) + geom_histogram() + ggtitle("Sentiment Analysis of Fruit Tea Comments") ``` 以上是一个简单的示例,可以根据具体情况进行调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值