1. Kaggle:全球领先的数据科学平台
- Titanic (泰坦尼克号乘客数据)
- 内容:乘客的个人信息(性别、年龄、船舱等级等)及生存状态。
- 应用:分类分析(生存预测)、可视化分析(生存率分布)。
- 适合新手练习:逻辑回归、决策树、随机森林等分类模型。
House Prices (房价预测数据) 内容:房屋的各种属性(面积、卧室数、位置等)及其销售价格。 应用:回归分析(价格预测)、特征工程和模型调优。 适合学习回归模型如线性回归和XGBoost。
2. UCI Machine Learning Repository:经典数据集宝库
- Iris (鸢尾花数据)
- 内容:记录三种鸢尾花的形态特征(花瓣和花萼的长度和宽度)。
- 应用:分类分析(线性判别分析)、聚类分析(K-Means)。
- 新手练习:理解基本的分类算法和数据可视化技巧。
Wine Quality (葡萄酒质量数据) 内容:不同葡萄酒的化学特性(酸度、酒精含量等)及其质量评分。 应用:分类(高低评分)、回归(评分预测)。 适合练习特征选择和模型调优。 Adult (收入预测数据) 内容:个人的人口统计学信息(如年龄、教育程度、职业)和收入类别。 应用:二分类问题(预测收入是否高于50K美元)。 常用于逻辑回归、SVM和神经网络训练。
3. GEO:基因组数据的专业来源
- GSE1009 (肿瘤样本基因表达数据)
- 内容:不同肿瘤样本和正常样本的基因表达矩阵。
- 应用:PCA降维、热图可视化、分类建模(癌症预测)。
- 学习方向:适合高级降维方法和机器学习模型(SVM、RF)。
GSE19804 (RNA-seq数据) 内容:基因在不同条件下的表达情况,常用于疾病机制研究。 应用:基因筛选、分类分析(基于基因特征预测疾病类型)。 学习方向:适合多变量统计和深度学习模型应用。
值得下载和保存的数据集列表
示例 1:调用R自带数据集Iris进行ANOVA
# 加载内置数据集
data(iris)
# ANOVA分析花萼长度在三种类别间的显著性差异
anova_result <- aov(Sepal.Length ~ Species, data = iris)
# 输出结果
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 63.21 31.606 119.3 <2e-16 ***
## Residuals 147 38.96 0.265
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 可视化结果
library(ggplot2)
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_boxplot() +
theme_minimal() +
theme(axis.text = element_text(size = 12),
axis.title = element_text(size = 14),
plot.title = element_text(size = 16, hjust = 0.5)) +
labs(title = "ANOVA Result: Sepal Length by Species",
x = "Species", y = "Sepal Length")
示例 2:对本地数据集 Wine Quality进行小提琴图分析
library(ggplot2)
# 读取本地数据集
local_data <- read.csv("你的本地文件路径/wine_quality.csv")
# 品质分布条形图
ggplot(local_data, aes(x = factor(quality))) +
geom_bar(fill = "red", color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Quality Distribution in Wine", x = "Quality Score", y = "Count")
示例 3:对GEO数据进行热图与简单建模
# 下载并加载GEO数据集
library(GEOquery)
gse <- getGEO("GSE1009", destdir = "./")
expr_data <- exprs(gse[[1]])
# 绘制热图
library(pheatmap)
pheatmap(expr_data[1:20,], cluster_rows = TRUE, cluster_cols = TRUE,
display_numbers = FALSE, fontsize = 10)