import pandas as pd data = {'形状': ['圆形', '圆形', '皱形', '皱形', '圆形', '皱形', '圆形', '皱形', '圆形'], '颜色': ['灰色', '白色', '白色', '灰色', '白色', '灰色', '白色', '灰色', '灰色'], '大小': ['饱满', '皱缩', '饱满', '饱满', '皱缩', '皱缩', '饱满', '皱缩', '皱缩'], '土壤': ['酸性', '碱性', '碱性', '酸性', '碱性', '酸性', '酸性', '碱性', '碱性'], '水分': ['多', '少', '多', '多', '少', '少', '少', '多', '少'], '日照': ['多', '多', '多', '少', '少', '多', '少', '少', '多'], '发芽': ['否', '是', '否', '是', '是', '是', '是', '否', '否']} df = pd.DataFrame(data) import math import numpy as np # 经验熵 def entropy(labels): n_labels = len(labels) if n_labels <= 1: return 0 counts = np.bincount(labels.astype(int)) probs = counts / n_labels n_classes = np.count_nonzero(probs) if n_classes <= 1: return 0 ent = 0. for i in probs: ent -= i * math.log(i, 2) return ent # 经验条件熵 def conditional_entropy(x, y): entropy_cond = 0. for i in set(x): p = float(len(x[x == i])) / len(x) entropy_cond += p * entropy(y[x == i]) return entropy_cond # 信息增益 def information_gain(x, y): return entropy(y) - conditional_entropy(x, y) # 对类别特征进行标签编码 le = LabelEncoder() categorical_cols = ['形状', '颜色', '大小', '土壤', '水分', '日照'] for col in categorical_cols: df[col] = le.fit_transform(df[col]) print('训练样本经验熵:', entropy(labels)) cond_ent = conditional_entropy(df["形状"].values.astype(int), labels) info_gain = information_gain(df["形状"].values.astype(int), labels) print('形状属性的经验条件熵:', cond_ent) print('形状属性的信息增益:', info_gain)
时间: 2023-08-20 13:26:46 浏览: 28
这段代码是一个决策树算法的示例代码,用于计算训练样本的经验熵、属性的经验条件熵和信息增益。其中,数据集包含了一些特征(形状、颜色、大小、土壤、水分、日照)和一个目标变量(发芽),目标是根据这些特征预测目标变量的取值。这里使用了经验熵、经验条件熵和信息增益等概念,来评估每个特征对目标变量的预测能力。通过计算不同特征的信息增益,可以确定哪些特征对目标变量影响最大,从而选择最优的特征作为决策树的根节点。这个示例代码中,选择了“形状”作为根节点,计算了其对应的经验条件熵和信息增益。
相关问题
import pandas as pd data = pd.DataFrame(columns = ['会员','A','B'])
这是一个创建空的 Pandas DataFrame 的代码,其中包括三列属性。列名分别为“会员”、“A”和“B”。这里使用了 `columns` 参数来指定 DataFrame 的列名。
您可以使用以下代码来打印数据框的内容:
```
import pandas as pd
data = pd.DataFrame(columns = ['会员','A','B'])
print(data)
```
输出结果为:
```
Empty DataFrame
Columns: [会员, A, B]
Index: []
```
这个 DataFrame 没有任何数据,因为我们没有提供任何行数据。您可以通过使用 Pandas 提供的一系列方法来添加、删除和操作数据来修改这个 DataFrame。
import pandas as pd data = pd.read_csv('adult.data', header=None)
这段代码是使用Python中的pandas库读取名为'adult.data'的CSV文件,并将其存储到名为'data'的DataFrame对象中。其中,header=None表示该CSV文件没有标题行,因此pandas会将第一行数据也作为数据行读取。
在读取CSV文件后,可以使用pandas中的各种函数对数据进行预处理、清洗、分析等操作。例如,可以使用head()函数查看前几行数据:
```
print(data.head())
```
也可以使用describe()函数查看数据的统计信息:
```
print(data.describe())
```
需要注意的是,读取CSV文件前需要确保该文件路径正确,且该CSV文件与当前代码文件在同一目录下。