栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【数据挖掘】任务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
天气温度湿度风况运动
0晴8585无不适合
1晴8090有不适合
2多云8378无适合
3有雨7096无适合
4有雨6880无适合
5有雨6570有不适合
6多云6465有适合
7晴7295无不适合
8晴6970无适合
9有雨7580无适合
10晴7570有适合
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()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001921.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号