西瓜数据集分类:基于决策树的 Python 代码实现

本文介绍如何使用 Python 的决策树算法对西瓜数据集进行分类。通过代码示例,展示如何将数据预处理、训练模型和进行预测。

数据集

features = ['色泽', '根蒂', '敲声', '纹理', '脐部', '触感']
dataset = [
    ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
    ['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
    ['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '是'],
    ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '是'],
    ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', '是'],
    ['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', '否'],
    ['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '否'],
    ['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', '否'],
    ['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', '否'],
    ['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '否'],
    ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '否'],
    ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '否'],
    ['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '否'],
    ['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', '否']
]

代码实现

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import LabelEncoder

# 创建特征标签和数据集
features = ['色泽', '根蒂', '敲声', '纹理', '脐部', '触感']
dataset = [
    ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
    ['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],
    ['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],
    ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '是'],
    ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '是'],
    ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', '是'],
    ['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', '否'],
    ['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '否'],
    ['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', '否'],
    ['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', '否'],
    ['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '否'],
    ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '否'],
    ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '否'],
    ['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '否'],
    ['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', '否']
]

# 将数据集转换为DataFrame格式
df = pd.DataFrame(dataset, columns=features+['好瓜'])

# 将特征值编码为数值
le = LabelEncoder()
for feature in features:
    df[feature] = le.fit_transform(df[feature])

# 创建决策树分类器并进行训练
clf = DecisionTreeClassifier()
X = df[features]
y = df['好瓜']
clf.fit(X, y)

# 进行预测
test_data = [
    ['浅白', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑'],
    ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘']
]
test_df = pd.DataFrame(test_data, columns=features)
for feature in features:
    test_df[feature] = le.transform(test_df[feature])

predictions = clf.predict(test_df)

# 输出预测结果
for data, prediction in zip(test_data, predictions):
    print(data, '预测结果:', '好瓜' if prediction == 1 else '坏瓜')

运行结果

['浅白', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑'] 预测结果: 坏瓜
['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘'] 预测结果: 好瓜

总结

本文通过代码示例展示了如何使用 Python 的决策树算法对西瓜数据集进行分类。代码涵盖了数据预处理、训练模型和进行预测等步骤。通过该示例,可以了解决策树算法的基本应用,并为进一步的机器学习研究提供参考。

西瓜数据集分类:基于决策树的 Python 代码实现

原文地址: https://www.cveoy.top/t/topic/pcT2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录