数据挖掘任务3:决策树分类

Posted zstar-_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘任务3:决策树分类相关的知识,希望对你有一定的参考价值。

要求

要求:天气因素有温度、湿度和刮风等,通过给出数据,使用决策树算法学习分类,输出一个人是运动和不运动与天气之间的规则树。

训练集和测试集可以自由定义,另外需要对温度和湿度进行概化,将数值变为概括性表述,比如温度热,温,凉爽,湿度变为高,中。

from sklearn import tree
from sklearn.model_selection import train_test_split
import pandas as pd
import graphviz
import numpy as np

数据预处理

数据读取

df = pd.read_excel('data.xlsx', index_col=None)
df
天气温度湿度风况运动
08585不适合
18090不适合
2多云8378适合
3有雨7096适合
4有雨6880适合
5有雨6570不适合
6多云6465适合
77295不适合
86970适合
9有雨7580适合
107570适合
11多云7290适合
12多云8175适合
13有雨7180不适合

文字指标量化

为了后续决策树的计算,需要把文字指标进行量化,下面进行转换:

天气——晴-0,多元-1,有雨-2

风况——无-0,有-1

运动——不适合-0,适合-1

df['天气'] = df['天气'].replace("晴", 0)
df['天气'] = df['天气'].replace("多云", 1)
df['天气'] = df['天气'].replace("有雨", 2)
df['风况'] = df['风况'].replace("无", 0)
df['风况'] = df['风况'].replace("有", 1)
df['运动'] = df['运动'].replace("不适合", 0)
df['运动'] = df['运动'].replace("适合", 1)

温湿度概化

题目要求,将温湿度数值变为概括性表述。这里将温湿度进行概述并转化为数值,具体规则如下:

温度:<70-凉爽-0,70~80-温-1,>80-热-2

湿度:>80-高-1,<=80-中-0

df['温度'] = np.where(df['温度'] < 70, 0, df['温度'])
df['温度'] = np.where((df['温度'] < 80) & (df['温度'] >= 70), 1, df['温度'])
df['温度'] = np.where(df['温度'] >= 80, 2, df['温度'])
df['湿度'] = np.where(df['湿度'] > 80, 1, 0)

转换后的数据如下表所示:

df
天气温度湿度风况运动
002100
102110
212001
321101
420001
520010
610011
701100
800001
921001
1001011
1111111
1212001
1321010

数据集划分

根据7/3的比例划分训练集和测试集

data = df[['天气', '温度', '湿度', '风况']]
target = df['运动']
data = np.array(data)
target = np.array(target)
Xtrain, Xtest, Ytrain, Ytest = train_test_split(data, target, test_size=0.3)

决策树构建

这里决策树的标准选择基尼指数,最终得到分类准确率为60%

clf = tree.DecisionTreeClassifier(criterion="gini")
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest)
print(score)
0.6

可视化结果

feature_name = ['天气', '温度', '湿度', '风况']
dot_data = tree.export_graphviz(clf, feature_names=feature_name, class_names=["不适合", "适合"], filled=True, rounded=True
                                )
graph = graphviz.Source(dot_data.replace(
    'helvetica', '"Microsoft YaHei"'), encoding='utf-8')
graph.view()

以上是关于数据挖掘任务3:决策树分类的主要内容,如果未能解决你的问题,请参考以下文章

第三章 决策树

数据挖掘导论 第4章 分类:基本概念决策树与模型评估

EduCoder 机器学习 决策树

机器学习算法学习02:决策树的学习以及应用决策树解决Cora数据集论文分类问题

分类:基本概念、决策树与模型评估

ML之监督学习算法之分类算法一 ———— 决策树算法