给我一个蒂有数据的新颖的统计学安例,并进行相关统计分析
时间: 2024-05-28 07:12:51 浏览: 15
假设我们有一份关于学生体重的数据,其中包括了男女生的体重信息。我们想要分析男女生的体重是否存在显著差异。
首先,我们可以进行描述性统计分析,比如计算男女生体重的均值、标准差、最大值、最小值等,来了解数据的分布情况。此外,我们还可以绘制箱线图来观察男女生体重的分布情况。
接着,我们可以进行假设检验来验证男女生体重是否存在显著差异。假设我们设立的零假设是“男女生体重无差异”,备择假设是“男女生体重存在显著差异”。我们可以采用 t 检验或者 Mann-Whitney U 检验(非参数检验)来进行假设检验。
最后,我们可以计算男女生体重的效应大小,比如 Cohen's d 或者 Hedges' g,来评估男女生体重的差异程度。如果效应大小较大,则说明男女生体重的差异比较显著。
相关问题
给一个西瓜特征有纹理、根蒂、色泽、触感的数据表格来创建西瓜是否是好瓜的决策树
好的,以下是一个西瓜的特征数据表格,我们将使用它来创建一个决策树,预测西瓜是否是好瓜:
| 编号 | 纹理 | 根蒂 | 色泽 | 触感 | 是否是好瓜 |
| --- | --- | --- | --- | --- | --- |
| 1 | 清晰 | 蜷缩 | 青绿 | 硬挺 | 是 |
| 2 | 清晰 | 蜷缩 | 乌黑 | 硬挺 | 是 |
| 3 | 清晰 | 蜷缩 | 浅白 | 硬挺 | 否 |
| 4 | 清晰 | 稍蜷 | 浅白 | 硬挺 | 是 |
| 5 | 清晰 | 稍蜷 | 青绿 | 软粘 | 是 |
| 6 | 模糊 | 稍蜷 | 青绿 | 硬挺 | 否 |
| 7 | 模糊 | 蜷缩 | 浅白 | 硬挺 | 否 |
| 8 | 模糊 | 稍蜷 | 浅白 | 软粘 | 否 |
| 9 | 模糊 | 蜷缩 | 青绿 | 软粘 | 否 |
| 10 | 清晰 | 稍蜷 | 浅白 | 软粘 | 否 |
我们需要根据这个数据表格来创建一个决策树,以下是一个简单的决策树:
```
如果色泽是乌黑或浅白:
如果触感是硬挺:
则是好瓜
否则:
则不是好瓜
否则:
如果纹理是清晰:
如果根蒂是蜷缩:
则是好瓜
否则:
则不是好瓜
否则:
则不是好瓜
```
这个决策树的意思是,如果西瓜的色泽是乌黑或浅白,且触感是硬挺,那么它就是好瓜;如果色泽不是乌黑或浅白,那么就需要进一步判断。如果纹理是清晰,且根蒂是蜷缩,那么它就是好瓜;否则就不是好瓜。
用c++写一个判断西瓜好坏的决策树代码,并附上注释和训练数据
好的,下面是C++代码实现:
```c++
#include <iostream>
using namespace std;
// 定义西瓜的属性结构体
struct Watermelon {
int color; // 颜色,0代表青绿,1代表乌黑,2代表浅白
float root; // 根蒂,0代表蜷缩,1代表稍蜷,2代表硬挺
float sound; // 敲声,0代表沉闷,1代表浊响,2代表清脆
int good; // 是否好瓜,0代表否,1代表是
};
// 定义训练数据
Watermelon train_data[] = {
{0, 0, 0, 0},
{0, 0, 1, 0},
{1, 0, 1, 1},
{2, 0, 1, 1},
{2, 1, 0, 1},
{2, 2, 1, 0},
{1, 1, 0, 1},
{0, 2, 1, 0},
{0, 1, 0, 1},
{2, 1, 1, 1},
{0, 1, 1, 1},
{1, 0, 0, 0},
{1, 1, 1, 1},
{2, 1, 0, 0}
};
// 计算数据集中好瓜和坏瓜的个数
void count_good_bad(Watermelon *data, int len, int &good, int &bad) {
good = 0;
bad = 0;
for (int i = 0; i < len; i++) {
if (data[i].good == 1) {
good++;
} else {
bad++;
}
}
}
// 计算数据集中给定属性的某个值的好瓜和坏瓜的个数
void count_good_bad_by_attr(Watermelon *data, int len, int attr, float value, int &good, int &bad) {
good = 0;
bad = 0;
for (int i = 0; i < len; i++) {
if (data[i].good == 1 && data[i].color == value) {
good++;
} else if (data[i].good == 0 && data[i].color == value) {
bad++;
}
}
}
// 计算数据集中给定两个属性的某个值的好瓜和坏瓜的个数
void count_good_bad_by_attr(Watermelon *data, int len, int attr1, float value1, int attr2, float value2, int &good, int &bad) {
good = 0;
bad = 0;
for (int i = 0; i < len; i++) {
if (data[i].good == 1 && data[i].color == value1 && data[i].root == value2) {
good++;
} else if (data[i].good == 0 && data[i].color == value1 && data[i].root == value2) {
bad++;
}
}
}
// 计算数据集中给定三个属性的某个值的好瓜和坏瓜的个数
void count_good_bad_by_attr(Watermelon *data, int len, int attr1, float value1, int attr2, float value2, int attr3, float value3, int &good, int &bad) {
good = 0;
bad = 0;
for (int i = 0; i < len; i++) {
if (data[i].good == 1 && data[i].color == value1 && data[i].root == value2 && data[i].sound == value3) {
good++;
} else if (data[i].good == 0 && data[i].color == value1 && data[i].root == value2 && data[i].sound == value3) {
bad++;
}
}
}
// 训练决策树
void train_decision_tree(Watermelon *data, int len, int depth) {
int good, bad;
count_good_bad(data, len, good, bad);
if (good == 0 || bad == 0) {
if (good == 0) {
cout << "这是个坏瓜" << endl;
} else {
cout << "这是个好瓜" << endl;
}
return;
}
if (depth == 0) {
if (good > bad) {
cout << "这是个好瓜" << endl;
} else {
cout << "这是个坏瓜" << endl;
}
return;
}
// 选择最优属性
float info_gain, max_info_gain = -1;
int best_attr = -1;
for (int i = 0; i < 3; i++) {
int num_values;
float values[3];
if (i == 0) {
num_values = 3;
values[0] = 0;
values[1] = 1;
values[2] = 2;
} else {
num_values = 2;
values[0] = 0;
values[1] = 1;
}
for (int j = 0; j < num_values; j++) {
int temp_good, temp_bad;
if (i == 0) {
count_good_bad_by_attr(data, len, i, values[j], temp_good, temp_bad);
} else if (i == 1) {
count_good_bad_by_attr(data, len, i, values[j], 2, 0, temp_good, temp_bad);
} else {
count_good_bad_by_attr(data, len, i, values[j], 0, 0, 1, 1, temp_good, temp_bad);
}
float p_good = (float)temp_good / (float)(temp_good + temp_bad);
float p_bad = (float)temp_bad / (float)(temp_good + temp_bad);
float temp_info_gain = -p_good * log2(p_good) - p_bad * log2(p_bad);
if (temp_info_gain > max_info_gain) {
max_info_gain = temp_info_gain;
best_attr = i;
}
}
}
// 根据最优属性划分子数据集并递归训练
if (best_attr == 0) {
int num_values = 3;
float values[3];
values[0] = 0;
values[1] = 1;
values[2] = 2;
for (int j = 0; j < num_values; j++) {
int temp_good, temp_bad;
count_good_bad_by_attr(data, len, best_attr, values[j], temp_good, temp_bad);
cout << "如果颜色是" << values[j] << ":";
if (temp_good == 0 || temp_bad == 0) {
if (temp_good == 0) {
cout << "这是个坏瓜" << endl;
} else {
cout << "这是个好瓜" << endl;
}
} else {
Watermelon *sub_data = new Watermelon[temp_good + temp_bad];
int index = 0;
for (int k = 0; k < len; k++) {
if (data[k].color == values[j]) {
sub_data[index++] = data[k];
}
}
train_decision_tree(sub_data, index, depth - 1);
}
}
} else if (best_attr == 1) {
int num_values = 2;
float values[2];
values[0] = 0;
values[1] = 1;
for (int j = 0; j < num_values; j++) {
int temp_good, temp_bad;
count_good_bad_by_attr(data, len, best_attr, values[j], 2, 0, temp_good, temp_bad);
cout << "如果根蒂是" << values[j] << ":";
if (temp_good == 0 || temp_bad == 0) {
if (temp_good == 0) {
cout << "这是个坏瓜" << endl;
} else {
cout << "这是个好瓜" << endl;
}
} else {
Watermelon *sub_data = new Watermelon[temp_good + temp_bad];
int index = 0;
for (int k = 0; k < len; k++) {
if (data[k].root == values[j]) {
sub_data[index++] = data[k];
}
}
train_decision_tree(sub_data, index, depth - 1);
}
}
} else {
int num_values = 2;
float values[2];
values[0] = 0;
values[1] = 1;
for (int j = 0; j < num_values; j++) {
int temp_good, temp_bad;
count_good_bad_by_attr(data, len, best_attr, values[j], 0, 0, 1, 1, temp_good, temp_bad);
cout << "如果敲声是" << values[j] << ":";
if (temp_good == 0 || temp_bad == 0) {
if (temp_good == 0) {
cout << "这是个坏瓜" << endl;
} else {
cout << "这是个好瓜" << endl;
}
} else {
Watermelon *sub_data = new Watermelon[temp_good + temp_bad];
int index = 0;
for (int k = 0; k < len; k++) {
if (data[k].sound == values[j]) {
sub_data[index++] = data[k];
}
}
train_decision_tree(sub_data, index, depth - 1);
}
}
}
}
int main() {
train_decision_tree(train_data, 14, 3);
return 0;
}
```
训练数据如下:
```
颜色 根蒂 敲声 是否好瓜
0 0 0 0
0 0 1 0
1 0 1 1
2 0 1 1
2 1 0 1
2 2 1 0
1 1 0 1
0 2 1 0
0 1 0 1
2 1 1 1
0 1 1 1
1 0 0 0
1 1 1 1
2 1 0 0
```
其中,颜色属性的值为0代表青绿,1代表乌黑,2代表浅白;根蒂属性的值为0代表蜷缩,1代表稍蜷,2代表硬挺;敲声属性的值为0代表沉闷,1代表浊响,2代表清脆;是否好瓜属性的值为0代表否,1代表是。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)