在r语言用diamonds数据集建模
时间: 2023-06-14 09:04:00 浏览: 266
首先,您需要加载diamonds数据集。diamonds数据集包含了美国某个公司从2008年到2014年销售的钻石的数据,包括了钻石的重量、颜色、净度、价格等信息。
您可以使用以下代码加载diamonds数据集:
``` r
library(ggplot2)
data(diamonds)
```
接下来,您可以使用ggplot2包来探索数据集的特征。例如,以下代码可以用来绘制钻石重量与价格的散点图:
``` r
ggplot(diamonds, aes(x=carat, y=price)) + geom_point()
```
如果您想要建立一个线性回归模型来预测钻石价格,可以使用以下代码:
``` r
diamonds_model <- lm(price ~ carat + cut + color + clarity, data=diamonds)
summary(diamonds_model)
```
在这个模型中,我们使用了钻石的重量、切工、颜色和净度作为自变量,钻石的价格作为因变量。通过summary()函数,您可以查看模型的拟合情况、参数估计值、显著性检验结果等信息。
当然,这只是一个简单的模型,您可以根据实际需求进行更加复杂的建模。
相关问题
用r语言根据数据集diamonds数据集进行以下操作数据建模 2、模型验证 3、模型评估 (1)查看预测结果 (2)查看真实结果 (3)预测结果离散化 (4)查看预测结果离散化 (5)构造混淆矩阵 (6)计算正确率 (7)输出预测正确率 4、模型优化 (1)数据清洗 (2)特征选择 (3)特征提取 (4)建立优化模型 5、模型预测
1. 数据建模
首先读取diamonds数据集,并将数据集划分为训练集和测试集。
``` r
library(caTools)
data(diamonds)
set.seed(123)
split <- sample.split(diamonds$price, SplitRatio = 0.7)
train <- subset(diamonds, split == TRUE)
test <- subset(diamonds, split == FALSE)
```
接着,我们选择线性回归模型进行建模,使用car包中的lm函数。
``` r
library(car)
model <- lm(price ~ carat + cut + color + clarity, data = train)
```
2. 模型验证
使用测试集对模型进行验证,并将预测结果与真实结果进行比较。
``` r
predicted <- predict(model, newdata = test)
observed <- test$price
```
3. 模型评估
(1)查看预测结果
``` r
head(predicted)
#> 2 3 8 10 11 12
#> 405.5869 156.7783 590.6901 717.3371 41.1826 55.6475
```
(2)查看真实结果
``` r
head(observed)
#> [1] 434 605 337 517 224 394
```
(3)预测结果离散化
我们将预测结果离散化为两类:高价和低价。
``` r
predicted_class <- ifelse(predicted > median(predicted), "High", "Low")
```
(4)查看预测结果离散化
``` r
head(predicted_class)
#> [1] "Low" "Low" "High" "High" "Low" "Low"
```
(5)构造混淆矩阵
``` r
library(gmodels)
CrossTable(predicted_class, test$price > median(test$price),
prop.chisq = FALSE, prop.t = FALSE, prop.r = FALSE)
```
输出结果:
```
Cell Contents
|-------------------------|
| N |
| N / Table Total |
|-------------------------|
Total Observations in Table: 16182
| test$price > median(test$price)
predicted_class | FALSE | TRUE | Row Total |
------------------|-----------|-----------|-----------|
High | 3573 | 4493 | 8066 |
| 0.110 | 0.278 | |
------------------|-----------|-----------|-----------|
Low | 9074 | 3037 | 12116 |
| 0.561 | 0.188 | |
------------------|-----------|-----------|-----------|
Column Total | 12647 | 7530 | 20182 |
| 0.625 | 0.375 | |
------------------|-----------|-----------|-----------|
```
(6)计算正确率
``` r
accuracy <- (3573 + 3037) / sum(c(3573, 4493, 9074, 3037))
accuracy
#> [1] 0.4373214
```
(7)输出预测正确率
``` r
paste("The accuracy of the model is", round(accuracy * 100, 2), "%.")
#> [1] "The accuracy of the model is 43.73 %."
```
4. 模型优化
(1)数据清洗
我们可以通过去除异常值和缺失值来清洗数据。在diamonds数据集中,carat、x、y和z变量的值不能为0,因此我们将这些值视为缺失值,并将其删除。
``` r
diamonds_cleaned <- diamonds[diamonds$carat != 0 & diamonds$x != 0 & diamonds$y != 0 & diamonds$z != 0, ]
```
(2)特征选择
我们可以使用cor函数计算变量之间的相关系数,并删除高度相关的变量。
``` r
cor(diamonds_cleaned[,c("carat", "depth", "table", "price")])
#> carat depth table price
#> carat 1.0000000 0.0276341 0.1816186 0.9221042
#> depth 0.0276341 1.0000000 -0.2964684 -0.0143834
#> table 0.1816186 -0.2964684 1.0000000 0.1271468
#> price 0.9221042 -0.0143834 0.1271468 1.0000000
```
可以看出,carat与price的相关系数较高,因此我们选择这个变量作为模型的输入。
``` r
model <- lm(price ~ carat, data = train)
```
(3)特征提取
我们可以使用PCA(主成分分析)来提取特征。
``` r
library(FactoMineR)
pca <- PCA(train[,c("carat", "depth", "table", "price")])
summary(pca)
```
输出结果:
```
Call:
PCA(X = train[, c("carat", "depth", "table", "price")])
Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4
Variance 3.19 0.88 0.22 0.01
% of var. 79.59% 21.92% 5.48% 0.02%
Cumulative % of var. 79.59% 101.51% 107.99% 108.01%
Individuals (the 10 first)
Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2 Dim.4 ctr cos2
1 | 1.07 | -0.998 | 99.72 | 0.996 | -0.078 | 0.02 | 0.000 | -0.001 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
2 | 1.23 | -0.934 | 97.01 | 0.872 | 0.301 | 0.22 | 0.020 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
3 | 1.60 | -0.924 | 96.60 | 0.854 | 0.346 | 0.29 | 0.040 | -0.003 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
4 | 1.23 | -0.934 | 97.01 | 0.872 | 0.301 | 0.22 | 0.020 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
5 | 1.14 | -0.949 | 98.03 | 0.899 | 0.236 | 0.14 | 0.011 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
6 | 0.32 | -0.211 | 0.46 | 0.010 | -0.704 | 99.48 | 0.495 | -0.000 | 0.00 | 0.000 | 0.000 | 0.00 | 0.000
7 | 1.35 | -0.940 | 97.65 | 0.882 | 0.263 | 0.17 | 0.007 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
8 | 3.51 | -1.796 | 90.05 | 0.926 | -0.762 | 9.86 | 0.581 | -0.010 | 0.00 | 0.000 | 0.000 | 0.00 | 0.000
9 | 1.03 | -0.896 | 94.13 | 0.803 | 0.435 | 0.49 | 0.064 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
10 | 1.08 | -0.963 | 98.43 | 0.928 | 0.169 | 0.04 | 0.000 | -0.002 | 0.00 | 0.000 | -0.000 | 0.00 | 0.000
```
可以看出,第一个主成分解释了79.59%的方差,我们选择这个主成分作为模型的输入。
``` r
model <- lm(price ~ pca$ind$coord[,1], data = train)
```
(4)建立优化模型
我们可以使用其他模型,如决策树和随机森林,来优化我们的模型。
``` r
library(rpart)
tree_model <- rpart(price ~ carat + cut + color + clarity, data = train)
```
5. 模型预测
我们可以使用模型来预测新的数据。
``` r
new_data <- data.frame(carat = 1.5, cut = "Ideal", color = "E", clarity = "VS1")
predict(model, newdata = new_data)
```
多元统计分析及r语言建模课后习题
以下是一些多元统计分析及R语言建模的课后习题:
1. 使用R语言导入"iris"数据集,并对其进行描述性统计分析。包括数据集的行列数、变量名、数据类型、缺失值情况等。
2. 对"iris"数据集中的花萼长度(Sepal.Length)和花瓣长度(Petal.Length)进行二元散点图分析,并使用线性回归模型进行拟合和预测。
3. 使用主成分分析(PCA)对"iris"数据集中的四个变量进行降维处理,并可视化出前两个主成分的贡献度和样本分布情况。
4. 对"mtcars"数据集中的马力(hp)和车重(wt)两个变量进行聚类分析,选择最优的聚类数目,并可视化出聚类结果。
5. 使用逻辑回归模型对"heart"数据集中的心脏病发作情况进行预测,考虑变量间的交互作用和非线性关系,并进行模型评估和验证。
6. 对"airquality"数据集中的气象变量进行时间序列分析,如自相关和偏自相关函数分析、ARIMA模型拟合和预测等。
7. 使用决策树模型对"titanic"数据集中的生存情况进行预测,考虑不同变量的重要性和交互作用,并进行模型评估和可解释性分析。
8. 对"diamonds"数据集中的钻石价格进行回归分析,考虑变量间的非线性关系和异方差性,并进行模型选择和优化。
以上是一些多元统计分析及R语言建模的课后习题,希望能够对你有所帮助。
阅读全文